var PHPDataGrid = new Object();

PHPDataGrid.add_viewstate = function (form) {
	// Get datagrid name
	datagrid = form.elements['dg_datagrid'];

	// Check if datagrid is defined
	if (typeof(datagrid) != 'object' || datagrid.value == '') { 
		// Just submit form, without viewstate
		return true; 
	}
		
	// Get datagrid name
	datagrid = datagrid.value;

	// Create viewstate id
	viewstate_id = 'dg_' + datagrid + '_viewstate';

	// Get viewstate
	viewstate = document.getElementById(viewstate_id);

	// Check if viewstate is defined
	if (typeof(viewstate) != 'object' || viewstate.value == '') { 
		// Just submit form, without viewstate
		return true; 
	}

	// Get viewstate value
	viewstate = viewstate.value;

	// Create new viewstate element
	var viewstate_el = document.createElement("INPUT");
	viewstate_el.value = viewstate;
	viewstate_el.name = 'dg_viewstate';
	viewstate_el.type = 'hidden';

	// Append to form
	form.appendChild(viewstate_el);
	
	// Submit form
	return true;
}

PHPDataGrid.submit_form = function (formid) {
	// Get form
	var form = document.getElementById(formid);

	// Check if we got a valid form
	if (typeof(form) != 'object') {
		return false;
	}

	// Add viewstate
	PHPDataGrid.add_viewstate (form);

	// Submit form
	form.submit();
}

PHPDataGrid.add_viewstate_link = function (link, datagrid) {
	// Make sure link is object
	if (typeof(link) != 'object') {
		return false;
	}

	// Get viewstate
	viewstate_id = 'dg_' + datagrid + '_viewstate';

	// Get viewstate
	viewstate = document.getElementById(viewstate_id);

	// Change link
	link.href = link.href + '&dg_viewstate=' + viewstate.value;

	return true;
}

PHPDataGrid.get_viewstate = function(datagrid) {
	// Get viewstate
	viewstate_id = 'dg_' + datagrid + '_viewstate';

	// Get viewstate
	viewstate = document.getElementById(viewstate_id);

	// Check if viewstate is defined
	if (typeof(viewstate) != 'object' || viewstate.value == '') { 
		// Just return false
		return false; 
	}

	return viewstate.value;
}

PHPDataGrid.action = function (datagrid, value, action, callback, method, row, confirm_msg) {
	// Check if there is a confirm
	if (typeof(confirm_msg) == 'string' && confirm_msg != '') {
		var do_confirm = confirm (confirm_msg);

		// Confirmed or not?
		if (do_confirm == false) { return false; }
	}

	// Get body
	var body = document.getElementsByTagName('body')['0'];

	// Create div
	var div = document.createElement('DIV');
	div.style.display = 'none';

	// Create form
	var form = document.createElement('FORM');
	form.method = method;
	form.action = document.location;
	form.id = 'test_form';

	//# Datagrid
	var el = document.createElement('INPUT');
	el.type = 'text';
	el.name = 'dg_datagrid';
	el.value = datagrid;
	form.appendChild (el);

	//# Value
	var el = document.createElement('INPUT');
	el.type = 'text';
	el.name = 'dg_value';
	el.value = value;
	form.appendChild (el);

	//# Action
	var el = document.createElement('INPUT');
	el.type = 'text';
	el.name = 'dg_action';
	el.value = action;
	form.appendChild (el);

	//# Callback
	var el = document.createElement('INPUT');
	el.type = 'text';
	el.name = 'dg_callback';
	el.value = callback;
	form.appendChild (el);

	//# Row
	var el = document.createElement('INPUT');
	el.type = 'text';
	el.name = 'dg_row';
	el.value = row;
	form.appendChild (el);

	//# Viewstate
	var el = document.createElement('INPUT');
	el.type = 'text';
	el.name = 'dg_viewstate';
	el.value = PHPDataGrid.get_viewstate(datagrid);
	form.appendChild (el);

	// Are we doing an update? if so -> include update text areas
	if (action == 'update')	{
		PHPDataGrid.do_update(form);
	}

	// Append form to div
	div.appendChild(form);

	// Append div to body
	body.appendChild(div);

	// Submit form
	form.submit();

	// Prevent any link from working
	return false;
}

PHPDataGrid.do_update = function(form) {
	// Get all update elements
	var els = PHPDataGrid.getElementsByClass (document, 'dg_do_update', '*');

	// Loop through elements
	for (var i = 0; i < els.length; i++) {
		var el = els[i];

		// Append to update form
		form.appendChild(el);
	}

	return true;
}

PHPDataGrid.getElementsByClass = function (node,searchClass,tag) {
	var classElements = new Array();
	var els = node.getElementsByTagName(tag); // use "*" for all elements
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");

	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}

	return classElements;
}
