var elevel=new Array();
var elevel0=-2.0;
var nlevel=50;
var iba="http://physics.gallaudet.edu/ulm/";
var nimg=29;
var ild=0;
var psun=5.0;
var dmlt=0.8;
var img=new Array(nimg);
var ss="";
for (var i=0; i<nimg; i++) {
  ss=i.toString();
  if (i <= 9) {ss="0"+ss;}
  img[i]=new Image();
  img[i].src=iba+"c"+ss+".png";
}
rset();
show();
document.ul.mllog.value="";

function cycle() {
  var ss="";
  document.ul.mllog.value="WINTER\n";  
  document.ul.sun.options[1].selected=true;
  document.ul.atemp.options[1].selected=true;
  steponce();
  steponce();
  steponce();
  steponce();
  steponce();
  steponce();
  document.ul.mllog.value=document.ul.mllog.value+"SPRING\n";  
  document.ul.sun.options[2].selected=true;
  document.ul.atemp.options[2].selected=true;
  steponce();
  steponce();
  steponce();
  steponce();
  steponce();
  steponce();
  document.ul.mllog.value=document.ul.mllog.value+"SUMMER\n";  
  document.ul.sun.options[3].selected=true;
  document.ul.atemp.options[3].selected=true;
  steponce();
  steponce();
  steponce();
  steponce();
  steponce();
  steponce();
  document.ul.mllog.value=document.ul.mllog.value+"FALL\n";  
  document.ul.sun.options[2].selected=true;
  document.ul.atemp.options[2].selected=true;
  steponce();
  steponce();
  steponce();
  steponce();
  steponce();
  steponce();
}

function n2s(x) {
  if (x > 0.1) {
    var ss=x.toString(10);
    if (ss.length > 4) {ss=ss.substring(0,4);}
  } else {ss=0.0;}
  return ss;
}

function oval(i) {
  var ss="";
  switch (i) {
    case 0:ss="OFF";break;
    case 1:ss="LOW";break;
    case 2:ss="MED";break;
    case 3:ss=" HI";break;
  }
  return ss;
}

function show() {
  var i=0;
  var j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l00.src=img[j].src;
  var xx=elevel[i];
  var sml="*";
  document.ul.v00.value=n2s(xx)+sml;
  i++;
  ild=1;
  j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l01.src=img[j].src;
  xx=elevel[i];
  if ((elevel[0]-elevel[i])<dmlt) {sml="*";ild++;} else {sml="";}
  document.ul.v01.value=n2s(xx)+sml;
  i++;
  j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l02.src=img[j].src;
  xx=elevel[i];
  if ((elevel[0]-elevel[i])<dmlt) {sml="*";ild++;} else {sml="";}
  document.ul.v02.value=n2s(xx)+sml;
  i++;
  j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l03.src=img[j].src;
  xx=elevel[i];
  if ((elevel[0]-elevel[i])<dmlt) {sml="*";ild++;} else {sml="";}
  document.ul.v03.value=n2s(xx)+sml;
  i++;
  j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l04.src=img[j].src;
  xx=elevel[i];
  if ((elevel[0]-elevel[i])<dmlt) {sml="*";ild++;} else {sml="";}
  document.ul.v04.value=n2s(xx)+sml;
  i++;
  j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l05.src=img[j].src;
  xx=elevel[i];
  if ((elevel[0]-elevel[i])<dmlt) {sml="*";ild++;} else {sml="";}
  document.ul.v05.value=n2s(xx)+sml;
  i++;
  j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l06.src=img[j].src;
  xx=elevel[i];
  if ((elevel[0]-elevel[i])<dmlt) {sml="*";ild++;} else {sml="";}
  document.ul.v06.value=n2s(xx)+sml;
  i++;
  j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l07.src=img[j].src;
  xx=elevel[i];
  if ((elevel[0]-elevel[i])<dmlt) {sml="*";ild++;} else {sml="";}
  document.ul.v07.value=n2s(xx)+sml;
  i++;
  j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l08.src=img[j].src;
  xx=elevel[i];
  if ((elevel[0]-elevel[i])<dmlt) {sml="*";ild++;} else {sml="";}
  document.ul.v08.value=n2s(xx)+sml;
  i++;
  j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l09.src=img[j].src;
  xx=elevel[i];
  if ((elevel[0]-elevel[i])<dmlt) {sml="*";ild++;} else {sml="";}
  document.ul.v09.value=n2s(xx)+sml;
  i++;
  j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l10.src=img[j].src;
  xx=elevel[i];
  if ((elevel[0]-elevel[i])<dmlt) {sml="*";ild++;} else {sml="";}
  document.ul.v10.value=n2s(xx)+sml;
  i++;
  j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l11.src=img[j].src;
  xx=elevel[i];
  if ((elevel[0]-elevel[i])<dmlt) {sml="*";ild++;} else {sml="";}
  document.ul.v11.value=n2s(xx)+sml;
  i++;
  j=Math.round(elevel[i]);
  if (j<elevel0) {j=0;}
  if (j>=nimg) {j=nimg-1;}
  document.l12.src=img[j].src;
  xx=elevel[i];
  if ((elevel[0]-elevel[i])<dmlt) {sml="*";ild++;} else {sml="";}
  document.ul.v12.value=n2s(xx)+sml;
  i++;
  var avg=0.0;
  for (var i=0; i<13; i++) {
    avg=avg+elevel[i];
  }
  avg=avg/13.0;
  document.ul.tavg.value=n2s(avg);

  var st="SE:";
  var sun=document.ul.sun.selectedIndex;
  st=st+oval(sun)+"  ";
  var hloss=document.ul.hloss.selectedIndex;
  st=st+"HT:"+oval(hloss)+"  ";
  var wtrans=document.ul.wtrans.selectedIndex;
  st=st+"WT:"+oval(wtrans)+"  ";
  var wspd=document.ul.wspd.selectedIndex;
  st=st+"WS:"+oval(wspd)+"  ";
  var wdiff=document.ul.wdiff.selectedIndex;
  st=st+"WD:"+oval(wdiff)+"  ";
  var atemp=document.ul.atemp.selectedIndex;
  st=st+"AT:"+oval(atemp)+"  ";
  var stemp=document.ul.stemp.selectedIndex;
  st=st+"IST:"+n2s(stemp)+"  ";
  st=st+"AVGTMP: "+n2s(avg)+ "  ";
  st=st+"ILDEPTH: "+n2s(ild*10)+"\n";
  document.ul.mllog.value=document.ul.mllog.value+st;
}

function clrlog() {
  document.ul.mllog.value="";
}

function sort() {
  var temp=0.0;
  for (var i=0; i<nlevel-1; i++) {
    for (var j=i+1; j<nlevel; j++) {
      if (elevel[j] > elevel[i]) {
        temp=elevel[j];
        elevel[j]=elevel[i];
        elevel[i]=temp;
      }
    }
  }  
}

function smooth(nsm,nl,sfrac) {
  sort();
  if (nl==0) {nl=nlevel};
  de=0.0;
  for (var j=0; j<nsm; j++) {
    for (var i=0; i<nl-2; i++) {
      de=elevel[i]-elevel[i+1];
      elevel[i]=elevel[i]-(de*sfrac);
      elevel[i+1]=elevel[i+1]+(de*sfrac);
    }
  }
}

function steponce() {
  var sun=document.ul.sun.selectedIndex*psun;
  var hloss=document.ul.hloss.selectedIndex;
  var wtrans=document.ul.wtrans.selectedIndex;
  var wdiff=document.ul.wdiff.selectedIndex;
  var atemp=document.ul.atemp.selectedIndex;
  var wspd=document.ul.wspd.selectedIndex;
  var hl=0.0;
  switch (hloss) {
    case 0: hl=0.0;
            break;
    case 1: hl=0.1;
            break;
    case 2: hl=0.3;
            break
    case 3: hl=0.5;
            break;
  }
  var wt0=0.0;
  switch (wtrans) {
    case 0: wt0=0.99;
            break;
    case 1: wt0=0.8;
            break;
    case 2: wt0=0.6;
            break;
    case 3: wt0=0.4;
            break;
  }
  var wd0=0.0;
  switch (wdiff) {
    case 0: wd0=0.0;
            break;
    case 1: wd0=0.1;
            break;
    case 2: wd0=0.2;
            break;
    case 3: wd0=0.3;
            break;
  }
  var at0=0.0;
  switch (atemp) {
    case 0: at0=0.0;
            break;
    case 1: at0=3.0;
            break;
    case 2: at0=8.0;
            break;
    case 3: at0=13.0;
            break;
  }
  var nstep=10;
  var xx=0.0;
  var de=0.0;
  var quit=0;
  var i=0;
  for (var j=0; j<nstep; j++) {
    var xsun=sun/nstep;
    var xhl=hl*psun*(at0-elevel[0])/nstep;
    if (hloss>0) {de=xhl;} else {de=0.0;}
    quit=0;
    i=0;
    while ((i<nlevel) && (quit==0)) {
      de=de+xsun*wt0;
      if (de >= 0.0) {
        elevel[i]=elevel[i]+de;
        de=0.0;
      } else {
        if (Math.abs(de) <= (elevel[i]-elevel0)) {
          elevel[i]=elevel[i]+de;
          de=0.0;
        } else {
          de=de+elevel[i];
          elevel[i]=elevel0; 
        }
      }
      i++;
      xsun=xsun-xsun*wt0;
      if (xsun<0.0) {quit=1;}
    }
    sort();
    if (wdiff!=0) {smooth(1,0,wd0);}
    if (wspd!=0) {smooth(2,3*wspd,0.25);}
  }
  show();
}

function levelset() {
  for (var i=0; i<nlevel; i++) {
    elevel[i]=(document.ul.stemp.selectedIndex*Math.pow((nlevel-1-i)/(nlevel-1),4))-2.0;
  }
  show();
  document.ul.mllog.value="";
}

function rset() {
  for (var i=0; i<nlevel; i++) {
    elevel[i]=(document.ul.stemp.selectedIndex*Math.pow((nlevel-1-i)/(nlevel-1),4))-2.0;
  }
  document.ul.sun.options[2].selected=true;
  document.ul.hloss.options[2].selected=true;
  document.ul.wtrans.options[2].selected=true;
  document.ul.wspd.options[0].selected=true;
  document.ul.wdiff.options[0].selected=true;
  document.ul.atemp.options[0].selected=true;
  document.ul.stemp.options[16].selected=true;
  show();
  document.ul.mllog.value="";
}