// File functions

function Rx_Get_Filename (path)
{
	return path.substr(Math.max (path.lastIndexOf("/"), path.lastIndexOf("\\")) + 1);
}

function Rx_Get_Filename_ext (path)
{
	return path.substr(path.lastIndexOf(".") + 1);
}


function Rx_Get_Filename_wo_ext (path)
{
	ws1 = Rx_Get_Filename (path);
	return ws1.substr(0, ws1.lastIndexOf("."));
}

// Handler functions

function Rx_MoveHandler(e)
{
  document.Rx_mouse_X = e.pageX;
  document.Rx_mouse_Y = e.pageY;
  for (i = 0; i < document.dragID.length; i++) Rx_Drag_Layer (document.dragID[i]);
	return true;
}

function Rx_MoveHandlerIE()
{
  document.Rx_mouse_X = window.event.x + document.body.scrollLeft;
  document.Rx_mouse_Y = window.event.y + document.body.scrollTop;
  for (i = 0; i < document.dragID.length; i++) Rx_Drag_Layer (document.dragID[i]);
}


// Image functions

function Rx_changesizeto_img (name, windowname, new_width, new_height)
{ 
  var img = eval((navigator.appName.indexOf('Netscape', 0) != -1) ? 'document.'+name : 'document.all.'+name);
  if (name == '')
    return;
  if (img) {
    if (window.name.substr(0, windowname.length) == windowname) {
      img.width  = new_width;
      img.height = new_height;
    } 
  } 
}


// Layer functions

function Rx_Show_Layer (lname)
{
  if (lname == '') return;
 
  var layer  = document.all ? document.all(lname).style : document.layers[lname];
  var show  = document.all ? 'visible' : 'show';
  var hide  = document.all ? 'hidden' : 'hide';
 
  if (Rx_Show_Layer.arguments.length <= 1)
    layer.visibility = show;
  else
    layer.visibility = (Rx_Show_Layer.arguments[1] == 0 ? show : hide);
}

function Rx_Hide_Layer (lname)
{
  if (document.layers)
    document.layers[lname].visibility = 'hide'    
  if(document.all)
    document.all(lname).style.visibility = 'hidden' 
}

function Rx_init_float_layers()
{
  var name;
  var layer;
  var i;
  var j;

  j = 0;
  document._float_layers = new Array(Math.max(1, Rx_init_float_layers.arguments.length/2));
  for (i = 0; i < Rx_init_float_layers.arguments.length; i += 2) {
    name  = Rx_init_float_layers.arguments[i];
    if (name == '')
      return;
    if (navigator.appName.indexOf('Netscape', 0) != -1) {
      layer = document.layers[name];
      layer._fl_pos_left = layer.left - window.pageXOffset;
      layer._fl_pos_top  = layer.top  - window.pageYOffset;
    } else {
      layer = document.all[name];
      layer._fl_pos_left = layer.style.pixelLeft - document.body.scrollLeft;
      layer._fl_pos_top  = layer.style.pixelTop  - document.body.scrollTop;
    }
    layer._fl_pos = Rx_init_float_layers.arguments[i+1];
    if (layer)
      document._float_layers[j++] = layer;
  }

  document._fl_interval = setInterval('Rx_process_float_layers()', 20);
}

function Rx_set_float_layer_init_pos (lname, pos_left, pos_top)
{
  if (navigator.appName.indexOf('Netscape', 0) != -1) {
    layer = document.layers[lname];
    layer._fl_pos_left = pos_left;
    layer._fl_pos_top  = pos_top;
  } else {
    layer = document.all[lname];
    layer._fl_pos_left = pos_left;
    layer._fl_pos_top  = pos_top;
  }
}

function 	Rx_force_layer_on_screen (layer)
{
  if (navigator.appName.indexOf('Netscape', 0) != -1) {
	  if (layer.left < window.pageXOffset) layer.left = window.pageXOffset;
	  if (layer.left > window.pageXOffset + Rx_page_width() - layer.clip.width) 
  		layer.left = window.pageXOffset + Rx_page_width() - layer.clip.width;
	  if (layer.top  < window.pageYOffset) layer.top  = window.pageYOffset;
	  if (layer.top  > window.pageYOffset + Rx_page_height() - layer.clip.height) 
  		layer.left = window.pageYOffset + Rx_page_height() - layer.clip.height;
    layer._fl_pos_left = layer.left - window.pageXOffset;
    layer._fl_pos_top  = layer.top  - window.pageYOffset;
	} else {
	  if (layer.style.pixelLeft < document.body.scrollLeft)
		  layer.style.pixelLeft = document.body.scrollLeft;
	  if (layer.style.pixelLeft > document.body.scrollLeft + Rx_page_width() - layer.style.pixelWidth) 
  		layer.style.pixelLeft = document.body.scrollLeft + Rx_page_width() - layer.style.pixelWidth;
	  if (layer.style.pixelTop  < document.body.scrollTop)
		  layer.style.pixelTop  = document.body.scrollTop;
	  if (layer.style.pixelTop  > document.body.scrollTop + Rx_page_height() - layer.style.pixelHeight) 
  		layer.style.pixelTop = document.body.scrollTop + Rx_page_height() - layer.style.pixelHeight;
    layer._fl_pos_left = layer.style.pixelLeft - document.body.scrollLeft;
    layer._fl_pos_top  = layer.style.pixelTop  - document.body.scrollTop;
  }
}

function Rx_page_width()
{
return (navigator.appName.indexOf('Netscape', 0)!=-1) ? innerWidth  : document.body.clientWidth;
}

function Rx_page_height()
{
return (navigator.appName.indexOf('Netscape',0)!=-1) ? innerHeight : document.body.clientHeight;
}

function Rx_process_float_layers()
{
  if (document._float_layers) {
      var i;
      var layer;
      for (i = 0; i < document._float_layers.length; i++) {
	  layer = document._float_layers[i];
	  if (navigator.appName.indexOf('Netscape', 0) != -1) {
	    if (layer._fl_pos == 1)
	      layer.left = layer._fl_pos_left + window.pageXOffset;
	    else if (layer._fl_pos == 2 || layer._fl_pos == 5) 
	      layer.left = window.pageXOffset;
	    else if (layer._fl_pos == 3 || layer._fl_pos == 6) 
	      layer.left = window.pageXOffset + (Rx_page_width() - layer.clip.width)/2;
	    else
	      layer.left = window.pageXOffset + Rx_page_width() - layer.clip.width - 16;
	    if (layer._fl_pos == 1)
	      layer.top = layer._fl_pos_top + window.pageYOffset;
	    else if (layer._fl_pos == 2 || layer._fl_pos == 3 || layer._fl_pos == 4)
	      layer.top = window.pageYOffset;
	    else
	      layer.top  = window.pageYOffset + Rx_page_height() - layer.clip.height;
	  } else {
	    if (layer._fl_pos == 1)
	      layer.style.pixelLeft = layer._fl_pos_left + document.body.scrollLeft;
	    else if (layer._fl_pos == 2 || layer._fl_pos == 5)
	      layer.style.pixelLeft = document.body.scrollLeft;
	    else if (layer._fl_pos == 3 || layer._fl_pos == 6)
	      layer.style.pixelLeft = document.body.scrollLeft + (Rx_page_width() - layer.style.pixelWidth)/2;
	    else
	      layer.style.pixelLeft = document.body.scrollLeft + Rx_page_width()  - layer.style.pixelWidth;
	    if (layer._fl_pos == 1)
	      layer.style.pixelTop = layer._fl_pos_top + document.body.scrollTop;
	    else if (layer._fl_pos == 2 || layer._fl_pos == 3 || layer._fl_pos == 4)
	      layer.style.pixelTop = document.body.scrollTop;
	    else
	      layer.style.pixelTop  = document.body.scrollTop  + Rx_page_height() - layer.style.pixelHeight;
         }
      }
	Rx_force_layer_on_screen (layer);
  }
}


function Rx_slide_layers(lname, startX, startY, endX, endY, speed, stpx) {
if (! document.count) {
    document.wx = new Array();
    document.wy = new Array();
    document.ex = new Array();
    document.ey = new Array();
    document.spd = new Array();
    document.step = new Array();
    document.stepX = new Array();
    document.stepY = new Array();
    document.mvFlag = new Array();
    document.slideID = new Array();
    document.count = new Array();
   }
    
  if (!document.mvFlag[lname]) {
    clearTimeout(document.slideID[lname]);
    document.count[lname] = 0;           
    var ofX = (endX - startX); 
    var ofY = (endY - startY);    
    document.step[lname] = Math.max(Math.abs(ofX), Math.abs(ofY))/stpx ;
    document.stepX[lname] = ofX/document.step[lname];  
    document.stepY[lname] = ofY/document.step[lname];  
    document.wx[lname] = startX;  
    document.wy[lname] = startY;        
    document.ex[lname] = endX;           
    document.ey[lname] = endY;           
    document.spd[lname] = speed;
    document.mvFlag[lname] = true;
    }
  if (document.mvFlag[lname] && (document.count[lname] <= document.step[lname]-1)){
     document.count[lname]++
     document.wx[lname] += document.stepX[lname];
     document.wy[lname] += document.stepY[lname];
     clearTimeout(document.slideID[lname]);
     document.slideID[lname] =  setTimeout('Rx_slide_layers("'+lname+'")', document.spd[lname]);
   }
  else {
    
    document.wx[lname] = document.ex[lname];
    document.wy[lname] = document.ey[lname];
    clearTimeout(document.slideID[lname]);
    document.mvFlag[lname] = false;
  }
    
  if (document.layers) {
	  layer = document.layers[lname];
		layer.moveTo(document.wx[lname],document.wy[lname]);
	}
  if (document.all) {
    layer = document.all(lname);
		layer.style.posLeft = document.wx[lname];
    layer.style.posTop  = document.wy[lname];
	}
	Rx_Show_Layer (lname);
  Rx_set_float_layer_init_pos (lname, document.wx[lname], document.wy[lname]);
}

function Rx_slide_layers_from_outside (lname, endX, endY, speed, stpx)
{
  var ns = navigator.appName == "Netscape";
  if (ns) {
    layer = document.layers[name];
    if (endX == "left") {
	    wstartX = window.pageXOffset;
	    wendX   = wstartX;
		}
    if (endX == "right") {
	    wstartX = window.pageXOffset + Rx_page_width() - layer.clip.width;
	    wendX   = wstartX;
		}
    if (endY == "top") {
	    wstartY = window.pageYOffset - layer.clip.height;
	    wendY   = window.pageYOffset;			
		}
    if (endY == "bottom") {
	    wstartY = window.pageYOffset + Rx_page_height();
	    wendY   = window.pageYOffset + Rx_page_height() - layer.clip.height;
		}
  } else {
    layer = document.all[lname];
    if (endX == "left") {
	    wstartX = document.body.scrollLeft;
	    wendX   = wstartX;
		}
    if (endX == "right") {
	    wstartX = document.body.scrollLeft + Rx_page_width() - layer.style.pixelWidth;
	    wendX   = wstartX;
		}
    if (endY == "top") {
	    wstartY = document.body.scrollTop - layer.style.pixelHeight;
	    wendY   = document.body.scrollTop;			
		}
    if (endY == "bottom") {
	    wstartY = document.body.scrollTop + Rx_page_height();
	    wendY   = document.body.scrollTop + Rx_page_height() - layer.style.pixelHeight;
		}
	}
  Rx_slide_layers(lname, wstartX, wstartY, wendX, wendY, speed, stpx);
}

function Rx_Init_Drag_Layer (lname)
{
  if (! document.dragID) document.dragID = new Array();
  if (navigator.appName=="Netscape") {
    document.captureEvents(Event.MOUSEMOVE);
    document.onMouseMove = Rx_MoveHandler;
    document.Rx_mouse_X_start = e.pageX;
    document.Rx_mouse_Y_start = e.pageY;
  } else {
    document.onmousemove = Rx_MoveHandlerIE;
    document.Rx_mouse_X_start = window.event.x + document.body.scrollLeft;
    document.Rx_mouse_Y_start = window.event.y + document.body.scrollTop;
  }
  document.dragID.push (lname);
}

function Rx_Drag_Layer (lname)
{
  var deltaX = document.Rx_mouse_X - document.Rx_mouse_X_start;
  var deltaY = document.Rx_mouse_Y - document.Rx_mouse_Y_start;
	document.Rx_mouse_X_start = document.Rx_mouse_X;
	document.Rx_mouse_Y_start = document.Rx_mouse_Y;
	Rx_Move_Layer_Rel_OnScreen (lname, deltaX, deltaY);
}

function Rx_Move_Layer_Rel_OnScreen (lname, deltaX, deltaY)
{
  if (navigator.appName.indexOf('Netscape', 0) != -1) {
    layer = document.layers[lname];
    layer.left = Math.min (Math.max (layer.left + deltaX, window.pageXOffset),
          			 window.pageXOffset + Rx_page_width()  - layer.clip.width );
    layer.top  = Math.min (Math.max (layer.top  + deltaY, window.pageYOffset),
           			 window.pageYOffset + Rx_page_height() - layer.clip.height);
    layer._fl_pos_left = layer.left - window.pageXOffset;
    layer._fl_pos_top  = layer.top  - window.pageYOffset;
  } else {
    layer = document.all[lname];
    layer.style.pixelLeft = Math.min (Math.max (layer.style.pixelLeft + deltaX,
		      document.body.scrollLeft), 
					document.body.scrollLeft + Rx_page_width() - layer.style.pixelWidth );
    layer.style.pixelTop  = Math.min (Math.max (layer.style.pixelTop  + deltaY,
		      document.body.scrollTop), 
					document.body.scrollTop  + Rx_page_width() - layer.style.pixelHeight);
    layer._fl_pos_left = layer.style.pixelLeft - document.body.scrollLeft;
    layer._fl_pos_top  = layer.style.pixelTop  - document.body.scrollTop;
  }
}

function Rx_Stop_Drag_Layer (lname)
{
  if (document.dragID)
    for (i = 0; i < document.dragID.length; i++)
   	  if (document.dragID[i] == lname) document.dragID.splice(i,1);
}

// Windows Media Player Functions --

function Rx_WM_Play (WMPlayerID, WMFilename)
{
  if (WMPlayerID == null || document.all[WMPlayerID] == null) return;
  if (document.all[WMPlayerID].PlayState == 0 || 
	    !(Rx_Get_Filename (document.all[WMPlayerID].Filename) == Rx_Get_Filename (WMFilename))) {
  	WMInit (WMPlayerID, WMFilename);
		WMPlay (WMPlayerID);
		Rx_slide_layers_from_outside('layerWMP', 'left', 'bottom', 10, 1);
	} else Rx_Show_Layer ('layerWMP');
}

function Rx_WM_Play_Random (WMPlayerID, WMFilenames, Position)
{
  if (WMPlayerID == null || document.all[WMPlayerID] == null) return;
     var WMFnames = WMFilenames.split(',');
     var Pos = Position.split(',');
     var index = Math.floor (Math.random() * WMFnames.length);
     var WMFname = '../zt/' + WMFnames[index] + '.wma';
  if (document.all[WMPlayerID].PlayState == 0 || 
	    !(Rx_Get_Filename (document.all[WMPlayerID].Filename) == Rx_Get_Filename (WMFname))) {
  	WMInit (WMPlayerID, WMFname);
		WMPlay (WMPlayerID);
		Rx_slide_layers_from_outside('layerWMP', Pos[0], Pos[1], 10, 1);
	} else Rx_Show_Layer ('layerWMP');
}

function WMInit (WMPlayerID, WMFilename)
{
  if (WMPlayerID == null || document.all[WMPlayerID] == null) return;
    document.all[WMPlayerID].Filename = WMFilename;
    document.all[WMPlayerID].Stop();
}

function WMPlay (WMPlayerID)
{
  if (WMPlayerID == null || document.all[WMPlayerID] == null) return;
  document.all[WMPlayerID].play()
}

function WMStop (WMPlayerID)
{
  if (WMPlayerID == null || document.all[WMPlayerID] == null) return;
  if (document.all[WMPlayerID].PlayState == 0) return;
  document.all[WMPlayerID].stop();
  document.all[WMPlayerID].CurrentPosition = 0;  
}

function WMPause (WMPlayerID)
{
  if (WMPlayerID == null || document.all[WMPlayerID] == null)
    return;
  if (document.all[WMPlayerID].PlayState == 2) 
    document.all[WMPlayerID].pause();
   else if (document.all[WMPlayerID].PlayState == 1)
    document.all[WMPlayerID].play();  
}

function WMRefreshDisplay (WMPlayerID)
{
  var x, img_Play, img_Pause, img_Stop;
  if (WMPlayerID == null || document.all[WMPlayerID] == null) WMPlayerID='WMP1';
  if (WMPlayerID == null || document.all[WMPlayerID] == null) return;
  x = document.all[WMPlayerID];
  document.WMForm.CurPos.value = parseInt(100*x.CurrentPosition/x.Duration) + " %";

  if (navigator.appName == "Netscape") {
    img_Play  = eval('document.'+WMPlayerID+'_Play');
    img_Pause = eval('document.'+WMPlayerID+'_Pause');
    img_Stop  = eval('document.'+WMPlayerID+'_Stop');
  }
  else {
    img_Play  = eval('document.all.'+WMPlayerID+'_Play');
    img_Pause = eval('document.all.'+WMPlayerID+'_Pause');
    img_Stop  = eval('document.all.'+WMPlayerID+'_Stop');
  }
  if (document.all[WMPlayerID].PlayState == 0) {
    if (img_Play.src.indexOf('_da') >= 0)
        img_Play.src = img_Play.src.replace(/_da.gif/, '.gif');
    if (img_Pause.src.indexOf('_hi') >= 0)
			  img_Pause.src = img_Pause.src.replace(/_hi.gif/, '.gif');
    if (img_Pause.src.indexOf('_da') < 0)
			  img_Pause.src = img_Pause.src.replace(/.gif/, '_da.gif');
    if (img_Stop.src.indexOf('_da') < 0)
		    img_Stop.src = img_Stop.src.replace(/.gif/, '_da.gif');
  }
  if (document.all[WMPlayerID].PlayState == 1) {
    if (img_Play.src.indexOf('_da') >= 0)
        img_Play.src = img_Play.src.replace(/_da.gif/, '.gif');
    if (img_Pause.src.indexOf('_hi') < 0)
			  img_Pause.src = img_Pause.src.replace(/.gif/, '_hi.gif');
    if (img_Stop.src.indexOf('_da') < 0)
		    img_Stop.src = img_Stop.src.replace(/_da.gif/, '.gif');
  }
  if (document.all[WMPlayerID].PlayState == 2) {
    if (img_Play.src.indexOf('_da') < 0)
        img_Play.src = img_Play.src.replace(/.gif/, '_da.gif');
    if (img_Pause.src.indexOf('_da') >= 0)
			  img_Pause.src = img_Pause.src.replace(/_da.gif/, '.gif');
    if (img_Pause.src.indexOf('_hi') >= 0)
			  img_Pause.src = img_Pause.src.replace(/_hi.gif/, '.gif');
    if (img_Stop.src.indexOf('_da') >= 0)
		    img_Stop.src = img_Stop.src.replace(/_da.gif/, '.gif');
  }
}


// Timeline functions

function Rx_Time_Play(name)
{
  var tm, bar, layer, prop_tbl, prop_name, prop_value, n_bar, n_prop;
  var frame, nkeyfrm, startfrm, endfrm, f, kf, i, j;
  var ns = navigator.appName == "Netscape";

  if (document.Rx_Time == null) Rx_Time_Init();
  if ((tm = document.Rx_Time[name]) == null) return;
  if (tm.pause) return;

  frame = ++tm.curframe;
  if (frame > tm.lastframe) {
    tm.curframe = 0;
    if (!tm.loop) return;
    frame = ++tm.curframe;
  }

  n_bar = tm.length;
  for (i=0; i < n_bar; i++) {
    bar = tm[i];
    if (bar == null) continue;

    nkeyfrm  = bar.keyframes.length;
    startfrm = bar.keyframes[0];
    endfrm   = bar.keyframes[nkeyfrm-1];
    if (frame < startfrm || frame > endfrm) continue;
    f        = frame - startfrm;
    for (kf=j=0; j < bar.keyframes.length && bar.keyframes[j] <= frame; kf = j++) ;

    if (bar.props == null) continue;
    n_prop    = bar.props.length;

    layer = bar.layer;
    if (layer == null) continue;

    for (j=0; j < n_prop; j++) {
      prop_tbl   = bar.props[j];
      prop_name  = prop_tbl.prop;

      prop_value = prop_tbl[(bar.keyframes.length < prop_tbl.length) ? f : kf];
      if (ns) layer[prop_name] = prop_value;
      else    layer.style[prop_name] = prop_value;
    }
  }

  if (tm.actions) {
    for (i=0; i < tm.actions[1].length && tm.actions[0][i] <= frame; i++)
      if (tm.actions[0][i] == frame) eval(tm.actions[1][i]);
  }

  setTimeout('Rx_Time_Play("' + name + '")', tm.delay);
}

function Rx_Time_Init()
{
    var tm, bar, handlers;
    var ns = navigator.appName == "Netscape";

    document.Rx_Time = new Array(1);
    document.Rx_Time[0] = new Array(1);
    tm = document.Rx_Time[0];
    document.Rx_Time["timeline1"] = tm;
    tm.name = "timeline1";
    tm.fps = 5;

    tm.actions = new Array(2);
    tm.actions[0] = new Array(1, -1);
    tm.actions[1] = new Array(1);
    handlers = tm.actions[1];
    handlers[0] =  "na_call('WMRefreshDisplay()');";

    document.Rx_Time[0][0] = new String("data");
    bar = document.Rx_Time[0][0];
    bar.track = 1;
    if (ns)
        bar.layer = document["layer1"];
    else
        bar.layer = document.all ? document.all["layer1"] : null;
    bar.keyframes = new Array(1, 2);
    bar.props = new Array(6);
    bar.props[0] = new Array(12,12);
    bar.props[0].prop = "left";
    bar.props[1] = new Array(26,26);
    bar.props[1].prop = "top";
    bar.props[2] = new Array(1,100);
    bar.props[2].prop = "width";
    bar.props[3] = new Array(26,260);
    bar.props[3].prop = "height";
    bar.props[4] = new Array(1,1);
    bar.props[4].prop = "zIndex";
    bar.props[5] = new Array("inherit","inherit");
    bar.props[5].prop = "visibility";
    tm.lastframe = 2;
    tm.curframe = 0;
    tm.delay = 1000 / tm.fps;
    tm.loop = true;
}


// Window handling functions

function Rx_open_window (name, url, left, top, width, height, toolbar, menubar, statusbar, scrollbar, resizable)
{
  toolbar_str = toolbar ? 'yes' : 'no';
  menubar_str = menubar ? 'yes' : 'no';
  statusbar_str = statusbar ? 'yes' : 'no';
  scrollbar_str = scrollbar ? 'yes' : 'no';
  resizable_str = resizable ? 'yes' : 'no';
  mod_width  = Math.min (width,  screen.width-left-20);
  mod_height = Math.min (height, screen.height-top-60-(toolbar?40:0)-(menubar?50:0)-(statusbar?20:0));
  Rx_window = window.open(url, name, 'left='+left+',top='+top+',width='+mod_width+',height='+mod_height+',toolbar='+toolbar_str+',menubar='+menubar_str+',status='+statusbar_str+',scrollbars='+scrollbar_str+',resizable='+resizable_str);
  Rx_window.focus();
}

function Rx_open_zt_desc_window (name, WMPlayerID, left, top, width, height, toolbar, menubar, statusbar, scrollbar, resizable)
{
  toolbar_str = toolbar ? 'yes' : 'no';
  menubar_str = menubar ? 'yes' : 'no';
  statusbar_str = statusbar ? 'yes' : 'no';
  scrollbar_str = scrollbar ? 'yes' : 'no';
  resizable_str = resizable ? 'yes' : 'no';
  if (Rx_Get_Filename_ext (document.all[WMPlayerID].Filename) == 'wma') {
    url = '../zt/'+Rx_Get_Filename_wo_ext (document.all[WMPlayerID].Filename)+'.html#description';
    Rx_window = window.open(url, name, 'left='+left+',top='+top+',width='+width+',height='+height+',toolbar='+toolbar_str+',menubar='+menubar_str+',status='+statusbar_str+',scrollbars='+scrollbar_str+',resizable='+resizable_str);
    Rx_window.focus();
  }
}
