/*************************************************************
* Document	: bwt_detail_util.js
* Author	: Wayne J. Earl
* Created	: 2007-02-08
* Purpose	: Common JavaScript functions for BWT detail section
* Comment	: Moved from bwt_entry_util.js
*************************************************************/
/*************************************************************
* Revised by	: Wayne J. Earl
* Revised date	: 2007-05-30
* Description	: Added conditional code to restrict editing
*					for templates to 'name' only
*************************************************************/
/*************************************************************
* Revised by	: Wayne J. Earl 
* Revised date	: 2009-01-07
* Description	: Added line break to <br> conversion
* 				   and <br> to line break conversion
*************************************************************/
/*************************************************************
* Revised by	: 
* Revised date	: 
* Description	: 
*************************************************************/

//var effect_duration = .5;

//button state vars
var current_change_row = 0;
var current_change_set = 0;
var f_enable_change = true;
var f_enable_edit = true;
var f_enable_delete = true;
var f_enable_save = false;
var f_enable_cancel = true;

var f_sample_rows = false;
var f_editable = true;

var detail_column_count = 5;
var empty_table_rows = 2;

//sample detail rows
var sample_wk_exer_no = new Array();
sample_wk_exer_no[0] = 12;
sample_wk_exer_no[1] = 63;

var sample_wk_cust_exer = new Array();
sample_wk_cust_exer[0] = "";
sample_wk_cust_exer[1] = "";

var sample_wk_exer_notes = new Array();
sample_wk_exer_notes[0] = "Legs are sore";
sample_wk_exer_notes[1] = "Great burn";

var sample_wk_weight = new Array();
sample_wk_weight[0] = new Array();
sample_wk_weight[0][1] = 150;
sample_wk_weight[0][2] = 150;
sample_wk_weight[0][3] = 150;
sample_wk_weight[1] = new Array();
sample_wk_weight[1][1] = 45;
sample_wk_weight[1][2] = 45;

var sample_wk_reps = new Array();
sample_wk_reps[0] = new Array();
sample_wk_reps[0][1] = 12;
sample_wk_reps[0][2] = 10;
sample_wk_reps[0][3] = 9;
sample_wk_reps[1] = new Array();
sample_wk_reps[1][1] = 15;
sample_wk_reps[1][2] = 11;

/*
var detail_content = [{exercise_id: 1,
					   set_details: [{set_weight: 150,
					   				  set_reps: 12},
					   				 {set_weight: 150,
					   				  set_reps: 10},
					   				 {set_weight: 150,
					   				  set_reps: 9}]
					  },
					  {exercise_id: 3,
					   set_details: [{set_weight: 45,
					   				  set_reps: 15},
					   				 {set_weight: 45,
					   				  set_reps: 11}]
					  }
					 ];

*/
//window.onload = initPage;

/*
function initPage()
{
	initBaseElements();
	if (typeof(initWork) == "function") initWork();
}
*/

function initBaseElements(f_editable_param)
{
	if (typeof(f_editable_param) == "undefined") f_editable_param = true;

	f_editable = f_editable_param;
	
	//init base controls for detail editing
//clone base elements
	//exercise
	var elem_detail_exercise_temp = document.getElementById("bwt_exercise_select_base");
	if (elem_detail_exercise_temp) elem_detail_exercise_base = elem_detail_exercise_temp.cloneNode(true);
	//custom exercise
	var elem_detail_custom_exer_temp = document.getElementById("bwt_custom_exercise_base");
	if (elem_detail_custom_exer_temp) elem_detail_custom_exer_base = elem_detail_custom_exer_temp.cloneNode(true);
	//weight
	var elem_detail_weight_temp = document.getElementById("bwt_set_weight_base");
	if (elem_detail_weight_temp) elem_detail_weight_base = elem_detail_weight_temp.cloneNode(true);
	//reps
	var elem_detail_reps_temp = document.getElementById("bwt_set_reps_base");
	if (elem_detail_reps_temp) elem_detail_reps_base = elem_detail_reps_temp.cloneNode(true);
	
	//initialize 'hold' vars
	elem_exercise_hold = elem_detail_exercise_base;
	elem_custom_exer_hold = elem_detail_custom_exer_base;
	elem_weight_hold = elem_detail_weight_base;
	elem_reps_hold = elem_detail_reps_base;
}


function deleteControlRow()
{
	var elem = document.getElementById("bwt_deleting");
	if (elem) {
	
		elem.parentNode.removeChild(elem);
	}
	processButtons(button_row, button_set);
}


function resetButtons()
{
	processButtons(button_row, button_set);
}

function buildDetailRows()
{
	//build each detail row
	if (f_sample_rows) { //use sample arrays
	
		var wk_exer_no_use = sample_wk_exer_no;
		var wk_cust_exer_use = sample_wk_cust_exer;
		var wk_exer_notes_use = sample_wk_exer_notes;
		var wk_weight_use = sample_wk_weight;
		var wk_reps_use = sample_wk_reps;
	}
	else { //use actual values
	
		var wk_exer_no_use = wk_exer_no;
		var wk_cust_exer_use = wk_cust_exer;
		var wk_exer_notes_use = wk_exer_notes;
		var wk_weight_use = wk_weight;
		var wk_reps_use = wk_reps;
	}
	for (var exer_idx = 0; exer_idx < wk_exer_no_use.length; exer_idx ++) {
	
		var exer_no = exer_idx + 1;
		var exer_id = wk_exer_no_use[exer_idx];
		var cust_exer_text = wk_cust_exer_use[exer_idx];
		//set exercise text
		var exer_text = "";
		var elem_exer = document.getElementById("bwt_exercise_select_base");
		if (elem_exer) {
		
			if (exer_id > 0) { //exercise is in standard list
			
				exer_text = optionSearch(elem_exer, exer_id);
				f_custom_exercise = false;
			}
			else { //custom exercise

				exer_text = cust_exer_text;
				f_custom_exercise = true;
			}
		}
		var exer_notes = wk_exer_notes_use[exer_idx];
		for (var set_idx = 0; set_idx < wk_weight_use[exer_idx].length; set_idx ++) {
			
			var set_no = set_idx + 1;
			var set_weight = wk_weight_use[exer_idx][set_idx];
			var set_reps = wk_reps_use[exer_idx][set_idx];
			//update global vars
			current_exercise_no = exer_no;
			current_exercise_id = exer_id;
			current_exercise_notes = exer_notes;
			current_exercise_text = exer_text;
			current_set_no = set_no;
			if ((current_mode == 'h') && (current_type == 'w')) {
			
				if (f_metric) {

					var weight_mode = 'm';
				}
				else {
				
					var weight_mode = 'n';
				}
				current_set_weight = processWeight(Number(set_weight), weight_mode);
				current_set_reps = set_reps;
			}
			else {
			
				current_set_weight = "";
				current_set_reps = "";
			}
			//build detail row
		//	f_custom_exercise = false;
			buildDetailRow();
		}
	}
}

/*
		exercise select
						<select class="bwt_detail_select_fixed" id="bwt_exercise_{line_no}"
								name="bwt_exercise[{exercise_no}]">
							<option value="0">(Choose Exercise)</option>
							<option value="1">Barbell Bench Press - Medium Grip</option>
							<option value="2">Barbell Curl</option>
							<option value="3">Butterfly</option>
							<option value="4">Preacher Curl</option>
							<option value="5">Spider Curl</option>
						</select>

		weight input
						<input type="text" class="bwt_detail_set_weight" id="bwt_set_weight_{line_no}"
								name="bwt_set_weight[{exercise_no}][{set_no}]" />
		
		reps input
						<input type="text" class="bwt_detail_set_reps" id="bwt_set_reps_{line_no}"
								name="bwt_set_reps[{exercise_no}][{set_no}]" />
						
		first set row
				<tr>
					<td class="bwt_detail_cell bwt_det_no bwt_line_above">
						1
					</td>
					<td class="bwt_detail_cell bwt_det_exercise bwt_line_above">
						Chest: Barbell: Bench Press - Medium Grip
					</td>
					<td class="bwt_detail_cell bwt_det_set bwt_line_above">
						#1
					</td>
					<td class="bwt_detail_cell bwt_det_weight bwt_line_above">
						150
					</td>
					<td class="bwt_detail_cell bwt_det_rep bwt_line_above">
						10
					</td>
				</tr>

		second+ set row
				<tr>
					<td class="bwt_detail_cell bwt_det_no">
					</td>
					<td class="bwt_detail_cell bwt_det_exercise bwt_line_above_dotted">
						Chest: Barbell: Bench Press - Medium Grip
					</td>
					<td class="bwt_detail_cell bwt_det_set bwt_line_above_dotted">
						#2
					</td>
					<td class="bwt_detail_cell bwt_det_weight bwt_line_above_dotted">
						150
					</td>
					<td class="bwt_detail_cell bwt_det_rep bwt_line_above_dotted">
						10
					</td>
				</tr>

		control button row
				<tr>
					<td colspan="5">
						<div class="bwt_wrapper" id="bwt_detail_row_controls_1">
							<div class="bwt_row_controls">
								<div class="bwt_control_button_container_r">
									<input type="button" class="bwt_control_button" value="Cancel" />
								</div>
								<div class="bwt_control_button_container_l">
									<input type="button" class="bwt_control_button" value="Edit" />
								</div>
								<div class="bwt_control_button_container_l">
									<input type="button" class="bwt_control_button" value="Delete" />
								</div>
								<div class="bwt_control_button_container_l">
									<input type="button" class="bwt_control_button" value="Save" />
								</div>
							</div>
						</div>
					</td>
				</tr>
				
*/				
function buildDetailRow()
{
//BEGIN - Add Row

	var elem_input;
	var elem_notes;
	
	//build row contents
	var elem_table = document.getElementById("bwt_routine_details");
	if (elem_table) {

		if (current_set_no == 1) { //first set
		//if (current_exercise_no != previous_exercise_no) {
		
			//exercise no
			var exer_no_line_class = " bwt_line_above"; //leading space required
			var exer_no_text = String(current_exercise_no);
			//exercise
			var exer_text_line_class = " bwt_line_above"; //leading space required
			var exer_text = current_exercise_text;
			var exer_notes = current_exercise_notes;
			//2009-01-07:wje - Prepare for display
			var exer_notes = exer_notes.replace(/<br \/>|<br>/g, "\r\n");
			var exer_notes_disp = exer_notes.replace(/\r\n|[\r\n]/g, "<br />");
			//other
			var other_line_class = " bwt_line_above"; //leading space required

			//previous_exercise_no = current_exercise_no;
		}
		else {
		
			//exercise no
			var exer_no_line_class = "";
			var exer_no_text = "";
			//exercise
			if (f_repeat_exer_text) {
			
				var exer_text_line_class = " bwt_line_above_dotted"; //leading space required
				var exer_text = current_exercise_text;
			}
			else {
			
				var exer_text_line_class = "";
				var exer_text = "";
			}
			//other
			var other_line_class = " bwt_line_above_dotted"; //leading space required
		}
	
		//create new row
		var f_hide_row;
		if (f_editable) {
		
			if ((current_set_no == 1) && (current_exercise_no == 1)) { //first set of first exercise

				f_hide_row = false;
			}
			else {
			
				f_hide_row = true;
			}
		}
		else {
		
			f_hide_row = false;
		}
		var elem_row_created = document.createElement('tr');
		if (elem_row_created) {

			//add row element attribs
			elem_row_created.className = "bwt_detail_row_normal";
			//elem_row_created.setAttribute("enable_hover", "true");
			if (f_editable) {
			
				elem_row_created.onmouseover = detailRowRolloverOnEvt;
				elem_row_created.onmouseout = detailRowRolloverOffEvt;
				elem_row_created.onclick = detailRowClickEvt;
			}

			var row_id = "bwt_detail_row_" + String(current_exercise_no) + '_' + String(current_set_no);
			elem_row_created.id = row_id;
			
			if (f_hide_row) {
			
				elem_row_created.style.display = "none";
			}
		
			//build cells
			var elem_cell;
			var class_name;
	
			//exercise no
			elem_cell = document.createElement('td');
			if (elem_cell) {
			
				class_name = 'bwt_detail_cell bwt_det_no' + exer_no_line_class;
				elem_cell.className = class_name;
				//elem_cell.innerHTML = exer_no_text;
				elem_cell.innerHTML = '<span id="bwt_exer_no_text_' + 
									  String(current_exercise_no) + '_' + String(current_set_no) + '">' +
									  exer_no_text + '</span>';
				elem_row_created.appendChild(elem_cell);
			}
			//exercise name
			elem_cell = document.createElement('td');
			if (elem_cell) {
			
				class_name = 'bwt_detail_cell bwt_det_exercise' + exer_text_line_class;
				elem_cell.className = class_name;
				elem_cell.innerHTML = '<span id="bwt_exercise_text_' + 
									  String(current_exercise_no) + '_' + String(current_set_no) + '">' +
									  exer_text + '</span>';
				elem_row_created.appendChild(elem_cell);

				if (current_set_no == 1) {
				
					//create hidden input for exercise no
					elem_input = document.createElement('input');
					if (elem_input) {
					
						elem_input.type = "hidden";
						//alert("Exercise #: " + current_exercise_no);
						elem_input.id = "bwt_exercise_no_" + String(current_exercise_no);
						elem_input.name = "bwt_exercise_no[]";
						elem_input.value = current_exercise_id;
						elem_table.appendChild(elem_input);
						//elem_row_created.appendChild(elem_input);
					}
					//create hidden input for exercise type flag (std = 0; custom = 1)
					elem_input = document.createElement('input');
					if (elem_input) {
					
						elem_input.type = "hidden";
						elem_input.id = "bwt_use_cust_" + String(current_exercise_no);
						elem_input.name = "bwt_use_cust[]";
						elem_input.value = Number(f_custom_exercise);
						elem_table.appendChild(elem_input);
						//elem_row_created.appendChild(elem_input);
					}
					//create hidden input for custom exercise text
					elem_input = document.createElement('input');
					if (elem_input) {
					
						elem_input.type = "hidden";
						elem_input.id = "bwt_custom_exercise_" + String(current_exercise_no);
						elem_input.name = "bwt_custom_exercise[]";
						if (f_custom_exercise) {
						
							var custom_text = current_exercise_text;
						}
						else {
						
							var custom_text = "";
						}
						elem_input.value = custom_text;
						elem_table.appendChild(elem_input);
						//elem_row_created.appendChild(elem_input);
					}
					//create hidden field for exercise notes
					elem_notes = document.createElement('textarea');
					if (elem_notes) {
					
						elem_notes.style.display = "none";
						elem_notes.id = "bwt_exercise_notes_" + String(current_exercise_no);
						elem_notes.name = "bwt_exercise_notes[]";
						elem_notes.innerHTML = exer_notes;
						elem_table.appendChild(elem_notes);
						//elem_row_created.appendChild(elem_input);
					}
				}
			}
			//set #
			elem_cell = document.createElement('td');
			if (elem_cell) {
			
				class_name = 'bwt_detail_cell bwt_det_set' + other_line_class;
				elem_cell.className = class_name;
				//elem_cell.innerHTML = '#' + String(current_set_no);
				elem_cell.innerHTML = '<span id="bwt_set_no_text_' + 
									  String(current_exercise_no) + '_' + String(current_set_no) + '">' +
									  '#' + String(current_set_no) + '</span>';
				elem_row_created.appendChild(elem_cell);

				//create hidden input for set#
				elem_input = document.createElement('input');
				if (elem_input) {
				
					elem_input.type = "hidden";
					elem_input.id = "bwt_set_no_" + String(current_exercise_no) + '_' + String(current_set_no);
					//elem_input.name = "bwt_weight[" + String(current_exercise_no) + "][]";
					elem_input.name = "bwt_set_no[" + String(current_exercise_no - 1) + "][]";
					elem_input.value = current_set_no - 1;
					//elem_table.appendChild(elem_input);
					//elem_row_created.appendChild(elem_input);
					elem_cell.appendChild(elem_input);
				}
			}
			//set weight
			elem_cell = document.createElement('td');
			if (elem_cell) {
			
				var current_set_weight_text = (current_set_weight == "") ? "&nbsp;" : String(current_set_weight);
				class_name = 'bwt_detail_cell bwt_det_weight' + other_line_class;
				elem_cell.className = class_name;
				elem_cell.innerHTML = '<span id="bwt_weight_text_' + 
									  String(current_exercise_no) + '_' + String(current_set_no) + '">' +
									  current_set_weight_text + '</span>';
				//elem_cell.innerHTML = String(current_set_weight);
				elem_row_created.appendChild(elem_cell);
				
				//create hidden input for weight
				elem_input = document.createElement('input');
				if (elem_input) {
				
					elem_input.type = "hidden";
					elem_input.id = "bwt_weight_" + String(current_exercise_no) + '_' + String(current_set_no);
					//elem_input.name = "bwt_weight[" + String(current_exercise_no) + "][]";
					elem_input.name = "bwt_weight[" + String(current_exercise_no - 1) + "][]";
					elem_input.value = current_set_weight;
					//elem_table.appendChild(elem_input);
					//elem_row_created.appendChild(elem_input);
					elem_cell.appendChild(elem_input);
				}
			}
			//set reps
			elem_cell = document.createElement('td');
			if (elem_cell) {
			
				var current_set_reps_text = (current_set_reps == "") ? "&nbsp;" : String(current_set_reps);
				class_name = 'bwt_detail_cell bwt_det_rep' + other_line_class;
				elem_cell.className = class_name;
				elem_cell.innerHTML = '<span id="bwt_reps_text_' + 
									  String(current_exercise_no) + '_' + String(current_set_no) + '">' +
									  current_set_reps_text + '</span>';
				//elem_cell.innerHTML = String(current_set_reps);
				elem_row_created.appendChild(elem_cell);

				//create hidden input for reps
				elem_input = document.createElement('input');
				if (elem_input) {
				
					elem_input.type = "hidden";
					elem_input.id = "bwt_reps_" + String(current_exercise_no) + '_' + String(current_set_no);
					//elem_input.name = "bwt_reps[" + String(current_exercise_no) + "][]";
					elem_input.name = "bwt_reps[" + String(current_exercise_no - 1) + "][]";
					elem_input.value = current_set_reps;
					//elem_table.appendChild(elem_input);
					//elem_row_created.appendChild(elem_input);
					elem_cell.appendChild(elem_input);
				}
			}

			if (current_set_no == 1) { //first set of exercise
			
				//append empty row to table
				var insert_row_num = elem_table.rows.length;
			}
			else {
			
				//insert empty row before notes row
				var insert_row_num = elem_table.rows.length - 1;
			}
			var elem_row_empty = elem_table.insertRow(insert_row_num);
			//replace empty row with created row
			if (elem_row_empty) {
			
				elem_row_empty.parentNode.replaceChild(elem_row_created, elem_row_empty);
			}
			if (f_hide_row) {
			
				new Effect.Appear(row_id, {duration: .25});
			}
			
	//add control button row
			if (f_editable) {
			
				//create new row
				var elem_control_row_created = document.createElement('tr');
				if (elem_control_row_created) {

					//add row element attribs
					elem_control_row_created.className = "bwt_detail_row_normal";
					var control_row_id = "bwt_detail_row_controls_" +
										 String(current_exercise_no) + '_' + String(current_set_no);
					//elem_control_row_created.style.display = "none";
					elem_control_row_created.id = control_row_id;
					elem_control_row_created.onclick = detailRowClickEvt;
				
					//build cells
					var elem_control_cell;
					
					//exercise no
					elem_control_cell = document.createElement('td');
					if (elem_control_cell) {
					
						elem_control_cell.colSpan = "5";
						var elem_cell_items = new Array();
						elem_cell_items.push('<div class="bwt_wrapper" id="bwt_detail_row_control_wrapper_');
						elem_cell_items.push(String(current_exercise_no));
						elem_cell_items.push('_');
						elem_cell_items.push(String(current_set_no));
						elem_cell_items.push('" style="display:none;">');
						elem_cell_items.push('<div class="bwt_row_controls">');
						//cancel button
						elem_cell_items.push('<div class="bwt_control_button_container_r"');
						elem_cell_items.push(' id="bwt_control_button_container_cancel_');
						elem_cell_items.push(String(current_exercise_no));
						elem_cell_items.push('_');
						elem_cell_items.push(String(current_set_no));
						elem_cell_items.push('">');
						elem_cell_items.push('<input type="button" class="bwt_control_button"');
						elem_cell_items.push(' onclick="changeCancelMode(this);"');
						elem_cell_items.push(' value="Cancel" />');
						elem_cell_items.push('</div>');
						//edit button
						elem_cell_items.push('<div class="bwt_control_button_container_l"');
						elem_cell_items.push(' id="bwt_control_button_container_edit_');
						elem_cell_items.push(String(current_exercise_no));
						elem_cell_items.push('_');
						elem_cell_items.push(String(current_set_no));
						elem_cell_items.push('">');
						elem_cell_items.push('<input type="button" class="bwt_control_button"');
						elem_cell_items.push(' onclick="changeEditMode(this);"');
						elem_cell_items.push(' value="Edit" />');
						elem_cell_items.push('</div>');
						//save button
						elem_cell_items.push('<div class="bwt_control_button_container_l"');
						elem_cell_items.push(' id="bwt_control_button_container_save_');
						elem_cell_items.push(String(current_exercise_no));
						elem_cell_items.push('_');
						elem_cell_items.push(String(current_set_no));
						elem_cell_items.push('">');
						elem_cell_items.push('<input type="button" class="bwt_control_button"');
						elem_cell_items.push(' onclick="changeSaveMode(this);"');
						elem_cell_items.push(' value="Save" />');
						elem_cell_items.push('</div>');
						//delete button
						elem_cell_items.push('<div class="bwt_control_button_container_l"');
						elem_cell_items.push(' id="bwt_control_button_container_delete_');
						elem_cell_items.push(String(current_exercise_no));
						elem_cell_items.push('_');
						elem_cell_items.push(String(current_set_no));
						elem_cell_items.push('">');
						elem_cell_items.push('<input type="button" class="bwt_control_button"');
						elem_cell_items.push(' onclick="changeDeleteMode(this);"');
						elem_cell_items.push(' value="Delete" />');
						elem_cell_items.push('</div>');
						elem_cell_items.push('</div>');
						elem_cell_items.push('</div>');
						
						var cell_HTML = elem_cell_items.join('');
						elem_control_cell.innerHTML = cell_HTML;

						elem_control_row_created.appendChild(elem_control_cell);
					}

					if (current_set_no == 1) { //first set of exercise
					
						//append empty row to table
						var insert_control_row_num = elem_table.rows.length;
					}
					else {
					
						//insert empty row before notes row 
						var insert_control_row_num = elem_table.rows.length - 1;
					}
					var elem_control_row_empty = elem_table.insertRow(insert_control_row_num);
					//replace empty row with created row 
					if (elem_control_row_empty) {
					
						elem_control_row_empty.parentNode.replaceChild(elem_control_row_created,
																	   elem_control_row_empty);
					}
				}
				
				//current_detail_line_no ++;
			}
		}
		if (current_set_no == 1) { //first set of exercise
		
			//append exercise notes row 
			elem_row_created = document.createElement('tr');
			if (elem_row_created) {
			
				elem_row_created.className = "bwt_detail_row_normal";
				if (f_editable) {
				
					elem_row_created.onmouseover = detailRowRolloverOnEvt;
					elem_row_created.onmouseout = detailRowRolloverOffEvt;
					elem_row_created.onclick = detailRowClickEvt;
				}

				var row_id = "bwt_exercise_notes_row_" + String(current_exercise_no);
				elem_row_created.id = row_id;
				//create exercise notes display content 
				elem_cell = document.createElement('td');
				if (elem_cell) {
				
					elem_cell.colSpan = detail_column_count;
					class_name = 'bwt_detail_cell bwt_det_exer_notes bwt_line_above_dotted';
					elem_cell.className = class_name;
					elem_cell.innerHTML = '<span id="bwt_exer_notes_text_' + 
										  String(current_exercise_no) + '">' +
										  exer_notes_disp + '</span>';
					elem_row_created.appendChild(elem_cell);
				}
				//insert empty row at end of table
				var insert_row_num = elem_table.rows.length;

				var elem_row_empty = elem_table.insertRow(insert_row_num);
				//replace empty row with created row 
				if (elem_row_empty) {
				
					elem_row_empty.parentNode.replaceChild(elem_row_created, elem_row_empty);
				}
			}
		}
	}
//END - Add Row 
}


function detailRowRolloverOnEvt(e)
{
	//check to see if changes enabled
	if (!f_enable_change) return false;
	
	var evt = (e) ? e : ((window.event) ? window.event : "");
	if (evt) {

		if (evt.stopPropagation) {
		
			evt.stopPropagation();
		}
		else if (typeof(evt.cancelBubble) != "undefined") {
		
			evt.cancelBubble = true;
		}
		var elem_target = getTarget(evt);
		while ((elem_target) && (elem_target.nodeName != "TR")) {
		
			elem_target = elem_target.parentNode;
		}
		if (elem_target) {
		
			detailRowRolloverOn(elem_target);
		}
	}
}

function detailRowRolloverOn(sender)
{
	if (sender === undefined) return false;

	//if (sender.getAttribute("enable_hover") == "true") {
	
		sender.className = "bwt_detail_row_highlight";
	//}
}


function detailRowRolloverOffEvt(e)
{
	//check to see if changes enabled
	if (!f_enable_change) return false;
	
	var evt = (e) ? e : ((window.event) ? window.event : "");
	if (evt) {

		if (evt.stopPropagation) {
		
			evt.stopPropagation();
		}
		else if (typeof(evt.cancelBubble) != "undefined") {
		
			evt.cancelBubble = true;
		}
		var elem_target = getTarget(evt);
		while ((elem_target) && (elem_target.nodeName != "TR")) {
		
			elem_target = elem_target.parentNode;
		}
		if (elem_target) {
		
			detailRowRolloverOff(elem_target);
		}
	}
}

function detailRowRolloverOff(sender)
{
	if (sender === undefined) return false;
	
	//if (sender.getAttribute("enable_hover") == "true") {
	
		sender.className = "bwt_detail_row_normal";
	//}
}


function detailRowClickEvt(e)
{
	var evt = (e) ? e : ((window.event) ? window.event : "");
	if (evt) {

		if (evt.stopPropagation) {
		
			evt.stopPropagation();
		}
		else if (typeof(evt.cancelBubble) != "undefined") {
		
			evt.cancelBubble = true;
		}
		var elem_target = getTarget(evt);
		while ((elem_target) && (elem_target.nodeName != "TR")) {
		
			//ignore button click
			if ((elem_target.nodeName == "INPUT") || (elem_target.nodeName == "SELECT")) return false;
			elem_target = elem_target.parentNode;
		}
		if (elem_target) {
		
			detailRowClick(elem_target);
		}
	}
}

function detailRowClick(sender)
{
	if (sender === undefined) return false;

	//check to see if changes enabled
	if (!f_enable_change) { //already in 'change' mode; need to cancel

		//check for edit mode (save button enabled)
		if (f_enable_save) return false;
		
		//get row_no and set_no
		var id_parts = parseAttrib(sender.id);
		if (id_parts) {
		
			var row_no = id_parts.sfx_1;
			var set_no = id_parts.sfx_2;
			if ((row_no != current_change_row) || (set_no != current_change_set)) return false;
			//call cancel routine
			changeCancelMode(row_no, set_no);
			return;
		}
	}
	//enter 'change' mode...
	
	//disable hover
	//sender.setAttribute("enable_hover", "false");
	sender.className = "bwt_detail_row_change";
	//extract row #
	var id_parts = parseAttrib(sender.id);
	if (id_parts) {
	
		var row_no = id_parts.sfx_1;
		var set_no = id_parts.sfx_2;
		if ((row_no) && (set_no)) {

			current_change_row = row_no;
			current_change_set = set_no;
			if ((current_type == "t") && (set_no > 1)) {
			
				f_enable_edit = false;
			}
			else {
			
				f_enable_edit = true;
			}
			processButtons(row_no, set_no);
		
			var control_id = "bwt_detail_row_controls_" + row_no + "_" + set_no;
			var elem_control = document.getElementById(control_id);
			if (elem_control) {

				//new Effect.Appear(elem_control, {queue: 'end', duration: .1});
				elem_control.className = "bwt_detail_row_change";
			}
		
			var control_wrapper_id = "bwt_detail_row_control_wrapper_" + row_no + "_" + set_no;
			var elem_control_wrapper = document.getElementById(control_wrapper_id);
			if (elem_control_wrapper) {

				new Effect.SlideDown(elem_control_wrapper, {queue: 'end', duration: effect_duration});
			}
			//disable change
			f_enable_change = false;
		}
	}
}


function changeCancelMode(param, set_no, f_delete)
{
	if (param === undefined) return false;
	if (typeof(param) == "object") { //element

		var elem = param.parentNode;
		if (elem) {
		
			var id_parts = parseAttrib(elem.id);
			if (id_parts) {
			
				var row_no = id_parts.sfx_1;
				set_no = id_parts.sfx_2;
			}
		}
	}
	else if (typeof(param) == "string") { //row_no

		var row_no = param;
	}
	if (f_delete === undefined) f_delete = false;
	
//reset edit fields
	//exercise
	var exer_id = elem_exercise_hold.id;
//	var exer_test = exer_id.substr(exer_id.length - 4, 4);
	var exer_test = exer_id.substring(exer_id.length - 4, exer_id.length);
	var custom_exer_id = elem_custom_exer_hold.id;
//	var custom_exer_test = custom_exer_id.substr(custom_exer_id.length - 4, 4);
	var custom_exer_test = custom_exer_id.substring(custom_exer_id.length - 4, custom_exer_id.length);
	if ((exer_test != "base") || (custom_exer_test != "base")) { //need to reset

		if (exer_test != "base") {
		
			elem_exercise_hold = elem_detail_exercise_base.parentNode.replaceChild(elem_exer_text, elem_detail_exercise_base);
		}
		else {
		
			elem_custom_exer_hold = elem_detail_custom_exer_base.parentNode.replaceChild(elem_exer_text, elem_detail_custom_exer_base);
		}
	}
	if (current_type == "w") {
		
		//weight
		var weight_id = elem_weight_hold.id;
	//	var weight_test = weight_id.substr(weight_id.length - 4, 4);
		var weight_test = weight_id.substring(weight_id.length - 4, weight_id.length);
		if (weight_test != "base") { //need to reset
		
			elem_weight_hold = elem_detail_weight_base.parentNode.replaceChild(elem_weight_text, elem_detail_weight_base);
		}
		//reps
		var reps_id = elem_reps_hold.id;
	//	var reps_test = reps_id.substr(reps_id.length - 4, 4);
		var reps_test = reps_id.substring(reps_id.length - 4, reps_id.length);
		if (reps_test != "base") { //need to reset
		
			elem_reps_hold = elem_detail_reps_base.parentNode.replaceChild(elem_reps_text, elem_detail_reps_base);
		}
	}
	
	//hide control row
	if ((row_no) && (set_no)) {
		
		//reset buttons
		f_enable_edit = true;
		f_enable_delete = true;
		f_enable_save = false;
		f_enable_cancel = true;
		button_row = row_no;
		button_set = set_no;
		
		var set_use = (f_delete) ? "0" : set_no;
		var control_wrapper_id = "bwt_detail_row_control_wrapper_" + row_no + "_" + set_use;
		var elem_control_wrapper = document.getElementById(control_wrapper_id);
		if (elem_control_wrapper) {

			if (f_delete) {
			
				new Effect.SlideUp(elem_control_wrapper, {queue: 'end',
														  duration: effect_duration,
														  afterFinish: deleteControlRow});
			}
			else {
			
				new Effect.SlideUp(elem_control_wrapper, {queue: 'end', duration: effect_duration,
														  afterFinish: resetButtons});
			}
		}
		//reset control row
		var control_id = "bwt_detail_row_controls_" + row_no + "_" + set_no;
		var elem_control = document.getElementById(control_id);
		if (elem_control) {

			//set class to 'normal'
			elem_control.className = "bwt_detail_row_normal";
		}
		//reset detail row
		var row_id = "bwt_detail_row_" + row_no + "_" + set_no;
		var elem_row = document.getElementById(row_id);
		if (elem_row) {

			//set class to 'normal'
			elem_row.className = "bwt_detail_row_normal";
			//enable hover
			//elem_row.setAttribute("enable_hover", "true");
		}
		//update buttons
	//	processButtons(row_no, set_no);
		//enable change
		f_enable_change = true;
		//reset change vals
		current_change_row = 0;
		current_change_set = 0;
		f_entry_submit_valid = true;
	}
}


function changeEditMode(elem)
{
	if (elem === undefined) return false;

	elem = elem.parentNode;
	if (elem) {
	
		var id_parts = parseAttrib(elem.id);
		if (id_parts) {
		
			var row_no = id_parts.sfx_1;
			var set_no = id_parts.sfx_2;
		}
	}
	
	if ((row_no) && (set_no)) {
	
		//hide edit button
		f_enable_edit = false;
		//show save button
		f_enable_save = true;
		//hide delete button
		f_enable_delete = false;
		//update buttons
		processButtons(row_no, set_no);
		f_entry_submit_valid = false;
		
	//change text display to controls
		//exercise

	//get refs to text fields
		if (set_no == 1) {
		
			//exercise
			var exer_text_id = "bwt_exercise_text_" + row_no + "_" + set_no;
			elem_exer_text = document.getElementById(exer_text_id);
			var exer_width = elem_exer_text.parentNode.clientWidth - 4 + "px";
		}
		if (current_type == "w") {
		
			//weight
			var weight_text_id = "bwt_weight_text_" + row_no + "_" + set_no;
			elem_weight_text = document.getElementById(weight_text_id);
			var weight_width = elem_weight_text.parentNode.clientWidth - 4 + "px";
			//reps
			var reps_text_id = "bwt_reps_text_" + row_no + "_" + set_no;
			elem_reps_text = document.getElementById(reps_text_id);
			var reps_width = elem_reps_text.parentNode.clientWidth - 4 + "px";
		}
		
	//get values
		if (set_no == 1) {
		
			//exercise no
			var exer_no_id = "bwt_exercise_no_" + row_no;
			var elem_exer_no = document.getElementById(exer_no_id);
			if (elem_exer_no) var exer_no = elem_exer_no.value;
			//custom exercise
			var custom_exer_id = "bwt_custom_exercise_" + row_no;
			var elem_custom_exer = document.getElementById(custom_exer_id);
			if (elem_custom_exer) var custom_text = elem_custom_exer.value;
			//if (custom_text) {
			if (exer_no == '0') {
			
				//var f_custom = true;
				f_custom_exercise = true;
			}
			else {
			
				//var f_custom = false;
				f_custom_exercise = false;
			}
		}
		if (current_type == "w") {
		
			//weight
			var weight_id = "bwt_weight_" + row_no + "_" + set_no;
			var elem_weight = document.getElementById(weight_id);
			if (elem_weight) {
			
				var weight = elem_weight.value;
				if (weight == " ") weight = "";
			}
			//reps
			var reps_id = "bwt_reps_" + row_no + "_" + set_no;
			var elem_reps = document.getElementById(reps_id);
			if (elem_reps) {
			
				var reps = elem_reps.value;
				if (reps == " ") reps = "";
			}
		}
		
	//set base field values
		if (set_no == 1) {

			if (f_custom_exercise) {
			
				//custom exercise
				elem_detail_custom_exer_base.value = custom_text;
			}
			else {
			
				//exercise no
				elem_detail_exercise_base.value = exer_no;
			}
		}
		if (current_type == "w") {
		
			//weight
			elem_detail_weight_base.value = weight;
			//reps
			elem_detail_reps_base.value = reps;
		}
		
	//exchange base fields for text fields
		//exercise
		if (set_no == 1) { //only allow editing of exercise if working with first set
		
			if (f_custom_exercise) {
			
				if ((elem_exer_text) && (elem_detail_custom_exer_base)) {
				
					elem_detail_custom_exer_base.style.width = exer_width;
					elem_custom_exer_hold = elem_exer_text.parentNode.replaceChild(elem_detail_custom_exer_base, elem_exer_text);
				}
			}
			else {
			
				if ((elem_exer_text) && (elem_detail_exercise_base)) {
				
					elem_detail_exercise_base.style.width = exer_width;
					elem_exercise_hold = elem_exer_text.parentNode.replaceChild(elem_detail_exercise_base, elem_exer_text);
				}
			}
		}
		if (current_type == "w") {
		
			//weight
			if ((elem_weight_text) && (elem_detail_weight_base)) {
			
				elem_detail_weight_base.style.width = weight_width;
				elem_weight_hold = elem_weight_text.parentNode.replaceChild(elem_detail_weight_base, elem_weight_text);
			}
			//reps
			if ((elem_reps_text) && (elem_detail_reps_base)) {
			
				elem_detail_reps_base.style.width = reps_width;
				elem_reps_hold = elem_reps_text.parentNode.replaceChild(elem_detail_reps_base, elem_reps_text);
			}
		}
		if (set_no == 1) {

			if (f_custom_exercise) {
			
				elem_detail_custom_exer_base.focus();
				elem_detail_custom_exer_base.select();
			}
			else {
			
				elem_detail_exercise_base.focus();
			}
		}
		else {
		
			elem_detail_weight_base.focus();
			elem_detail_weight_base.select();
		}
	}
}


function changeSaveMode(elem)
{
	if (elem === undefined) return false;

	elem = elem.parentNode;
	if (elem) {
	
		var id_parts = parseAttrib(elem.id);
		if (id_parts) {
		
			var row_no = id_parts.sfx_1;
			var set_no = id_parts.sfx_2;
		}
	}
	
	if ((row_no) && (set_no)) {

	//update values
		//exercise no
		if (set_no == 1) {

		//update hidden inputs
			if (f_custom_exercise) {
			
				//custom exercise
				var custom_text = elem_detail_custom_exer_base.value;
				var custom_exer_id = "bwt_custom_exercise_" + row_no;
				var elem_custom_exer = document.getElementById(custom_exer_id);
				if (elem_custom_exer) elem_custom_exer.value = custom_text;
			}
			else {
			
				//exercise no
				var exer_no = elem_detail_exercise_base.value;
				var exer_index = elem_detail_exercise_base.selectedIndex;
				var exer_no_id = "bwt_exercise_no_" + row_no;
				var elem_exer_no = document.getElementById(exer_no_id);
				if (elem_exer_no) elem_exer_no.value = exer_no;
			}
		/*
			//if (custom_text) {
			if (exer_no == '0') {
			
				var f_custom = true;
			}
			else {
			
				var f_custom = false;
			}
		*/	
			//update text
			if (f_custom_exercise) {
			
				var new_text = elem_detail_custom_exer_base.value;
				elem_custom_exer_hold.innerHTML = new_text;
			}
			else {
			
				//var new_text = elem_detail_exercise_base.options[exer_no].text;
				var new_text = elem_detail_exercise_base.options[exer_index].text;
				elem_exercise_hold.innerHTML = new_text;
			}

			if (f_repeat_exer_text) {
			
				//update other sets' text values for this exercise
				var current_id = "bwt_detail_row_" + row_no + "_" + set_no;
				var elem_current = document.getElementById(current_id);
				if (elem_current) {
				
					var elem_base = elem_current;
					var elem_next;
					while (elem_next = elem_base.nextSibling) {
					
						var next_id_parts = parseAttrib(elem_next.id);
						if (next_id_parts) {
						
							var next_base = next_id_parts.base;
							if (next_base == "bwt_detail_row") {
							
								var next_row_no = next_id_parts.sfx_1;
								var next_set_no = next_id_parts.sfx_2;
								
								if (next_row_no == row_no) {
								
									var exer_text_id = "bwt_exercise_text_" + next_row_no + "_" + next_set_no;
									var elem_exer_text = document.getElementById(exer_text_id);
									if (elem_exer_text) {
									
										elem_exer_text.innerHTML = new_text;
									}
								}
								else break;
							}
						}
						elem_base = elem_next;
					}
				}
			}
		}
		if (current_type == "w") {
		
		//weight
			var weight = elem_detail_weight_base.value;
			if (weight == "") weight = " ";
			//update hidden input
			var weight_id = "bwt_weight_" + row_no + "_" + set_no;
			var elem_weight = document.getElementById(weight_id);
			if (elem_weight) elem_weight.value = weight;
			//update text
			elem_weight_hold.innerHTML = String(weight);
		//reps
			var reps = elem_detail_reps_base.value;
			if (reps == "") reps = " ";
			//update hidden input
			var reps_id = "bwt_reps_" + row_no + "_" + set_no;
			var elem_reps = document.getElementById(reps_id);
			if (elem_reps) elem_reps.value = reps;
			//update text
			elem_reps_hold.innerHTML = String(reps);
		}

		changeCancelMode(row_no, set_no);
	}
}


function changeDeleteMode(elem)
{
	if (elem === undefined) return false;
	//confirmation
	if (!confirm("Are you sure you wish to delete this row?")) return false;
	//alert("Delete");
	//return;

	elem = elem.parentNode;
	if (elem) {
	
		var id_parts = parseAttrib(elem.id);
		if (id_parts) {
		
			var row_no = id_parts.sfx_1;
			var set_no = id_parts.sfx_2;
		}
	}
	
	if ((row_no) && (set_no)) {

		//return to 'normal' mode
		//changeCancelMode(row_no, set_no);
	/*
		if (set_no == 1) {
		
			//save exer_no_text
			var exer_text_id = "bwt_exer_no_text_" + row_no + '_' + set_no;
			var elem_exer_text = document.getElementById(exer_text_id);
			if (elem_exer_text) {
			
				var exer_no_text = elem_exer_text.innerHTML;
			}
		}
	*/	
		if (!f_repeat_exer_text) {
	
			if (set_no == 1) {
			
				//save exer_text
				var exer_text_id = "bwt_exercise_text_" + row_no + '_' + set_no;
				var elem_exer_text = document.getElementById(exer_text_id);
				if (elem_exer_text) {
				
					var exer_text = elem_exer_text.innerHTML;
				}
			}
		}

		//remove detail row
		var row_id = "bwt_detail_row_" + row_no + "_" + set_no;
		var elem_row = document.getElementById(row_id);
		if (elem_row) {

			//remove
			elem_row.parentNode.removeChild(elem_row);
		}
		
		//update other sets' id and name attribs for this exercise
		var control_id = "bwt_detail_row_controls_" + row_no + "_" + set_no;
		var elem_control = document.getElementById(control_id);
		if (elem_control) {

			//change id to identify for future deletion
			elem_control.id = "bwt_deleting";
			//change id's to prevent name conflict
			walkElements(elem_control, row_no, "0");
			var elem_base = elem_control;
			var elem_next = elem_base.nextSibling;

		//set 'last' flags
			//last row
		//	var f_last_row = true;
			//last set
			var f_last_set = true;
			//only set
			if (set_no == 1) var f_only_set = true;
			else var f_only_set = false;
			//var elem_hold = null;
			var loop_counter = 0;
			if (elem_next) {

			//	f_last_row = false;
				//elem_hold = elem_next;
				do {
				
					var next_id_parts = parseAttrib(elem_next.id);
					if (next_id_parts) {
					
						var next_base = next_id_parts.base;
						var f_walk_elements = false;
						if ((next_base == "bwt_detail_row") ||
							(next_base == "bwt_detail_row_controls") ||
							(next_base == "bwt_exercise_notes_row")) {
						
							if ((next_base == "bwt_detail_row") ||
								(next_base == "bwt_detail_row_controls")) {

								var next_row_no = next_id_parts.sfx_1;
								var next_set_no = next_id_parts.sfx_2;
								
								if (next_row_no == row_no) {

									//row
									var f_adjust_row = true;
									var new_row_no = next_row_no;
									//set
									f_last_set = false;
									f_only_set = false;
									var f_adjust_set = true;
									var new_set_no = String(next_set_no - 1);
								}
								else {
								
									if (f_only_set) {
									
										//row
										var f_adjust_row = false;
										var new_row_no = String(next_row_no - 1);
										//set
										var f_adjust_set = false;
										var new_set_no = next_set_no;
									}
									else {
									
										break;
									}
								}
								
								if ((!loop_counter) && (f_only_set)) {
								
									removeCommonExerciseElements(new_row_no);
								}
								f_walk_elements = true;
							}
							else { //exercise notes row
							
								if (loop_counter) {
								
									f_walk_elements = true;
									new_set_no = null;
								}
							}
							
							if (f_walk_elements) {
							
								//walk through elements and update attribs
								walkElements(elem_next, new_row_no, new_set_no);
							}
							if (next_base == "bwt_detail_row") {
								
								if (new_set_no == 1) {
								
									//update exer_no_text
									var exer_no_text_id = "bwt_exer_no_text_" + new_row_no + '_' + new_set_no;
									elem_exer_no_text = document.getElementById(exer_no_text_id);
									if (elem_exer_no_text) {
									
										elem_exer_no_text.innerHTML = new_row_no;
									}

									if (f_only_set) {
									
										//update hidden exercise no
										var hidden_id = "bwt_exercise_no_" + next_row_no;
										var elem_hidden = document.getElementById(hidden_id);
										if (elem_hidden) {
										
											updateElementAttribs(elem_hidden, new_row_no);
										}
										//update hidden custom exercise flag
										var custom_hidden_flag_id = "bwt_use_cust_" + next_row_no;
										var elem_custom_hidden_flag = document.getElementById(custom_hidden_flag_id);
										if (elem_custom_hidden_flag) {
										
											updateElementAttribs(elem_custom_hidden_flag, new_row_no);
										}
										//update hidden custom exercise
										var custom_hidden_id = "bwt_custom_exercise_" + next_row_no;
										var elem_custom_hidden = document.getElementById(custom_hidden_id);
										if (elem_custom_hidden) {
										
											updateElementAttribs(elem_custom_hidden, new_row_no);
										}
										//update hidden exercise notes
										var hidden_notes_id = "bwt_exercise_notes_" + next_row_no;
										var elem_hidden_notes = document.getElementById(hidden_notes_id);
										if (elem_hidden_notes) {
										
											updateElementAttribs(elem_hidden_notes, new_row_no);
										}
									}
									if (f_adjust_row) {

										//adjust cell class names
										var elem_cell = getFirstChild(elem_next);
										while (elem_cell) {
										
											if (elem_cell.nodeName == "TD") {
											
												do {
												
													if (elem_cell.nodeName == "TD") {
													
														//remove dotted line
														addRemoveClassName(elem_cell, "bwt_line_above_dotted", "remove");
														//add solid line
														addRemoveClassName(elem_cell, "bwt_line_above");
													}
												
												} while(elem_cell = getNextSibling(elem_cell));
											}
											else {
											
												elem_cell = getFirstChild(elem_cell);
											}
										}
										if (!f_repeat_exer_text) {
									
											//update exer_text
											var exer_text_id = "bwt_exercise_text_" + new_row_no + '_' + new_set_no;
											elem_exer_text = document.getElementById(exer_text_id);
											if (elem_exer_text) {
											
												elem_exer_text.innerHTML = exer_text;
											}
										}
									}
								}

								if (f_adjust_set) {
								
									//update set_no_text (using old set_no, because id should have already been changed
									var set_text_id = "bwt_set_no_text_" + new_row_no + "_" + new_set_no;
									var elem_set_text = document.getElementById(set_text_id);
									if (elem_set_text) {
									
										elem_set_text.innerHTML = "#" + new_set_no;
									}
								}
							}
						}
						elem_base = elem_next;
					}
					if (next_base != "bwt_exercise_notes_row") {
					
						loop_counter ++;
					}
					
				} while (elem_next = elem_base.nextSibling);
			}
			if (f_only_set) {

				if (!loop_counter) { //only one valid row in loop
				
					removeCommonExerciseElements(row_no);
				}
				//update current exercise no
				current_exercise_no --;
			}

			//remove control row
			//elem_control.parentNode.removeChild(elem_control);
		}
		//return to 'normal' mode and delete control row
		changeCancelMode(row_no, set_no, true);
		var elem_table = document.getElementById("bwt_routine_details");
		if (elem_table) {
		
			//check to see if table is 'empty'
			if (elem_table.rows.length <= empty_table_rows) {
			
				//disable 'save' button
				elem_save.disabled = true;
			}
		}
	}
}


function removeCommonExerciseElements(row_no)
{
	//remove exercise notes row 
	var notes_id = "bwt_exercise_notes_row_" + row_no;
	var elem_notes = document.getElementById(notes_id);
	if (elem_notes) {
	
		elem_notes.parentNode.removeChild(elem_notes);
	}
	//remove hidden exercise no
	var hidden_id = "bwt_exercise_no_" + row_no;
	var elem_hidden = document.getElementById(hidden_id);
	if (elem_hidden) {
	
		elem_hidden.parentNode.removeChild(elem_hidden);
	}
	//remove hidden custom exercise flag
	var custom_hidden_flag_id = "bwt_use_cust_" + row_no;
	var elem_custom_hidden_flag = document.getElementById(custom_hidden_flag_id);
	if (elem_custom_hidden_flag) {
	
		elem_custom_hidden_flag.parentNode.removeChild(elem_custom_hidden_flag);
	}
	//remove hidden custom exercise
	var custom_hidden_id = "bwt_custom_exercise_" + row_no;
	var elem_custom_hidden = document.getElementById(custom_hidden_id);
	if (elem_custom_hidden) {
	
		elem_custom_hidden.parentNode.removeChild(elem_custom_hidden);
	}
	//remove hidden exercise notes
	var hidden_notes_id = "bwt_exercise_notes_" + row_no;
	var elem_hidden_notes = document.getElementById(hidden_notes_id);
	if (elem_hidden_notes) {
	
		elem_hidden_notes.parentNode.removeChild(elem_hidden_notes);
	}
}


function walkElements(elem, row, set, recurse)
{
	var elem_child;

	if (elem === undefined) return false;
	if (row === undefined) return false;
	if (set === undefined) return false;
	
	if (recurse === undefined) recurse = false;
	
	while (elem) {
	
		//update element attribs
		updateElementAttribs(elem, row, set);
		
	//update children also
		//get first child
		elem_child = getFirstChild(elem);
		if (elem_child) {
			
			walkElements(elem_child, row, set, true);
		}
		if (recurse) {
			
			//get next sibling
			elem = getNextSibling(elem);
		}
		else {
		
			break;
		}
	}
}


function updateElementAttribs(elem, row, set)
{
	//update id
	if (elem.id) {
	
		var old_id = elem.id;
		var id_parts = parseAttrib(old_id);
		if (id_parts) {
		
			var old_base = id_parts.base;
			var old_row = id_parts.sfx_1;
			if ((typeof(set) == "undefined") || (!set)) {
			
				//only adjust down...
				if (old_row >= row) {
				
					var new_id = old_base + "_" + row;
					elem.id = new_id;
				}
			}
			else {
			
				var old_set = id_parts.sfx_2;
				//only adjust down...
				if ((old_row >= row) && (Number(old_set) >= Number(set))) {
				
					var new_id = old_base + "_" + row + "_" + set;
					elem.id = new_id;
				}
			}
		}
	}
	//update name
	if (elem.name) {
	
		var old_name = elem.name;
		var name_parts = parseAttrib(old_name, "name");
		if (name_parts) {
		
			var old_base = name_parts.base;
			var old_row = name_parts.sfx_1;
			var old_set = name_parts.sfx_2;
			if (old_row !== "") {
			
				var new_row = row - 1;
				//if ((old_row >= row) && (Number(old_set) > Number(set))) {
				if ((old_row >= new_row) && (old_set === "")) {
				
					var new_name = old_base + "[" + new_row + "][]";
					elem.name = new_name;
				}
			}
		}
	}
}


function processButtons(row_no, set_no)
{
	if ((row_no === undefined) || (set_no === undefined)) return false;
	
	var edit_id = "bwt_control_button_container_edit_" + row_no + "_" + set_no;
	var elem_edit = document.getElementById(edit_id);
	if (elem_edit) {
	
		if (f_enable_edit) { //show
		
			elem_edit.style.display = "";
		}
		else { //hide
		
			elem_edit.style.display = "none";
		}
	}
	var delete_id = "bwt_control_button_container_delete_" + row_no + "_" + set_no;
	var elem_delete = document.getElementById(delete_id);
	if (elem_delete) {
	
		if (f_enable_delete) { //show
		
			elem_delete.style.display = "";
		}
		else { //hide
		
			elem_delete.style.display = "none";
		}
	}
	var save_id = "bwt_control_button_container_save_" + row_no + "_" + set_no;
	var elem_save = document.getElementById(save_id);
	if (elem_save) {
	
		if (f_enable_save) { //show
		
			elem_save.style.display = "";
		}
		else { //hide
		
			elem_save.style.display = "none";
		}
	}
	var cancel_id = "bwt_control_button_container_cancel_" + row_no + "_" + set_no;
	var elem_cancel = document.getElementById(cancel_id);
	if (elem_cancel) {
	
		if (f_enable_cancel) { //show
		
			elem_cancel.style.display = "";
		}
		else { //hide
		
			elem_cancel.style.display = "none";
		}
	}
}


function parseAttrib(val, attr)
{
	if (val === undefined) return false;
	if (attr === undefined) attr = "id";
	var retval = null;
	var parts = {base: "",
				 sfx_1: "",
				 sfx_2: ""};
					  
	if (val) {
		
		//extract row and set sfx info
		if (attr == "id") {
		
			var re = /(.+?)(?:_(\d+))(?:_(\d+))?$/;
		}
		else if (attr == "name") {
		
			var re = /([^[]+?)(?:\[(\d+)?])(?:\[(\d+)?])?$/;
		}
		else return false;
		
		var matches = val.match(re);
		//if matching, extract suffix
		if (matches) {
			
			if (matches[1] !== undefined) { //name found
			
				parts.base = matches[1];
			}
			if (matches[2] !== undefined) { //row suffix found
			
				parts.sfx_1 = matches[2];
			}
			if (matches[3] !== undefined) { //set suffix found
			
				parts.sfx_2 = matches[3];
			}
		}
		retval = parts;
	}
	return retval;
}


//weight	: weight value
//mode		: 'm' (to metric)  |
//			  'e' (to english) |
//			  'n' (none)
function processWeight(weight, mode)
{
	if (typeof(weight) == "undefined") return false;
	//alert ("Weight (before): '" + weight + "'");
	if (typeof(mode) == "undefined") mode = 'n';
	if ((mode != 'n') && (mode != 'e') && (mode != 'm')) mode = 'n';
	
	if (typeof(weight) != "number") weight = 0;
	switch(mode) {
	
		case 'e':

			weight = numberFormat(weight * BWT_METRIC_WEIGHT_FACTOR, 2);
			break;
	
		case 'm':

			weight = numberFormat(weight / BWT_METRIC_WEIGHT_FACTOR, 2);
			break;
	}
	//alert ("Weight (after): '" + weight + "'");
	return weight;
}
