var song = new Array(0,0,0,0,0,0,0);

var isSet = new Array(false,false,false,false,false,false,false,false);

var sc = new Array(0,0,0,0,0,0,0);
var lbs = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);


var spelllist = new Array(
			  "Awaken",
			  "Cause light",
			  "Detect Invisibility",
			  "Reveal",
			  "Cure Light",
			  "Refresh",
			  "Levitation",
			  "Sense Life",
			  "Calm",
			  "Cure Poison",
			  "Blindness",
			  "Death Grip",
			  "Fatigue",
			  "Cure Disease",
			  "Charm",
			  "Flame Wind",
			  "High Explosive",
			  "Magic Bomb"
			  );

var mixlist = new Array(
			"Silvery",
			"Reddish",
			"Light Blue",
			"Dark Purple",
			"Glimmering White",
			"Warm Brown",
			"Pale Blue",
			"Dark Red",
			"Faint Yellow",
			"Bright Green",
			"Shimmering Copper",
			"Sticky Magenta",
			"Sparkling Gold",
			"Bright Yellow",
			"Warm Blue",
			"Malevolent Magenta",
			"Glittering Black",
			"Pulsating Orange"
			);
var limits = new Array(
		       11 ,
		       21 ,
		       31 ,
		       41 ,
		       51 ,
		       61 ,
		       71 ,
		       86 ,
		       106 ,
		       116 ,
		       136 ,
		       146 ,
		       156 ,
		       171,
		       186,
		       201,
		       221,
		       10000
		       ); 

var spellpoints = new Array(
			    41, 107,
			    20, 20,
			    15, 50,
			    43, 112,
			    34, 92,
			    28, 80,
			    37, 100,
			    32, 87,
			    43, 112,
			    36, 97,
			    37, 100,
			    55, 137,
			    26, 75,
			    43, 112,
			    26, 75,
			    49, 125,
			    72, 175,
			    50, 150,
			    85, 202,
			    250, 250,
			    26, 75,
			    47, 120,
			    106, 250,
			    78, 187,
			    43, 112,
			    86, 197,
			    72, 175
			    );

var sprignames = new Array("", 
			   "celidonia (1)",
			   "centaures (4)",
			   "eliotropia (8)",
			   "jusquianus (10)",
			   "lillium (14)",
			   "lingua canis (18)",
			   "queri (23)",
			   "mepeta (25)",
			   "milisopholos (32)",
			   "verbena (33)",
			   "provinca (41)",
			   "rosa (50)",
			   "salvia (64)",
			   "virga pastoris (72)",
			   "serpentia (88)",
			   "urtica (92)",
			   "usicur (99)",
			   "sedum rosea (-1)"
			   );
  
var spriglabel = new Array("", 
			  "celidonia",
			  "centaures",
			  "eliotropia",
			  "jusquianus",
			  "lillium",
			  "lingua",
			  "queri",
			  "mepeta",
			  "milisopholos",
			  "verbena",
			  "provinca",
			  "rosa",
			  "salvia",
			  "pastoris",
			  "serpentia",
			  "urtica",
			  "usicur",
			  "sedum"
			  );

var sprigpower = new Array("", 
			   1,
			   4,
			   8,
			   10,
			   14,
			   18,
			   23,
			   25,
			   32,
			   33,
			   41,
			   50,
			   64,
			   72,
			   88,
			   92,
			   99,
			   -1
			   );

var lbpos = new Array ( 0, 17, 32, 48, 64, 80, 97, 118, 142, 168, 190, 214, 233, 254, 278, 300, 330, 370);

var useScale = false;
var useSCC = false;
var indicator;
var indicatorY0 = -24;

function init(){
  sc = [
	document.getElementById('S0'),
	document.getElementById('S1'),
	document.getElementById('S2'),
	document.getElementById('S3'),
	document.getElementById('S4'),
	document.getElementById('S5'),
	document.getElementById('S6')
	];

  show2sprig(false);
  loadSelectors();
  loadSlideLabels();
  ClearForm();
  ToggleScaleDiv(true);
  return true;
  alert("lol");
}

  
function setMix(a,b,c,d,e,f,g){
  var i;
  var inherb = new Array(a,b,c,d,e,f,g);
  for(i=0;i<7;i++){
    if(inherb[i] >= 0) {
      sc[i].selectedIndex = inherb[i];
      isSet[i] = true;
    } else {
      sc[i].selectedIndex = 0;
      isSet[i] = false;
    }
  }
  turnCrank(1,1);
}


function turnCrank(NN, sprig){
  
  var i;
  if(sprig == 0) {
    isSet[NN] = false;
  } else {
    isSet[NN] = true;
  }

  for(i=0;i<6;i++){
    if(sc[i+1].value>0 && isSet[i]) isSet[i+1] = true;
  }


  var mixtotal = 0;
  var mixstring = "mix";
  var sptotal="";
  var slowdecay= false;

  for(i=0;i<6;i++){

    if(isSet[i]) {
      
      mixtotal = mixtotal + sprigpower[sc[i].value];
      mixstring = mixstring + " " + spriglabel[sc[i].selectedIndex];
      
      sc[i+1].disabled = false;
      if(sc[i].value == 18) slowdecay=true;
      
    } else {
      sc[i+1].disabled = "disabled";
      isSet[i+1] = false;
    }
  }
  if(isSet[6]) {
      mixtotal = mixtotal +sprigpower[sc[6].value];
      mixstring = mixstring + " " + spriglabel[sc[6].selectedIndex];
  }
  if(isSet[3]) {
    show2sprig(true);
  } else {
    show2sprig(false);
  }
    

  for(i=0;i<spelllist.length;i++){
    if( mixtotal < limits[i] ){
      spell = spelllist[i];
      mix = mixlist[i]
      baseSP = spellpoints[2*i];
      topSP = spellpoints[2*i+1];
      spellId = i;
      break;
    }
  }

  sptotal = parseInt(mixtotal / 2.0 + 25)
  
  valid = false;
  for(i=1;i<7;i++){
    if(isSet[i] && sc[i].value != sc[i-1].value) {
      valid = true;
    }
  }
  if(!valid){
    spell = "Need 2 sprig types";
    mixstring = "";
    mix= "";
    sptotal = "";
    spellId = -1;
  }

      

  if(slowdecay) {
    spell = spell + " (slow decay)";
  }

  if(useScale) {
    indicator.style.bottom = parseInt(Math.min(mixtotal*1.584,400) + indicatorY0) + "px";
    for(i=0;i<18;i++){
      if(i == spellId) {
	tmp = "<font style='color:#F00000;' face='tahoma,arial'><strong>"+spelllist[i]+"</strong></font>";
      }else{
	tmp = "<font style='color:#505050;' face='tahoma,arial'>"+spelllist[i]+"</font>";
    }
    lbs[i].innerHTML = tmp;
  }
	
      
  }
  document.getElementById('MIX').value = mix;
  document.getElementById('TOTAL').value = mixtotal;
  document.getElementById('SPELL').value = spell;
  document.getElementById('STRING').value = mixstring;
  document.getElementById('SP').value = sptotal;
  
  return true;
}

function ClearForm()  {

  for(i=0;i<7;i++){
    sc[i].selectedIndex = 0;
    isSet[i] = false;
    song[i] = -1;
  }
  if(useSCC) document.getElementById('SCC').value="";
  document.getElementById('SP').value="";

  turnCrank(1,0);

  return true;
}

    

// Iterate over the various selectors, loading them
function loadSelectors(){
  var i;
  for(i=0;i<7;i++){
    loadSelector(sc[i],sprignames);
  }
  return true;
}

// Load an individual selector
function loadSelector(lsc,list){
  if(list.length < 1) return true;
  
  lsc.length = list.length;

  // There is an inherent offset between the indexing for the selector
  // and the value it returns. The value it returns is the position in the
  // corresponding slist array, starting at 0. However, our first selector
  // is blank (indicating no selection), which causes this shift by 1.
  for(i=0; i<list.length; i++){
    lsc.options[i].value = i;
    lsc.options[i].text = list[i];
  }
  return true;
}

function show2sprig(show){
  if(show) {
    document.getElementById('label2').style.display="";
    document.getElementById('sprig2').style.display="";
  }else{
    document.getElementById('label2').style.display="none";
    document.getElementById('sprig2').style.display="none";
  }
  return true;
}
  
function ToggleScaleDiv(useit){
  
  useScale = useit;
  if(useScale) {
    document.getElementById('dScale').style.display='inline';
  }else{
    document.getElementById('dScale').style.display='none';
  }
  turnCrank();
  return true;
}

function loadSlideLabels(){

  lbs = [
	 document.getElementById('l1'),
	 document.getElementById('l2'),
	 document.getElementById('l3'),
	 document.getElementById('l4'),
	 document.getElementById('l5'),
	 document.getElementById('l6'),
	 document.getElementById('l7'),
	 document.getElementById('l8'),
	 document.getElementById('l9'),
	 document.getElementById('l10'),
	 document.getElementById('l11'),
	 document.getElementById('l12'),
	 document.getElementById('l13'),
	 document.getElementById('l14'),
	 document.getElementById('l15'),
	 document.getElementById('l16'),
	 document.getElementById('l17'),
	 document.getElementById('l18')
	 ];

  indicator = document.getElementById('scaleIndicator');

  var i;
  for(i=0;i<18;i++){
    tmp = "<font style='color:#707070;' face='tahoma,arial'><small>"+spelllist[i]+"</small></font>";
    lbs[i].innerHTML = tmp;
    tmp = lbpos[i] + "px";
    lbs[i].style.bottom=tmp;
  }
}
