home *** CD-ROM | disk | FTP | other *** search
/ Kompuutteri Kaikille K-CD 2001 #9 / K-CD_2001-09.iso / Desperados / Web / ns_md8lib.js < prev    next >
Text File  |  2001-02-13  |  9KB  |  378 lines

  1. /******************************************************************************
  2. * File: ns_md8lib.js                                                          *
  3. *                                                                             *
  4. * Copyright MatchWare A/S                                                     *
  5. * Author: Jens ╪. Nielsen                                                     *
  6. ******************************************************************************/
  7.  
  8. var canplaysound = false;
  9. var usecursor    = false;
  10.  
  11. function BrowserInit() {
  12.  
  13.  if ( ! IsNetscape()) return;
  14.  
  15.  window.captureEvents( Event.MOUSEDOWN | Event.MOUSEUP| Event.MOUSEMOVE);
  16.  window.onmousedown   = MouseDown;
  17.  window.onmouseup     = MouseUp;
  18.  window.onmousemove   = MouseMove;
  19. // Sound check
  20.  if (navigator.javaEnabled()) {
  21.    if (navigator.mimeTypes['audio/midi'] != null) {
  22.      if (navigator.mimeTypes['audio/midi'].enabledPlugin != null) 
  23.        canplaysound = true;
  24.    }        
  25.  }
  26. }
  27.  
  28. //--------------------------------------------------------------
  29.  
  30. function GetObjLeft( obj) {
  31.  
  32.   return obj.left;
  33. }
  34.  
  35. function GetObjTop( obj) {
  36.   return obj.top;
  37. }
  38.  
  39. function GetObjWidth( obj) {
  40.  
  41.  if ( obj.document.width)
  42.    return obj.document.width;
  43.  else
  44.    return obj.clip.right - obj.clip.left;
  45. }
  46.  
  47. function GetObjHeight( obj) {
  48.  if ( obj.document.height)
  49.    return obj.document.height;
  50.  else
  51.    return obj.clip.bottom - obj.clip.top;
  52. }
  53.  
  54. function SetObjPosition( obj,left,top) {
  55.  obj.left = left;
  56.  obj.top  = top;
  57. }
  58.  
  59. function IsObjVisible( obj) {
  60.  return obj.visibility == "show";
  61. }
  62.  
  63. function ShowObject( obj,visible) {
  64.  obj.visibility = visible ? "show" : "hide";
  65. }
  66.  
  67. //------------------------------------
  68.  
  69. var PAGE_ACTION_POST_FIX = "_ns.htm";
  70.  
  71. //------------------------------------
  72.  
  73. var specialobj = null;
  74. var scrolldy  = 0;
  75.  
  76. //--------------------------------------------------------------
  77.  
  78. function MouseDown( e) {
  79.  
  80.  var layer = FindLayerByPos( e.pageX,e.pageY,document);
  81.  if ( layer != null) {
  82.    clickobj = layer;
  83.    eval( layer.name + "_MouseDown( e,layer);");
  84.    return false;
  85.  }
  86.  return true;
  87. }
  88.  
  89. //--------------------------------------------------------------
  90.  
  91. function MouseUp( e) {
  92.  
  93.  var layer = FindLayerByPos( e.pageX,e.pageY,document);
  94.  if ( layer != null) {
  95.    eval( layer.name + "_MouseUp( e,layer);");
  96.    if ( layer == clickobj) {
  97.      eval( layer.name + "_MouseClick( e,layer); ");
  98.    }
  99.    clickobj  = null;
  100.    return false;
  101.  }
  102.  return true;
  103. }
  104.  
  105. //--------------------------------------------------------------
  106.  
  107. function MouseMove( e) {
  108.  
  109.  var layer = FindLayerByPos( e.pageX,e.pageY,document);
  110.  if ( layer != insideobj) {
  111.    if ( insideobj != null) 
  112.      eval( insideobj.name + "_MoveOut( e,layer); ");
  113.    insideobj = layer;
  114.    if ( insideobj != null) 
  115.      eval( insideobj.name + "_MoveIn( e,layer); ");
  116.    return usecursor;
  117.  }
  118.  if ( layer != null)
  119.    return usecursor;
  120.  return true;
  121. }
  122.  
  123.  
  124. //-----------------------------------------------------------------------------
  125.  
  126. function FindLayerByPos( x,y,doc) {
  127.  
  128.  var l = doc.layers.length;
  129.  var layer = null;
  130.  for ( var i = 0; i < l; i++) {
  131.    if ( x >= doc.layers[ i].pageX && x <= doc.layers[ i].pageX + doc.layers[ i].clip.width &&
  132.         y >= doc.layers[ i].pageY && y <= doc.layers[ i].pageY + doc.layers[ i].clip.height) {
  133.      var _layer = doc.layers[ i];
  134.      if ( _layer.document.layers.length > 0) {
  135.        var innerlayer = FindLayerByPos( x,y,_layer.document);
  136.        if ( innerlayer != null)
  137.          _layer = innerlayer;
  138.      }
  139.      if ( _layer.name[ 0] != '_') 
  140.        layer = _layer;
  141.    }
  142.  }   
  143.  return layer;
  144. }
  145.  
  146. //-----------------------------------------------------------------------------
  147.  
  148. function findLayerByName(name, doc) {
  149.  
  150.  var l = doc.layers.length;
  151.  var i;
  152.  var layer;
  153.  for ( i = 0; i < l; i++) {
  154.    layer = doc.layers[i];
  155.    if ( layer.name == name)
  156.      return layer;
  157.    if (layer.document.layers.length > 0) {
  158.      layer = findLayerByName( name, layer.document);
  159.      if (layer != null)
  160.        return layer;
  161.    }
  162.  }
  163.  return null;
  164. }
  165.  
  166.  
  167. //-----------------------------------------------------------------------------
  168.  
  169. function ScrollLayerBy( layer, dy) {
  170.  
  171.   if ( layer == null) return;
  172.   var ct = layer.clip.top;
  173.   var cb = layer.clip.bottom;
  174.  
  175.   if (ct + dy < 0) 
  176.     dy = -ct;
  177.   else if (cb + dy > layer.document.height)
  178.     dy = layer.document.height - cb;
  179.  
  180.   layer.clip.top    = ct + dy;
  181.   layer.clip.bottom = cb + dy;
  182.   layer.moveBy( 0, -dy);
  183. }
  184.  
  185. function ScrollLayerTo( layer,y) {
  186.  
  187.  if ( layer == null) return;
  188.  var dy = y - layer.clip.top;
  189.  ScrollLayerBy( layer,dy);
  190. }
  191.  
  192. //-----------------------------------------------------------------------------
  193.  
  194. function Scroll( layer,dy,delay) {
  195.  
  196.  var innerlayer = layer.parentLayer.document.layers[ 0];
  197.  var paperlayer = layer.parentLayer.document.layers[ 2];
  198.  ScrollLayerBy( innerlayer,dy);
  199.  scrolldy  = dy;
  200.  specialobj = layer;
  201.  window.setTimeout( "Scroll_Repeat();",delay);
  202.  
  203.  PositionPaper( paperlayer);
  204. }
  205.  
  206. //-----------------------------------------------------------------------------
  207.  
  208. function Scroll_Repeat() {
  209.  
  210.  if ( specialobj == clickobj && specialobj == insideobj) {
  211.    Scroll( specialobj,scrolldy,100);
  212.    return;
  213.  }
  214.  specialobj = null;
  215. }
  216.  
  217. //-----------------------------------------------------------------------------
  218.  
  219. function StartDragPaper( layer) {
  220.  
  221.  specialobj         = layer;
  222.  window.onmousemove = MouseMoveDragPaper;
  223.  window.onmouseup   = MouseUpDragPaper;
  224. }
  225.  
  226.  
  227. function MouseMoveDragPaper( e) {
  228.  
  229.  var innerlayer   = specialobj.parentLayer.document.layers[ 0];
  230.  var buttonheight = specialobj.clip.height;
  231.  var scrollrange  = innerlayer.document.height - innerlayer.clip.height;
  232.  
  233.  var y = e.pageY - specialobj.parentLayer.top - buttonheight - buttonheight / 2;
  234.  y = y * scrollrange / (innerlayer.clip.height - 3*buttonheight);
  235.  if ( y < 0) y = 0;
  236.  if ( y > scrollrange) y = scrollrange;
  237.  
  238.  ScrollLayerTo( innerlayer,y);
  239.  PositionPaper( specialobj);
  240. }
  241.  
  242.  
  243. function MouseUpDragPaper( e) {
  244.  
  245.  window.onmouseup     = MouseUp;
  246.  window.onmousemove   = MouseMove;
  247.  specialobj = null;
  248. }
  249.  
  250.  
  251. function PositionPaper( paperlayer) {
  252.  
  253.  var innerlayer   = paperlayer.parentLayer.document.layers[ 0];
  254.  var buttonheight = paperlayer.clip.height;
  255.  var p = innerlayer.clip.top * 100 / (innerlayer.document.height - innerlayer.clip.height);
  256.  paperlayer.top = buttonheight + p * (innerlayer.clip.height - 3*buttonheight+1) / 100;
  257. }
  258.  
  259.  
  260. //-----------------------------------------------------------------------------
  261.  
  262. function ScrollBarMouseDown( e,layer) {
  263.  
  264.  var y          = e.pageY - layer.parentLayer.top;
  265.  var innerlayer = layer.parentLayer.document.layers[ 0];
  266.  var paperlayer = layer.parentLayer.document.layers[ 2];
  267.  var buttonheight = paperlayer.clip.height;
  268.  
  269.  if ( y < buttonheight) {
  270.    Scroll( layer,-12,300);
  271.    layer.parentLayer.document.layers[ 3].visibility="hide";
  272.    layer.parentLayer.document.layers[ 4].visibility="show";
  273.    return;
  274.  }
  275.  if ( y > layer.parentLayer.clip.height - buttonheight) {
  276.    Scroll( layer,12,300);
  277.    layer.parentLayer.document.layers[ 5].visibility="hide";
  278.    layer.parentLayer.document.layers[ 6].visibility="show";
  279.    return;
  280.  }
  281.  if ( y < paperlayer.top) {
  282.    Scroll( layer,-50,300);
  283.    return;
  284.  }
  285.  if ( y > paperlayer.top + buttonheight) {
  286.    Scroll( layer,50,300);
  287.    return;
  288.  }
  289.  StartDragPaper( paperlayer);
  290. }
  291.  
  292.  
  293. function ScrollBarMouseUp( e,layer) {
  294.  
  295.  layer.parentLayer.document.layers[ 3].visibility="show";
  296.  layer.parentLayer.document.layers[ 4].visibility="hide";
  297.  layer.parentLayer.document.layers[ 5].visibility="show";
  298.  layer.parentLayer.document.layers[ 6].visibility="hide";
  299. }
  300.  
  301. //------------------------------------
  302.  
  303. function HideAction( obj) {
  304.  
  305.  this.m_Obj = obj;
  306.  this.Start = HideAction_Start;
  307. }
  308.  
  309.  
  310. function HideAction_Start() {
  311.  
  312.  this.m_Obj.visibility = "hide";
  313. }
  314.  
  315. //------------------------------------
  316.  
  317.  
  318. function ShowAction( obj) {
  319.  
  320.  this.m_Obj = obj;
  321.  this.Start = ShowAction_Start;
  322. }
  323.  
  324.  
  325. function ShowAction_Start() {
  326.  
  327.  this.m_Obj.visibility = "show";
  328. }
  329.  
  330. //------------------------------------
  331.  
  332. function SoundAction( sound,repeat,cancelmidi,cancelwave) {
  333.  
  334.  var pos = sound.lastIndexOf( ".");
  335.  var ext = sound.substring( pos).toLowerCase();
  336.  
  337.  this.m_Sound      = sound;
  338.  this.m_Repeat     = repeat;
  339.  this.m_CancelMidi = cancelmidi;
  340.  this.m_CancelWave = cancelwave;
  341.  this.m_Midi       = ext == ".mid";
  342.  
  343.  this.Start = SoundAction_Start;
  344. }
  345.  
  346. function SoundAction_Start() {
  347.  
  348.  if ( window.parent == self || ! canplaysound) return;
  349.  
  350.  if ( this.m_CancelMidi) 
  351.    top.global.document.nsplayer1.stop();
  352.  if ( this.m_CancelWave) 
  353.    top.global.document.nsplayer2.stop();
  354.  
  355.  if ( this.m_Sound == "") return;
  356.  
  357.  var player = this.m_Midi ? top.global.document.nsplayer1 : top.global.document.nsplayer2;
  358.  player.play( this.m_Repeat,this.m_Sound);
  359.  player.setvol( 100);
  360. }
  361.  
  362. //------------------------------------
  363.  
  364. function SetCursorAction( type) {
  365.  
  366.  this.m_Type = type;
  367.  
  368.  this.Start = SetCursorAction_Start;
  369. }
  370.  
  371.  
  372. function SetCursorAction_Start() {
  373.  
  374. // usecursor = this.m_Type == "hand";
  375. }
  376.  
  377. //------------------------------------
  378.