var w_cm  = 15.24 ;
var h_cm  = 10.16 ;
var w_i   = 6 ;
var h_i   = 4 ;
var w_px  = 1800 ;
var h_px  = 1200 ;
var dpi   = 300 ;
var mpx   = centRound(1200*1800/1000000) ;
var ratio = 1.5 ;
var divider = 2 ;

var CMPI = 2.539999983236 ;

var a, b1, b2, i ; // globals, for eclectic use ;-)
var o = new Array() ;

function chW_cm(v) {
  w_cm    = v ;
  chW_i    (w_cm/CMPI) ;
  if (gebi('nptRatioLock').checked) {
    h_cm  = w_cm/ratio ;
    }
  else {
    ratio = w_cm/h_cm ;
    }
  // blink ('nptW_cm','nptH_cm','nptRatio') ;                 // the blinking input fields idea has been left out for now
  }

function chH_cm(v) {
  h_cm    = v ;
  chH_i    (h_cm/CMPI) ;
  if (gebi('nptRatioLock').checked) {
    w_cm  = ratio*h_cm ;
    }
  else {
    ratio = w_cm/h_cm ;
    }
  }

function chW_i(v) {
  w_i  = v ;
  w_cm = (w_i*CMPI) ;
  if (gebi('nptRatioLock').checked) {
    h_i  = w_i/ratio ;
    h_cm = h_i*CMPI ;
    }
  else {
    ratio = w_i/h_i ;
    }
  if (gebi('nptPixelLock').checked) {
    chDpi (w_px/w_i) ;
    }
  else {
    chDpi (dpi) ;
    }
  }

function chH_i(v) {
  h_i  = v ;
  h_cm = (h_i*CMPI) ;
  if (gebi('nptPixelLock').checked) {
    chDpi (h_px/h_i) ;
    }
  else {
    chDpi (dpi) ;
    }
  if (gebi('nptRatioLock').checked) {
    w_i  = ratio*h_i ;
    w_cm = w_i*CMPI ;
    }
  else {
    ratio = w_i/h_i ;
    }
  chDpi (dpi) ;
  }

function chRatio(v) {
  gebi('nptRatioLock').checked = false ;
  ratio = v/divider ;
  w_cm  = ratio*h_cm ;
  w_i   = w_cm/CMPI ;
  w_px  = w_i * dpi ;
  }

function chDivider(v) {
  divider = v ;
  }

function chDpi(v) {
  dpi = v ;
  if (gebi('nptPixelLock').checked) {
    w_i  = w_px / dpi ;
    h_i  = h_px / dpi ;
    w_cm = w_i * CMPI ;
    h_cm = h_i * CMPI ;
    }
  else {
    w_px = Math.round (w_i * dpi) ;
    h_px = Math.round (h_i * dpi) ;
    mpx  = Math.round (w_px*h_px/10000) /100;
    }
  }

function chW_px(v) {
  w_px = v ;
  if (gebi('nptRatioLock').checked) {
    chDpi (w_px/w_i) ;
    }
  else {
    gebi('nptPixelLock').checked = false ;
    chW_i (w_px/dpi) ;
    }  
  }

function chH_px(v) {
  h_px = v ;
  if (gebi('nptRatioLock').checked) {
    chDpi (h_px/h_i) ;
    }
  else {
    gebi('nptPixelLock').checked = false ;
    chH_i (h_px/dpi) ;
    }  
  }

function chMpx(v) {
  mpx = v ;
  var size = mpx * 1000000 ;
  /*
  { w * h = s
  { w / h = r
  =>w * h * w / h = rs
  =>w²h / h = rs
  =>w² = rs
  */
  w_px   = Math.sqrt (ratio * size) ;
  h_px   = w_px / ratio ;
  if (gebi('nptPixelLock').checked) {
    w_i  = w_px / dpi ;
    h_i  = h_px / dpi ;
    w_cm = w_i * CMPI ;
    h_cm = h_i * CMPI ;
    }
  else {
    dpi  = w_px / w_i ;
    }
  }


function gebi(n) {
  return document.getElementById(n) ;
  }

function centRound(v) {
  return Math.round(v*100)/100;
  }

function display() {
  gebi('nptW_cm').value     = centRound(w_cm) ;
  gebi('nptH_cm').value     = centRound(h_cm) ;
  gebi('nptW_i' ).value     = centRound(w_i)  ;
  gebi('nptH_i' ).value     = centRound(h_i)  ;
  gebi('nptW_px').value     =Math.round(w_px) ;
  gebi('nptH_px').value     =Math.round(h_px) ;
  gebi('nptMpx' ).value     = centRound(mpx)  ;
  gebi('nptDpi' ).value     = centRound(dpi)  ;
  gebi('spnDpi' ).innerHTML = centRound(dpi)  ;
  gebi('nptRatio').value    = ratio*divider  ;
  gebi('slctDivider').value = divider ;
  return true;
  }

