fuzzDataGrid = new Object();

///CONTAINERS
fuzzDataGrid.displayGrid = function displayGrid(name, resultsPerPage, page, orderByCol, orderByDir){
	var methodArgs = new Object();
	var callbackData = new Object();
	var divId = "fuzzDataGrid_"+name+"_div_id";
	var josnDivId = "fuzzDataGrid_"+name+"_json_div_id";
	var postData = "";
	
	var cDiv = document.getElementById(divId);
	var jsonDiv = document.getElementById(josnDivId);
	
	// Make sure the div id
	if(! cDiv) alert("Unable to find data grid: "+name+". It seams the data grid was not initialized.")
	else{
		
		fuzzAsync.util.displayProgressDiv("fuzzDataGrid_"+name,"Loading, Please Wait...");	
		
		// figure out if there are checkboxes to deal with
		selectedValues = new Array();
		hasCheckbox = document.getElementById("fuzzDataGrid_"+name+"_hasCheckbox_div_id");
		if(hasCheckbox && hasCheckbox.value == 1){
			cbFormName = document.getElementById("fuzzDataGrid_"+name+"_checkboxFormName_div_id").value;
			cbFormElementName = document.getElementById("fuzzDataGrid_"+name+"_checkboxFormElementName_div_id").value;
			
			selectedValues = fuzzForm.getSelectedValues(cbFormName, cbFormElementName);

		}
		
		gridObj = jsonDiv.innerHTML;
		
		methodArgs.gridName = name;
		methodArgs.objArr = gridObj;
		methodArgs.resultsPerPage = resultsPerPage;
		methodArgs.currentPage = page;
		methodArgs.checkboxSelectedValueArr = selectedValues;
		if(orderByCol){
			methodArgs.orderByCol = orderByCol;
			if(orderByDir) methodArgs.orderByDir = orderByDir;
			else orderByDir = "";
		}
		
		callbackData.name = name;
		callbackData.containerDivId = divId;

		fuzzAsync.callAction("fuzzDataGrid","display-grid",methodArgs,fuzzDataGrid.displayGridCallback,callbackData);
	}
	
}

fuzzDataGrid.displayGridCallback = function displayGridCallback(response){
	if(! response.isError){
		var cDiv = document.getElementById(response.callbackData.containerDivId);

		if(! cDiv) alert("Unable to display container (from callback): "+control+". It seams the container element was not initialized.");
		else{
			fuzzAsync.util.replaceDiv(cDiv,response.returnHTML);
			
			fuzzAsync.util.hideProgressDiv("fuzzDataGrid_"+response.callbackData.name);
		}
	}
	else{
		dump(response);
		//alert("Sorry an error has occured. Please try again.");
		//dump(response);
		//cbAsyncJS.displayErrorDiv(response.callbackData.name,response.errorDescription,response.errorTrace,response.errorDetails);
	} 
	
}

fuzzDataGrid.changeResultsPerPage = function changeResultsPerPage(name, page){
	var sDiv = document.getElementById("fuzzDataGrid_"+name+"_results_select_div_id");
	fuzzDataGrid.displayGrid(name, sDiv.value, page);
}

fuzzDataGrid.showLimitCol = function showLimitCol(name, num){
	var lDiv = document.getElementById("fuzzDataGrid_limit_"+name+"_"+num+"_div_id");
	var fDiv = document.getElementById("fuzzDataGrid_limit_full_"+name+"_"+num+"_div_id");
	showElement(fDiv);
	hideElement(lDiv);
	
}

fuzzDataGrid.hideLimitCol = function hideLimitCol(name, num){
	var lDiv = document.getElementById("fuzzDataGrid_limit_"+name+"_"+num+"_div_id");
	var fDiv = document.getElementById("fuzzDataGrid_limit_full_"+name+"_"+num+"_div_id");
	showElement(lDiv);
	hideElement(fDiv);
	
}

fuzzDataGrid.checkAll = function checkAll(name, formName, elementName){
	var cAll = document.getElementById("fuzzDataGrid_"+name+"_select_all_id");
	var boxes = document.getElementsByName("fuzzForm_"+formName+"_"+elementName+"_element");
	
	if(! cAll) return;
	
	checked = false;
	if(cAll.checked) checked = true;
	
	for(i = 0; i<boxes.length; i++){
		boxes[i].checked = checked;
	}

}
