
/*
   sindonology.js from sindonology.org

   This JavaScript code is copyrighted Mario Latendresse 2009-2011

*/

function initSindon(movingDisplayId, imageId, pxmm) {
   return new MeasuringPanel(0 , 0, 500, pxmm, movingDisplayId, imageId);
}

function MeasuringPanel(initX, initY, duration, pxmm, displayId, imgId) {
   this.lastX = initX;
   this.lastY = initY;
   this.pxmm  = pxmm;
   this.imgIdxf = imgId;
   setTimeout(function(){keepDisplay(displayId)},duration);   
}

function getOffsetTop(){
  if (typeof(window.pageYOffset) == 'number') return window.pageYOffset;
  if (document.documentElement && document.documentElement.scrollTop) 
    return document.documentElement.scrollTop;
  if (document.body && document.body.scrollTop)
    return document.body.scrollTop;
  return 0;
}

function keepDisplay(displayId){
  document.getElementById(displayId).style.top = getOffsetTop();
  setTimeout(function(){keepDisplay(displayId)},500);
}

MeasuringPanel.prototype.distanceFromTopLeft = function(event){
  var xPos = event.offsetX ?(event.offsetX):event.pageX - document.getElementById(this.imgId).offsetLeft;
  var yPos = event.offsetY ?(event.offsetY):event.pageY - document.getElementById(this.imgId).offsetTop;
  
  var dx = this.lastX - xPos;
  var dy = this.lastY - yPos;
  var distance   = Math.sqrt(dx*dx + dy*dy);
  return [distance * this.pxmm, xPos, yPos]; 
}

MeasuringPanel.prototype.XYclick = function (event) {
  var result = this.distanceFromTopLeft(event);
  var distancemm = result[0];
  var xPos       = result[1];
  var yPos       = result[2];

  document.getElementById("coordinates").innerHTML = "<p> Last click coordinates ("+xPos+","+yPos+") <p> Length in pixels from ("+this.lastX+","+this.lastY+") to ("+xPos+","+yPos+"): " + distancemm.toFixed(1) + "; in mm: " + distancemm.toFixed(1);
  
  this.lastX = xPos;
  this.lastY = yPos;
}

MeasuringPanel.prototype.XYcurrent = function (event){
  var result = this.distanceFromTopLeft(event);
  var distancemm = result[0];
  var xPos       = result[1];
  var yPos       = result[2];
  
  document.getElementById("cXY").innerHTML = "<p>Length from ("+this.lastX+","+this.lastY+") to ("+xPos+","+yPos+"): "+distancemm.toFixed(1) +"mm";
}


/* This function was tested on: IE 6.0, Firefox 1.5, Mozilla 1.4, Safari 2.0.3 

   Returns an array of two elements: frame width and frame height. 
*/

function get_browser_window_size(){
  var result = new Array(2);
  var frameWidth  = 100;
  var frameHeight = 100;
  if (navigator.appName.indexOf('Microsoft')!=-1 && document.documentElement) { 
           frameHeight = document.documentElement['offsetHeight'];
           frameWidth  = document.documentElement['offsetWidth'];
          }
  else if (navigator.appName.indexOf('Microsoft')!=-1 && document.body) {
           frameHeight = document.body.offsetHeight;
           frameWidth  = document.body.offsetWidth;
          }
  else if (self.innerWidth) {
           frameWidth  = self.innerWidth;
           frameHeight = self.innerHeight;
          }
  else if (document.documentElement && document.documentElement.clientWidth) {
           frameWidth  = document.documentElement.clientWidth;
           frameHeight = document.documentElement.clientHeight;
          }
  else if (document.body) {
           frameWidth  = document.body.clientWidth;
           frameHeight = document.body.clientHeight;
          }
  else alert('Cannot find frame window height and width');

  result[0] = Math.round(frameWidth);
  result[1] = Math.round(frameHeight);

  return result;
}





