text: /*
   Transform a table to a jqGrid.
   Peter Romianowski <peter.romianowski@optivo.de> 
   If the first column of the table contains checkboxes or
   radiobuttons then the jqGrid is made selectable.
  */
  // Addition - selector can be a class or id
  function tableToGrid(selector, options) {
  jQuery(selector).each(function() {
  	if(this.grid) {return;} //Adedd from Tony Tomov
  	// This is a small "hack" to make the width of the jqGrid 100%
  	jQuery(this).width("99%");
  	var w = jQuery(this).width();
  
  	// Text whether we have single or multi select
  	var inputCheckbox = jQuery('input[type=checkbox]:first', jQuery(this));
  	var inputRadio = jQuery('input[type=radio]:first', jQuery(this));
  	var selectMultiple = inputCheckbox.length > 0;
  	var selectSingle = !selectMultiple && inputRadio.length > 0;
  	var selectable = selectMultiple || selectSingle;
  	//var inputName = inputCheckbox.attr("name") || inputRadio.attr("name");
  
  	// Build up the columnModel and the data
  	var colModel = [];
  	var colNames = [];
  	jQuery('th', jQuery(this)).each(function() {
  		if (colModel.length === 0 && selectable) {
  			colModel.push({
  				name: '__selection__',
  				index: '__selection__',
  				width: 0,
  				hidden: true
  			});
  			colNames.push('__selection__');
  		} else {
  			colModel.push({
  				name: jQuery(this).attr("id") || jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(' ').join('_'),
  				index: jQuery(this).attr("id") || jQuery.trim(jQuery.jgrid.stripHtml(jQuery(this).html())).split(' ').join('_'),
  				width: jQuery(this).width() || 150
  			});
  			colNames.push(jQuery(this).html());
  		}
  	});
  
  	var data = [];
  	var rowIds = [];
  	var rowChecked = [];
  	jQuery('tbody > tr', jQuery(this)).each(function() {
  		var row = {};
  		var rowPos = 0;
  		jQuery('td', jQuery(this)).each(function() {
  			if (rowPos === 0 && selectable) {
  				var input = jQuery('input', jQuery(this));
  				var rowId = input.attr("value");
  				rowIds.push(rowId || data.length);
  				if (input.attr("checked")) {
  					rowChecked.push(rowId);
  				}
  				row[colModel[rowPos].name] = input.attr("value");
  			} else {
  				row[colModel[rowPos].name] = jQuery(this).html();
  			}
  			rowPos++;
  		});
  		if(rowPos >0) { data.push(row); }
  	});
  
  	// Clear the original HTML table
  	jQuery(this).empty();
  
  	// Mark it as jqGrid
  	jQuery(this).addClass("scroll");
  
  	jQuery(this).jqGrid(jQuery.extend({
  		datatype: "local",
  		width: w,
  		colNames: colNames,
  		colModel: colModel,
  		multiselect: selectMultiple
  		//inputName: inputName,
  		//inputValueCol: imputName != null ? "__selection__" : null
  	}, options || {}));
  
  	// Add data
  	var a;
  	for (a = 0; a < data.length; a++) {
  		var id = null;
  		if (rowIds.length > 0) {
  			id = rowIds[a];
  			if (id && id.replace) {
  				// We have to do this since the value of a checkbox
  				// or radio button can be anything 
  				id = encodeURIComponent(id).replace(/[.\-%]/g, "_");
  			}
  		}
  		if (id === null) {
  			id = a + 1;
  		}
  		jQuery(this).jqGrid("addRowData",id, data[a]);
  	}
  
  	// Set the selection
  	for (a = 0; a < rowChecked.length; a++) {
  		jQuery(this).jqGrid("setSelection",rowChecked[a]);
  	}
  });
  };
  