	// ===============================================================
	// Initialize DGV
	// ===============================================================
	function FORM_DGV_LOAD()
	{
		PRODUCT_DGV.ON_CLICK
		(			
			function(COL_INDEX, ROW_INDEX)
			{
				// Delete Button
				// ...........................................
				if(PRODUCT_DGV.COLUMN.NAME(COL_INDEX) == "DELETE_CMD")
				{
					// Delete Unsaved Item
					if
					(
						PRODUCT_DGV.COLUMN.IS_EXISTS("CAT_PRODUCT_ID") &&
						JSVC_NUM.VAR_NVALL(PRODUCT_DGV.CELL.VALUE("CAT_PRODUCT_ID", ROW_INDEX)) <= 0
					)
					{
						PRODUCT_DGV.ROW.REMOVE_AT(ROW_INDEX);
					}
					
					// Delete Saved Item
					else
					{
						HTTP_DELETE
						(
							function(IS_SUCCESS)
							{
								console.log('Record Deleted.');
							}, 
							ROW_INDEX
						);				
					}
				}			

				// Void Button
				// ...........................................
				else if(PRODUCT_DGV.COLUMN.NAME(COL_INDEX) == "VOID_CMD")
				{
					// Delete Unsaved Item
					if
					(
						PRODUCT_DGV.COLUMN.IS_EXISTS("CAT_PRODUCT_ID") &&
						JSVC_NUM.VAR_NVALL(PRODUCT_DGV.CELL.VALUE("CAT_PRODUCT_ID", ROW_INDEX)) <= 0
					)
					{
						PRODUCT_DGV.ROW.REMOVE_AT(ROW_INDEX);
					}
					
					// Void Saved Item
					else
					{

					}
				}	
	
					
				// Link to Child Table
				// ...........................................
				else if(PRODUCT_DGV.COLUMN.NAME(COL_INDEX) == "CHILD_EOD_CMD")
				{
					// Open EditPage
					window.open
					(
						JSCUS_CACHE.SERVER_URL + '/p/record/eod_premix.html?id=' + PRODUCT_DGV.CELL.VALUE('CAT_PRODUCT_ID', ROW_INDEX),
						'_blank'
					);
					return;
				}
				
							
				// Link to Child Table
				// ...........................................
				else if(PRODUCT_DGV.COLUMN.NAME(COL_INDEX) == "CHILD_CMD")
				{
					// Get Current Root path
					var CURRENT_ROOT_PATH = JSCUS_CACHE.ROOT_PATH + JSVC_STR.VAR_MID(JSVC_STR.VAR_DLEFT(JSCUS_CACHE.AUTH_REDIRECT_URL[JSCUS_CACHE.LOGIN_CLASS], JSCUS_CACHE.SERVER_URL.length), 1, 1);
			
					// Cache Primary Key
					JSVC_COOKIE.VAR_ADD
					(
						'PROPERTY_PARENT_ID_MIXTURE', 
						PRODUCT_DGV.CELL.VALUE('CAT_PRODUCT_ID', ROW_INDEX), 
						5, 
						CURRENT_ROOT_PATH
					);
					JSVC_COOKIE.VAR_ADD
					(
						'PROPERTY_PARENT_DESCRIPTION_MIXTURE', 
						PRODUCT_DGV.CELL.VALUE('CAT_PRODUCT_DESCRIPTION', ROW_INDEX), 
						5, 
						CURRENT_ROOT_PATH
					);
					
					// Open EditPage
					window.location = JSCUS_CACHE.SERVER_URL + '/p/category/mixture.html';	
					return;
				}
						
	
				// If dialog supported
				// ...........................................
				else if(JSOC_ELEMENT.VAR_ELEMENT_EXISTS("PRODUCT_MODAL") == true)
				{
					// Clear Modal
					if(JSVC_VAR.VAR_ISSET(INPUT_INSTANCE))
					{
						JSOC_WINDOW.VAR_INPUT_INSTANCE_RESTORE(INPUT_INSTANCE);
					}
						
					// Display Modal
					PROPERTY_CAT_PRODUCT_ID = PRODUCT_DGV.CELL.VALUE('CAT_PRODUCT_ID', ROW_INDEX);
					PROPERTY_EDIT_ROW_INDEX = ROW_INDEX;
					
					EDIT_HANDLER.REF_IS_MODIFIED = false;
					JSOC_DIALOG.VAR_MODAL("PRODUCT_MODAL", true);
					HTTP_LOAD();
					return;
				}
				
				// Open View / Edit Page
				// ...........................................
				else if(PRODUCT_DGV.SETTING_EDITABLE == false)
				{
					// Get Current Root path
					var CURRENT_ROOT_PATH = JSCUS_CACHE.ROOT_PATH + JSVC_STR.VAR_MID(JSVC_STR.VAR_DLEFT(JSCUS_CACHE.AUTH_REDIRECT_URL[JSCUS_CACHE.LOGIN_CLASS], JSCUS_CACHE.SERVER_URL.length), 1, 1);
	
					// Cache Primary Key
					JSVC_COOKIE.VAR_ADD
					(
						'PROPERTY_PARENT_ID', 
						PRODUCT_DGV.CELL.VALUE('CAT_PRODUCT_ID', ROW_INDEX), 
						5, 
						CURRENT_ROOT_PATH
					);
					JSVC_COOKIE.VAR_ADD
					(
						'PROPERTY_PARENT_DESCRIPTION', 
						PRODUCT_DGV.CELL.VALUE('CAT_PRODUCT_DESCRIPTION', ROW_INDEX), 
						5, 
						CURRENT_ROOT_PATH
					);
					
					// Open EditPage
					window.location = 'product_info.html';				
				}

			}
		);   		
	};