function disableRow(checkbox) {

  var col = checkbox.parentNode.cellIndex;
  var thisRow = checkbox.parentNode.parentNode;

  var row = thisRow.rowIndex;
  var rows = thisRow.parentNode.rows;
  var rowCount = rows.length;
  var totalCol = thisRow.cells.length - 1;
  
  var cssclass = checkbox.parentNode.className;
  
  if (checkbox.checked) {
    checkbox.parentNode.className = 'SelectedAvailabilityCell';
    checkbox.parentNode.setAttribute('originalClassName',cssclass);
  }
  else {
    checkbox.parentNode.className = checkbox.parentNode.getAttribute('originalClassName');
  }
  
  for(var i = 1; i < rowCount; i++) {

    thatRow = rows[i];
  
    if (thatRow.rowIndex != row & thatRow.tagName != 'TH') {
        thatRow.cells[col].disabled = checkbox.checked;
        
        var cb = GetCheckbox(thatRow, col);
        
        if (cb) {
            if (checkbox.checked) {
                cb.style.display = 'none';
                cb.checked = false;
            }
            else {
                cb.style.display = 'inline';
                checkbox.parentNode.className = checkbox.parentNode.getAttribute('originalClassName');
            }
        }
    }
  }
  
  updateTotals(rows, true)
  
}

function addRow(dropdown) {

  var thisRow = dropdown.parentNode.parentNode;
  var totalCol = thisRow.cells.length - 1;
  var grandTotal = 0;
  
  if (!CheckMaxRooms(thisRow.parentNode.rows))
    dropdown.value = 0;
    
  for(var i = 3; i < totalCol; i++) {

    var thisCell = thisRow.cells[i];

    if (thisCell.className == 'SelectedAvailabilityCell' ||
        thisCell.className == 'SearchedAvailabilityCell' ||
        thisCell.getAttribute('originalClassName') == 'SearchedAvailabilityCell') {
        
        thisCell.setAttribute('originalClassName','SearchedAvailabilityCell');
        
        if (dropdown.value > 0) {
          thisCell.className = 'SelectedAvailabilityCell';
          thisCell.setAttribute('selected', '1');
        }
        else {
          thisCell.className = thisCell.getAttribute('originalClassName');
          thisCell.setAttribute('selected', '0');
        }
            
        if (!thisCell.getAttribute('dayRate'))
            thisCell.setAttribute('dayRate', GetTotal(thisRow, i));
      
        var tot = thisCell.getAttribute('dayRate') * dropdown.value;
        grandTotal += tot;
        
        if (tot > 0)
            SetTotal(tot, thisCell);
      }
      
      updateTotals(thisRow.parentNode.rows, false);

   }
}

function selectRow(button) {

  var col = button.parentNode.cellIndex;
  var thisRow = button.parentNode.parentNode;

  var row = thisRow.rowIndex;
  var rows = thisRow.parentNode.rows;
  var rowCount = rows.length;
  var totalCol = thisRow.cells.length - 1;
  
  for (var cellno = col + 1; cellno < totalCol; cellno++) {
  
    if (thisRow.cells[cellno].className == 'SearchedAvailabilityCell' ||
        thisRow.cells[cellno].getAttribute('originalClassName') == 'SearchedAvailabilityCell') {

      var cb = GetCheckbox(thisRow, cellno);
      if (cb) {
        cb.checked = true;
        cb.style.display = 'inline';
        cb.parentNode.setAttribute('originalClassName','SearchedAvailabilityCell');
        cb.parentNode.className = 'SelectedAvailabilityCell';
      }
    }
  }

  for(var i = 0; i < rowCount; i++) {

    thatRow = rows[i];
    
    if (thatRow.tagName != 'TH' && thatRow.rowIndex != row) {
        for (var cellno = col + 1; cellno < totalCol; cellno++) {
            if (thatRow.cells[cellno].className == 'SearchedAvailabilityCell' ||
                thatRow.cells[cellno].getAttribute('originalClassName') == 'SearchedAvailabilityCell') {
                thatRow.cells[col].disabled = true;
                var cb = GetCheckbox(thatRow, cellno);
                
                if (cb) {
                 cb.style.display = 'none';
                 cb.checked = false;
                 if (cb.parentNode.getAttribute('originalClassName'))
                    cb.parentNode.className = cb.parentNode.getAttribute('originalClassName');
                }
            }
        }
    }
  }
  
  updateTotals(rows, true)
}

function GetCheckbox(row, col) {

    var cell = row.cells[col];
    
    if (cell.children) {
        for (var k = 0; k < cell.children.length; k++) {
            if (cell.children[k].tagName == 'INPUT') {
                return cell.children[k];
            }
        }
    }
    
    return null;
}

function updateTotals(rows, hasCheckboxes) {

    var rowCount = rows.length;
    var grandTotal = 0;
    
    for (var i = 1; i < rowCount; i++) {
    
        var thisRow = rows[i];
        var totalCol = thisRow.cells.length - 1;
   
        var rowTotal = 0;
        
        for (var c = 3; c < totalCol; c++) {
            var cb = GetCheckbox(thisRow, c);
            if ((cb && cb.checked) || 
                (!hasCheckboxes && thisRow.cells[c].className == 'SelectedAvailabilityCell')) {
                var total = GetTotal(thisRow, c);
                rowTotal += total;
                grandTotal += total;
            }
        }
        
        if (rowTotal > 0)
            thisRow.cells[totalCol].innerHTML = currency + rowTotal;
        else
            thisRow.cells[totalCol].innerHTML = '';
    } 
    
    if (grandTotal > 0)
        rows[rowCount-1].cells[totalCol].innerHTML = currency + grandTotal;
    else
        rows[rowCount-1].cells[totalCol].innerHTML = '';

}

function GetTotal(row, col) {

    var total = 0;
    
    var cell = row.cells[col];
    
    currency = '$';
    
    var content = (document.all) ? cell.innerText : cell.textContent;
    content = content.trim();
    
    currency = content.substr(0,1);
    total = content.replace(currency,'') * 1;

    return total;
   
}

function SetTotal(total, cell) {

    var content = (document.all) ? cell.innerText : cell.textContent;
    content = content.trim();
    
    if (!currency) 
        currency = content.substr(0,1);
    
    if (document.all)
        cell.innerText = currency + total;
    else
        cell.textContent = currency + total;
}

function CheckMaxRooms(rows) {
    
    var selected = 0;

    for (var i = 1; i < rows.length - 1;i++) {
    
        var dd = rows[i].cells[2].children[0];
        if (dd) selected += dd.value * 1;
    }
    
    if (selected > MaxRooms) {
        alert ('You may only select ' + MaxRooms + ' rooms.');
        return false;
    }
    else {
        if (document.all)
            rows[rows.length - 1].cells[2].innerText = selected + ' rooms';
        else
            rows[rows.length - 1].cells[2].textContent = selected + ' rooms';
    }
    
    return true;

}
