3c3
< drupal_add_js(grid_script(),'inline','header');
---
> drupal_add_js(drupal_get_path('module', 'grid') .'/grid.js');
18a19
> 	$use_div - indicates if a the form should be enclosed in a div element or a tabular layout should be used
20c21
< function grid_merge(&$form, $id, $subform, $minrows = 10, $blankrows = 5, $data = array()) {
---
> 	  function grid_merge(&$form, $id, $subform, $minrows = 10, $blankrows = 5, $data = array(), $use_div = false) {
24c25
< 	$numrows = $minrows;
---
> 	$numrows = max($minrows, count($data));
28,40c29,44
< 	// table start
< 	$formelement[] = array(
< 		'#value' => '<table>',
< 		'#weight' => $i++
< 	);
< 
< 	// headings
< 	$formelement[] = array(
< 		'#value' => '<tr>',
< 		'#weight' => $i++
< 	);
< 	$columns = array(); // numbered array to index column elements
< 	foreach ($subform as $key=>$value) {
---
> 	if (!$use_div) {
> 	  // table start
> 	  $formelement[] = array(
> 							 '#value' => '<table>',
> 							 '#weight' => $i++
> 							 );
> 
> 	  // headings
> 	  $formelement[] = array(
> 							 '#value' => '<tr>',
> 							 '#weight' => $i++
> 							 );
> 	}
> 	$columns = array_keys($subform); // numbered array to index column elements
> 	if (!$use_div) {
> 	  foreach ($subform as $key=>$value) {
45,70c49
< 		);
< 		$formelement[] = array(
< 			'#value' => $value['#title'],
< 			'#weight' => $i++
< 		);
< 		$formelement[] = array(
< 			'#value' => '</th>',
< 			'#weight' => $i++
< 		);
< 	}
< 	$formelement[] = array(
< 		'#value' => '</tr>',
< 		'#weight' => $i++
< 	);
< 
< 	// headings rows 2
< 	$formelement[] = array(
< 		'#value' => '<tr>',
< 		'#weight' => $i++
< 	);
< 
< 	foreach ($subform as $key=>$value) {
< 		$formelement[] = array(
< 			'#value' => '<td class="griddescription">',
< 			'#weight' => $i++
< 		);
---
> 							   );
72,78c51,87
< 			'#value' => $value['#description'],
< 			'#weight' => $i++
< 		);
< 		$formelement[] = array(
< 			'#value' => '</td>',
< 			'#weight' => $i++
< 		);
---
> 							   '#value' => $value['#title'],
> 							   '#weight' => $i++
> 							   );
> 		$formelement[] = array(
> 							   '#value' => '</th>',
> 							   '#weight' => $i++
> 		);
> 	  }
> 	  $formelement[] = array(
> 							 '#value' => '</tr>',
> 							 '#weight' => $i++
> 							 );
> 
> 	  // headings rows 2
> 	  $formelement[] = array(
> 							 '#value' => '<tr>',
> 							 '#weight' => $i++
> 							 );
> 
> 	  foreach ($subform as $key=>$value) {
> 		$formelement[] = array(
> 							   '#value' => '<td class="griddescription">',
> 							   '#weight' => $i++
> 							   );
> 		$formelement[] = array(
> 							   '#value' => $value['#description'],
> 							   '#weight' => $i++
> 							   );
> 		$formelement[] = array(
> 							   '#value' => '</td>',
> 							   '#weight' => $i++
> 							   );
> 	  }
> 	  $formelement[] = array(
> 							 '#value' => '</tr>',
> 							 '#weight' => $i++
> 							 );
80,84d88
< 	$formelement[] = array(
< 		'#value' => '</tr>',
< 		'#weight' => $i++
< 	);
< 
89,91c93,96
< 			'#value' => '<tr>',
< 			'#weight' => $i++
< 		);
---
> 							   '#value' => !$use_div ? '<tr>' : '<div class="grid">',
> 							   '#weight' => $i++
> 							   );
> 		$index = 0;
93a99
> 		  if (!$use_div) {
95,103c101,117
< 				'#value' => '<td>',
< 				'#weight' => $i++
< 			);
< 			
< 			// build the form element
< 			$etitle = sprintf("%s-%03d-%03d",$id, $row, $col);
< 			// basic details from subform
< 			$formelement[$etitle] = $subform[$columns[$col]]; 
< 			// override specific elements
---
> 								   '#value' => '<td>',
> 								   '#weight' => $i++
> 								   );
> 		  }
> 		  // build the form element
> 		  $etitle = sprintf("%s-%03d-%03d",$id, $row, $col);
> 		  // basic details from subform
> 		  $formelement[$etitle] = $subform[$columns[$col]]; 
> 		  $formelement[$etitle]['#weight'] = $i++;
> 		  if (!array_key_exists('#type', $subform[$columns[$col]])) {
> 			continue; //this is a markup element
> 		  }
> 		  // override specific elements
> 		  if ($use_div) {
> 			$formelement[$etitle]['#attributes'] = array('class' => $columns[$col]);
> 		  } else {
> 			//remove title and description information for tabular format
106,108c120,127
< 			$formelement[$etitle]['#default_value'] = $row<count($data) ? $data[$row][$col] : '';
< 			$formelement[$etitle]['#weight'] = $i++;
< 
---
> 		  }
> 		  $val = $row < count($data) ? $data[$row][$index++] :  '';
> 		  if ($subform[$columns[$col]]['#type'] == 'markup') {
> 			$formelement[$etitle]['#value'] = $val;
> 		  } else {
> 			$formelement[$etitle]['#default_value'] = $val;
> 		  }
> 		  if (!$use_div) {
110,112c129,155
< 				'#value' => '</td>',
< 				'#weight' => $i++
< 			);
---
> 								   '#value' => '</td>',
> 								   '#weight' => $i++
> 								   );
> 		  }
> 		}
> 		if (!$use_div) {
> 		  // controls
> 		  $formelement[] = array(
> 								 '#value' => '<td>',
> 								 '#weight' => $i++
> 								 );
> 		  $formelement[] = array(
> 								 '#value' => $row < ($numrows - 1) ? '<span class="gridcontrol" onClick="movedown(\''.$id.'\', '.$row.', '.$numcols.')" title="'.t('Move down').'">&darr;</span>' . '&nbsp;' : '',
> 								 '#weight' => $i++
> 								 );
> 		  $formelement[] = array(
> 								 '#value' => $row > 0 ? '<span class="gridcontrol" onClick="moveup(\''.$id.'\', '.$row.', '.$numcols.')" title="'.t('Move up').'">&uarr;</span>' . '&nbsp;' : '',
> 								 '#weight' => $i++
> 								 );
> 		  $formelement[] = array(
> 								 '#value' => '<span class="gridcontrol" onClick="inserthere(\''.$id.'\', '.$row.', '.$numcols.', '.$numrows.')" title="'.t('Insert a row here').'">+</span>' . '&nbsp;',
> 								 '#weight' => $i++
> 								 );
> 		  $formelement[] = array(
> 								 '#value' => '</td>',
> 								 '#weight' => $i++
> 								 );
114,134d156
< 		// controls
< 		$formelement[] = array(
< 			'#value' => '<td>',
< 			'#weight' => $i++
< 		);
< 		$formelement[] = array(
< 			'#value' => $row < ($numrows - 1) ? '<span class="gridcontrol" onClick="movedown(\''.$id.'\', '.$row.', '.$numcols.')" title="'.t('Move down').'">&darr;</span>' . '&nbsp;' : '',
< 			'#weight' => $i++
< 		);
< 		$formelement[] = array(
< 			'#value' => $row > 0 ? '<span class="gridcontrol" onClick="moveup(\''.$id.'\', '.$row.', '.$numcols.')" title="'.t('Move up').'">&uarr;</span>' . '&nbsp;' : '',
< 			'#weight' => $i++
< 		);
< 		$formelement[] = array(
< 			'#value' => '<span class="gridcontrol" onClick="inserthere(\''.$id.'\', '.$row.', '.$numcols.', '.$numrows.')" title="'.t('Insert a row here').'">+</span>' . '&nbsp;',
< 			'#weight' => $i++
< 		);
< 		$formelement[] = array(
< 			'#value' => '</td>',
< 			'#weight' => $i++
< 		);
137,139c159,172
< 			'#value' => '</tr>',
< 			'#weight' => $i++
< 		);
---
> 							   '#value' => !$use_div ? '</tr>' : '</div>',
> 							   '#weight' => $i++
> 							   );
> 	}
> 	if (!$use_div) {
> 	  // table end
> 	  $formelement[] = array(
> 							 '#value' => '<tr><td colspan="'.$numcols.'">'.t('To add more rows, save this record, then re-edit it.').'</td></tr>',
> 							 '#weight' => $i++
> 							 );
> 	  $formelement[] = array(
> 							 '#value' => '</table>',
> 							 '#weight' => $i++
> 							 );
141,150d173
< 	// table end
< 	$formelement[] = array(
< 		'#value' => '<tr><td colspan="'.$numcols.'">'.t('To add more rows, save this record, then re-edit it.').'</td></tr>',
< 		'#weight' => $i++
< 	);
< 	$formelement[] = array(
< 		'#value' => '</table>',
< 		'#weight' => $i++
< 	);
< 	
197,235d219
< /*	============================
< 	Javascript for swapping rows
< 	----------------------------
< */
< function grid_script() { 
< 	return '
< 		function moveup(title, row, cols) {
< 			row1 = row - 1;
< 			swaprows(title, row, row1, cols);
< 		}
< 		function movedown(title, row, cols) {
< 			row1 = row + 1;
< 			swaprows(title, row, row1, cols);
< 		}
< 		function inserthere(title, row, cols, rows) {
< 			for (i=rows-1; i>row; i--) {
< 				moveup(title, i, cols);
< 			}
< 		}
< 		function swaprows(title, r1, r2, cols) {
< 			rid1 = "edit-" + title + "-" + pad_number(r1) + "-";
< 			rid2 = "edit-" + title + "-" + pad_number(r2) + "-";
< 			for (col=0; col<cols; col++) {
< 				cid1 = rid1 + pad_number(col);
< 				cid2 = rid2 + pad_number(col);
< 				e1 = document.getElementById(cid1);
< 				e2 = document.getElementById(cid2);
< 				v1 = e1.value; // v1 = e1.getAttribute("value");
< 				v2 = e2.value; // v2 = e2.getAttribute("value");
< 				e1.value = v2; // e1.setAttribute("value", v2);
< 				e2.value = v1; // e2.setAttribute("value", v1);
< 			}
< 		}
< 		function pad_number(x) {
< 			x=((x/1000).toFixed(3)).substr(2,3);
< 			return x;
< 		}
< 	';
< }
