// trvelcro.js

var trvwcdom;
var trvntscpe4;
var trvie4;
var trvbgimg;
var letters;
var vl;
var wdth=0, hght=0, ll=0, tt=0;
var lw, lh;
var x, y;
var evt, held;
var trvbgimgi;
var offx=0;
var offy=0;

// mousedown
document.onmousedown = function(e) {
  if (trvwcdom) {
    evt = (e) ? e : ((window.event) ? window.event : "")
    if (evt) {
      if (evt.target) { 
        held = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target 
      }
      else {
        held = evt.srcElement 
      } 
    }
  }
  else {
    if (trvntscpe4) {
      u = e.pageX;
      v = e.pageY;
      for(i=letters-1; i>=0; i--){
        t = document.layers[i];
        if((u>t.left)&&(u<t.left+t.clip.width)&&
           (v>t.top) &&(v<t.top+t.clip.height)){
          held = t;
          break;
        }
      }
    } 
    else {
      if (trvie4) {
        t = event.srcElement.id;
        if (t) 
          held = document.all[t].style;
      }
      else {
        // Not IE5, NS6, NS4 or IE4 
        // Stamp feet and go off in a huff.
      }      
    }
  }
  if (held) {
    if (trvwcdom) {
      held.style.zIndex = 5;
      if (evt.clientX || evt.clientY) {
        x = parseInt(held.style.left);
	  y = parseInt(held.style.top);
	  offx = evt.clientX-x;
	  offy = evt.clientY-y;
      }
  	else {
        if (evt.pageX || evt.pageY) {
          x = parseInt(evt.pageX-held.style.left);
          y = parseInt(evt.pageY-held.style.top);
        }
      }
 	// trdebug("x=" + x + ",y=" + y + ",l=" + held.id);
    }
    else {
      held.zIndex = 5;
      if (trvntscpe4) {
        x = e.pageX-held.left;
        y = e.pageY-held.top;
      } 
      else {
        if (trvie4) {
          x = held.pixelLeft;
          y = held.pixelTop;
  	    offx = event.clientX-x;
	    offy = event.clientY-y;
	  }
        else {
          // Not IE5, NS6, NS4 or IE4 
          // Stamp feet and go off in a huff.
        }
      }
    }
    return false;
  }
  return true;
}

// mousemove
document.onmousemove = function(e) {
  if (held) {
    if (trvwcdom) {
      if (evt.clientX || evt.clientY) {
        held.style.left = (evt.clientX - offx) + "px";
        held.style.top  = (evt.clientY - offy) + "px";
	}
  	else {
        if (evt.pageX || evt.pageY) {
          held.style.left = (evt.pageX-x) + "px";
          held.style.top  = (evt.pageY-y) + "px";
        }
      }
	if (document.all) return false;
    }
    else {
      if (trvntscpe4) {
        held.left = e.pageX-x;
        held.top  = e.pageY-y;
      }
      else {
	  if (trvie4) {
          held.pixelLeft = event.clientX - offx;
          held.pixelTop  = event.clientY - offy;
          return false;
        }
        else {
          // Not IE5, NS6, NS4 or IE4 
          // Stamp feet and go off in a huff.
        }
      }
    }
  }
  return true;
}

// mouseup
document.onmouseup = function(e) {
  if (held) {
    if (trvwcdom) {
      u = parseInt(held.style.left);
      v = parseInt(held.style.top);
      if (u<ll)
        held.style.left = ll + "px";
      if (v<tt)
        held.style.top = tt + "px";
      if (u>ll+wdth-lw)
        held.style.left = (ll+wdth-lw) + "px";
      if (v>tt+hght-lh)
        held.style.top = (tt+hght-lh) + "px";
      held.style.zIndex = 0;
    }
    else {
      if (trvntscpe4) {
        u = held.left
        v = held.top
        if (u<ll)
          held.left = ll;
        if (v<tt)
          held.top = tt;
        if (u+held.clip.width>ll+wdth) 
  	    held.left = ll+wdth-held.clip.width;
        if (v+held.clip.height>tt+hght)
          held.top = tt+hght-held.clip.height;
      }  
      else {
        if (trvie4) {
          u = held.pixelLeft;
          v = held.pixelTop;
          if (u<ll)
            held.pixelLeft = ll;
          if (v<tt)
            held.pixelTop = tt;
          if (u>ll+wdth-lw)
            held.pixelLeft = ll+wdth-lw;
          if (v>tt+hght-lh)
            held.pixelTop = tt+hght-lh;
        }
        else {
          // Not IE5, NS6, NS4 or IE4 
          // Stamp feet and go off in a huff.
        }
      }
      held.zIndex = 0;
    }
    held = null;
  }
}

// debug report
function trdebug(str) {
  document.getElementById("trtestreport").value = str;
}

function red(q) {
  x = parseInt(Math.random()*q);
  if (isNaN(x)) 
    return red(q); 
  else
    return x;
}

// changeselection
function trvchangephoto() {
  trvbgimgi++;
  if (trvbgimgi>2) trvbgimgi=0;
  if (trvwcdom) {
    (document.getElementById("vbgimg")).src = trvbgimg[trvbgimgi].src;
  }
  else {
    if (trvntscpe4) {
      document.vbgimg.src = trvbgimg[trvbgimgi].src;
    }
    else {
	if (trvie4) {
        document.all.vbgimg.src = trvbgimg[trvbgimgi].src;
      }
      else {
          // Not IE5, NS6, NS4 or IE4 
          // Stamp feet and go off in a huff.
      }
    }
  }
}

// onload
function trvbegin() {
  if (document.getElementById) trvwcdom=1; else trvwcdom=0;
  if (document.layers && !trvwcdom) trvntscpe4=1; else trvntscpe4=0;
  if (document.all && !trvwcdom) trvie4=1; else trvie4=0;
  trvbgimg = new Array(3);
  charlist = "aaaaabbbcccddddeeeeeffggghhhiiiiijjklll" +
             "mmmnnnoooopppqrrrrrssssstttttuuuuvvwwxyyyz";
  letters = charlist.length;
  vl = Array(letters);
  for (i=0; i<letters; i++) {
    vl[i] = charlist.charAt(i);
  }
  wdth=470; hght=450; ll=50; tt=0;
  lw=12; lh=20;
  held=null; x=null; y=null;
  trvbgimgi=2;

  if (trvntscpe4) document.captureEvents(19);

  trvbgimg[0] = new Image();
  trvbgimg[0].src = "images/tr/NY02VelOrig.jpg";
  trvbgimg[1] = new Image();
  trvbgimg[1].src = "images/tr/NY02VelGJ.jpg";
  trvbgimg[2] = new Image();
  trvbgimg[2].src = "images/tr/NY02VelAlJa.jpg";

  trvchangephoto();

  for(i=0; i<letters; i++) {
    document.writeln('<span id="velcro' + i + 
                     '" class="velcro">' + vl[i] + 
                     '</span>');
  }

  if (trvwcdom) {
    // was ll = (document.documentElement.clientWidth-wdth)/2;
  }
  if (window.innerWidth)
    ll = (window.innerWidth-wdth)/2;
  else {
    if (document.body.clientWidth)
      ll = (document.body.clientWidth-wdth)/2;
    else
      ll = (500-wdth)/2;
  }

  for (i=0; i<letters; i++) {
    if (trvwcdom) {
      l = document.getElementById('velcro'+i).style;
	l.left = ll+red(wdth-lw) + "px";
      l.top  = tt+red(hght-lh) + "px";
    }
    else {
      if (trvntscpe4) {
        l = document.layers['velcro'+i];
        l.left = ll+red(wdth-lw);
        l.top  = tt+red(hght-lh);
      }
      else {
	  if (trvie4) {
          l = document.all['velcro'+i].style;
          l.pixelLeft = ll+red(wdth-lw);
          l.pixelTop  = tt+red(hght-lh);
        }
        else {
          // Not IE5, NS6, NS4 or IE4 
          // Stamp feet and go off in a huff.
        }
      }
    }
  }
}

// trvstore
function trvstore(fm) {
  var lft=50;
  var versiona=1;
  var versionb=4;
  fm.action = 'mailto:phil@trphotos.freeserve.co.uk' +
              '?SUBJECT=Say it with Velcro';
  fm.elements['vdata'].value = ' trphotos velcro data (version ' + versiona + '.' + versionb + ') do not edit =\n';

  if (window.innerWidth)
    lft = (window.innerWidth-wdth)/2;
  else {
    if (document.body.clientWidth)
      lft = (document.body.clientWidth-wdth)/2;
    else
      lft = (500-wdth)/2;
  }

  var thevdata = '(' + versiona + ',' + versionb + ',' + trvbgimgi + ',' + lft;

  if (trvwcdom) {
    for(i=0; i<letters; i++){
      t = document.getElementById('velcro'+i);
      thevdata = thevdata + ',' + i + ',' + parseInt(t.style.left) + ',' + parseInt(t.style.top) + ',' + t.style.zIndex;
    }
  }
  else {
    if (trvntscpe4) {
      for(i=0; i<letters; i++){
        t = document.layers['velcro'+i];
        thevdata = thevdata + ',' + i + ',' + t.left + ',' + t.top + ',' + t.zIndex;
      }
    }
    else {
      if (trvie4) {
        for(i=0; i<letters; i++){
          t = document.all['velcro'+i].style;
          thevdata = thevdata + ',' + i + ',' + t.pixelLeft + ',' + t.pixelTop + ',' + t.zIndex;
        }
      }
      else {
        // Not IE5, NS6, NS4 or IE4 
        // Stamp feet and go off in a huff.
      }
    }
  } 
  fm.elements['vdata'].value = fm.elements['vdata'].value +
      thevdata + ');\n\n';
}
