
var APT_METER_WIDTH = 0.4509;  //(1 / 3);
var APT_FEET_WIDTH = 1.47917;  // 1.0936

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

imageIndex = 0;
imageClosedArray = new Array(NUM_CLOSED);
imageClosedArray[imageIndex++] = new imageItem("pics/tuffseal/floor_blank.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/tuffseal/floor_blue.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/tuffseal/floor_taupe.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/tuffseal/floor_lightgray.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/tuffseal/floor_white.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/tuffseal/floor_red.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/tuffseal/floor_teal.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/tuffseal/floor_darkgray.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/tuffseal/floor_black.gif");
imageClosedArray[imageIndex++] = new imageItem("pics/tuffseal/floor_canvas.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 cNumBlue = 0; var cNumTaupe = 0; var cNumLightGray = 0; var cNumWhite = 0; var cNumRed = 0;
  var cNumTeal = 0; var cNumDarkGray = 0; var cNumBlack = 0; var cNumCanvas = 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: cNumBlue++; totalNum++;
                    break;
            case 2: cNumTaupe++; totalNum++;
                    break;
            case 3: cNumLightGray++; totalNum++;
                    break;
            case 4: cNumWhite++; totalNum++;
                    break;
            case 5: cNumRed++; totalNum++;
                    break;
            case 6: cNumTeal++; totalNum++;
                    break;
            case 7: cNumDarkGray++; totalNum++;
                    break;
            case 8: cNumBlack++; totalNum++;
                    break;
            case 9: cNumCanvas++; totalNum++;
          }
        } 
      }
    }
  }
  // print

  var cOut = "";
  if (cNumBlue || cNumTaupe || cNumLightGray || cNumWhite || cNumRed || cNumTeal || cNumDarkGray || cNumBlack || cNumCanvas) {
    cOut = "Tuff-Seal Tiles";
    if (cNumBlue) {
      cOut += ",    " + cNumBlue + " blue";
    }
    if (cNumTaupe) {
      cOut += ", " + cNumTaupe + " taupe";
    }
    if (cNumLightGray) {
      cOut += ", " + cNumLightGray + " light gray";
    }
    if (cNumWhite) {
      cOut += ", " + cNumWhite + " white";
    }
    if (cNumRed) {
      cOut += ", " + cNumRed + " red";
    }
    if (cNumTeal) {
      cOut += ", " + cNumTeal + " teal";
    }
    if (cNumDarkGray) {
      cOut += ", " + cNumDarkGray + " dark gray";
    }
    if (cNumBlack) {
      cOut += ", " + cNumBlack + " black";
    }
    if (cNumCanvas) {
      cOut += ", " + cNumCanvas + " canvas";
    }
    document.floor.closed.value = cOut;
  }
  
  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: $" + Math.round(totalNum * 12.69*100)/100;
  }
}

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; 
    } 
} 