
var APT_METER_WIDTH = 0.3048006;  //(1 / 3);
var APT_FEET_WIDTH = 1.00;  // 1.0936

var imageIndex = 0;
var tileType = "c";
var FLOOR_WIDTH = 24;
var FLOOR_LENGTH = 34;
var numImage = 0;
//var NUM_ALL = 17;
var NUM_OPEN = 13;
var NUM_CLOSED = 13;
var where = new Array(2);
var prevIndex = 1;

imageIndex = 0;
imageClosedArray = new Array(NUM_CLOSED);
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor_blank.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor-black.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor-white.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor-gray.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor-blue.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor-gold.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor-green.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor-orange.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor-purple.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor-red.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor-sandstone.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor-silver.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/BLT/floor-yellow.gif");

numImage = NUM_OPEN; // default to open
imageIndex = 0; // reset to zero

var orderArray = new Array(FLOOR_LENGTH);
for (i = 0; i < FLOOR_LENGTH; i++) { // make 3-D
  orderArray[i] = new Array(FLOOR_WIDTH);
  for (j = 0; j < FLOOR_WIDTH; j++) {
    orderArray[i][j] = new Array(2); // o or c
  }
}

for (i = 0; i < FLOOR_LENGTH; i++) {
  for (j = 0; j < FLOOR_WIDTH; j++) {
    orderArray[i][j][0] = 'c'; // default to closed
    orderArray[i][j][1] = 0;
  }
}

function setTileType(thisTileType) {
  prevIndex = 1;
  //imageIndex = 0; // reset color rotation when changing tile types
  tileType = thisTileType;
  if (tileType == 'c') {
    numImage = NUM_CLOSED;
  }
}

function imageItem(imageLocation) {
  this.imageItem = new Image();
  this.imageItem.src = imageLocation;
}

function getImageItemLocation(imageObj) {
  return(imageObj.imageItem.src)
}

function getNextImage() {
  imageIndex = imageIndex % numImage;
  var newImage;
  if (tileType == 'c') {
    newImage = getImageItemLocation(imageClosedArray[imageIndex]);
  } else {
    newImage = getImageItemLocation(imageOpenArray[imageIndex]);
  }
  return(newImage);
}

function swapFloorTile(place) {
  where = stringSplit(place, '_');
  if ((orderArray[where[1]][where[2]][1] % numImage) > 0) {
    imageIndex = ++orderArray[where[1]][where[2]][1] % numImage;
    prevIndex = imageIndex;
  } else {
    if (prevIndex == 0) prevIndex++; // allows looping
    imageIndex = prevIndex;
    orderArray[where[1]][where[2]][1] = prevIndex;
  }
  orderArray[where[1]][where[2]][0] = tileType;
  var newImage = getNextImage();
  document[place].src = newImage;
}

function calculate() {
  // force redraw
  document.floor.open.value = "";
  document.floor.closed.value = "";
  document.floor.area.value = "";
  
  var totalNum = 0;
  var cNumBlack = 0; var cNumWhite = 0; var cNumGray = 0; var cNumBlue = 0; var cNumGold = 0; var cNumGreen = 0; var cNumOrange = 0; 
  var cNumPurple = 0; var cNumRed = 0; var cNumSandstone = 0; var cNumSilver = 0; var cNumYellow = 0;

  for (i = 0; i < FLOOR_LENGTH; i++) {
    for (j = 0; j < FLOOR_WIDTH; j++) {
      if (orderArray[i][j][1] > 0) { // tile selected
        if (orderArray[i][j][0] == 'c') {
          switch (orderArray[i][j][1]){
            case 1: cNumBlack++; totalNum++;
                    break;
            case 2: cNumWhite++; totalNum++;
                    break;
            case 3: cNumGray++; totalNum++;
                    break;
            case 4: cNumBlue++; totalNum++;
                    break;
            case 5: cNumGold++; totalNum++;
                    break;
            case 6: cNumGreen++; totalNum++;
                    break;
            case 7: cNumOrange++; totalNum++;
                    break;
            case 8: cNumPurple++; totalNum++;
                    break;
            case 9: cNumRed++; totalNum++;
                    break;
            case 10: cNumSandstone++; totalNum++;
                    break;
            case 11: cNumSilver++; totalNum++;
                    break;
            case 12: cNumYellow++; totalNum++;
          }
        } 
      }
    }
  }
  // print

  var cOut = "";
  var cOut2 = "";
  var cOut3 = "";
  var bkBox = 0;
  var weBox = 0;
  var gyBox = 0;
  var beBox = 0;
  var gdBox = 0;
  var gnBox = 0;
  var oeBox = 0;
  var peBox = 0;
  var rdBox = 0;
  var seBox = 0;
  var srBox = 0;
  var ywBox = 0;
  if (cNumBlack || cNumWhite || cNumGray || cNumBlue || cNumGold || cNumGreen || cNumOrange || cNumPurple || cNumRed || cNumSandstone || cNumSilver || cNumYellow) {
    if (cNumBlack) {
      bkBox = Math.ceil(cNumBlack/20*1)/1;
      cOut += "   " + cNumBlack + " Midnight Black (" + bkBox + " Cases) ";
    }
    if (cNumWhite) {
      weBox = Math.ceil(cNumWhite/20*1)/1;
      cOut += "   " + cNumWhite + " Absolute White (" + weBox + " Cases) ";
    }
    if (cNumGray) {
      gyBox = Math.ceil(cNumGray/20*1)/1;
      cOut += "   " + cNumGray + " Slate Grey (" + gyBox + " Cases) ";
    }
    if (cNumBlue) {
      beBox = Math.ceil(cNumBlue/20*1)/1;
      cOut += "   " + cNumBlue + " Royal Blue (" + beBox + " Cases) ";
    }
    if (cNumGold) {
      gdBox = Math.ceil(cNumGold/20*1)/1;
      cOut2 += "   " + cNumGold + " Bold Gold (" + gdBox + " Cases) ";
    }
    if (cNumGreen) {
      gnBox = Math.ceil(cNumGreen/20*1)/1;
      cOut2 += "   " + cNumGreen + " Forest Green (" + gnBox + " Cases) ";
    }
    if (cNumOrange) {
      oeBox = Math.ceil(cNumOrange/20*1)/1;
      cOut2 += "   " + cNumOrange + " Blaze Orange (" + oeBox + " Cases) ";
    }
    if (cNumPurple) {
      peBox = Math.ceil(cNumPurple/20*1)/1;
      cOut2 += "   " + cNumPurple + " Royal Purple (" + peBox + " Cases) ";
    }
    if (cNumRed) {
      rdBox = Math.ceil(cNumRed/20*1)/1;
      cOut3 += "   " + cNumRed + " Radical Red (" + rdBox + " Cases) ";
    }
    if (cNumSandstone) {
      seBox = Math.ceil(cNumSandstone/20*1)/1;
      cOut3 += "   " + cNumSandstone + " Sandstone (" + seBox + " Cases) ";
    }
    if (cNumSilver) {
      srBox = Math.ceil(cNumSilver/20*1)/1;
      cOut3 += "   " + cNumSilver + " Metallic Silver (" + srBox + " Cases) ";
    }
    if (cNumYellow) {
      ywBox = Math.ceil(cNumYellow/20*1)/1;
      cOut3 += "   " + cNumYellow + " Electric Yellow (" + ywBox + " Cases) ";
    }
    document.floor.closed.value = cOut;
    document.floor.closed2.value = cOut2;
    document.floor.closed3.value = cOut3;
  }


  if (totalNum > 0) {
    document.floor.title.value = "BLT Peel & Stick Tiles ( 12 in. x 12 in. )" ;
  }
  
  if (totalNum > 0) {
    var areaFeet;
    var areaMeters;
    areaMeters = Math.round(totalNum * APT_METER_WIDTH * APT_METER_WIDTH * 100) / 100; // round to hundredths
    areaFeet = Math.round(totalNum * APT_FEET_WIDTH * APT_FEET_WIDTH * 100) / 100; // round to hundredths
    document.floor.area.value = "Area covered by " + totalNum + " tiles:       " + areaFeet + " sq. feet (" + areaMeters + " sq. meters)" +  "          Cost: $" + (bkBox + weBox + gyBox + beBox + gdBox + gnBox + oeBox + peBox + rdBox + seBox + srBox + ywBox)*64.00 + ".00";
  }
}

function stringSplit(string, delimiter) { 
    if (string == null || string == "") { 
        return null; 
    } else if (string.split != null) { 
        return string.split (delimiter); 
    } else { 
        var ar = new Array(); 
        var i = 0; 
        var start = 0; 
        while(start >= 0 && start < string.length) { 
             var end = string.indexOf (delimiter, start) ; 
             if(end >= 0) { 
                 ar[i++] = string.substring (start, end); 
                 start = end+1; 
             } else { 
                 ar[i++] = string.substring (start, string.length); 
                 start = -1; 
             } 
        } 
        return ar; 
    } 
} 