diff -ru nagios-3.0.5.org/cgi/config.c nagios-3.0.5/cgi/config.c
--- nagios-3.0.5.org/cgi/config.c	Sun Apr 13 20:34:27 2008
+++ nagios-3.0.5/cgi/config.c	Fri Nov 28 12:59:51 2008
@@ -457,6 +457,7 @@
 	printf("<TH CLASS='data'>Notes</TH>");
 	printf("<TH CLASS='data'>Notes URL</TH>");
 	printf("<TH CLASS='data'>Action URL</TH>");
+	printf("<TH CLASS='data'>Action Image</TH>");
 	printf("<TH CLASS='data'>2-D Coords</TH>");
 	printf("<TH CLASS='data'>3-D Coords</TH>");
 	printf("<TH CLASS='data'>Statusmap Image</TH>");
@@ -670,6 +671,11 @@
 
 		printf("<TD CLASS='%s'>%s</TD>",bg_class,(temp_host->action_url==NULL)?"&nbsp;":temp_host->action_url);
 
+		if(temp_host->action_image==NULL)
+			printf("<TD CLASS='%s'>&nbsp;</TD>",bg_class);
+		else
+			printf("<TD CLASS='%s' valign='center'><img src='%s%s' border='0' width='20' height='20'> %s</TD>",bg_class,url_images_path,temp_host->action_image,temp_host->action_image);
+
 		if(temp_host->have_2d_coords==FALSE)
 			printf("<TD CLASS='%s'>&nbsp;</TD>",bg_class);
 		else
@@ -751,6 +757,7 @@
 	printf("<TH CLASS='data'>Notes</TH>");
 	printf("<TH CLASS='data'>Notes URL</TH>");
 	printf("<TH CLASS='data'>Action URL</TH>");
+	printf("<TH CLASS='data'>Action Image</TH>");
 	printf("</TR>\n");
 
 	/* check all the hostgroups... */
@@ -788,6 +795,7 @@
 
 		printf("<TD CLASS='%s'>%s</TD>",bg_class,(temp_hostgroup->action_url==NULL)?"&nbsp;":temp_hostgroup->action_url);
 
+		printf("<TD CLASS='%s'>%s</TD>",bg_class,(temp_hostgroup->action_image==NULL)?"&nbsp;":temp_hostgroup->action_image);
 		printf("</TR>\n");
 	        }
 
@@ -825,6 +833,7 @@
 	printf("<TH CLASS='data'>Notes</TH>");
 	printf("<TH CLASS='data'>Notes URL</TH>");
 	printf("<TH CLASS='data'>Action URL</TH>");
+	printf("<TH CLASS='data'>Action Image</TH>");
 	printf("</TR>\n");
 
 	/* check all the servicegroups... */
@@ -864,6 +873,8 @@
 
 		printf("<TD CLASS='%s'>%s</TD>",bg_class,(temp_servicegroup->action_url==NULL)?"&nbsp;":temp_servicegroup->action_url);
 
+		printf("<TD CLASS='%s'>%s</TD>",bg_class,(temp_servicegroup->action_image==NULL)?"&nbsp;":temp_servicegroup->action_image);
+
 		printf("</TR>\n");
 	        }
 
@@ -1185,6 +1196,7 @@
 	printf("<TH CLASS='data'>Notes</TH>");
 	printf("<TH CLASS='data'>Notes URL</TH>");
 	printf("<TH CLASS='data'>Action URL</TH>");
+	printf("<TH CLASS='data'>Action Image</TH>");
 	printf("<TH CLASS='data'>Logo Image</TH>");
 	printf("<TH CLASS='data'>Image Alt</TH>");
 	printf("<TH CLASS='data'>Retention Options</TH>");
@@ -1402,6 +1414,11 @@
 		printf("<TD CLASS='%s'>%s</TD>",bg_class,(temp_service->notes_url==NULL)?"&nbsp;":temp_service->notes_url);
 
 		printf("<TD CLASS='%s'>%s</TD>",bg_class,(temp_service->action_url==NULL)?"&nbsp;":temp_service->action_url);
+
+		if(temp_service->action_image==NULL)
+			printf("<TD CLASS='%s'>&nbsp;</TD>",bg_class);
+		else
+			printf("<TD CLASS='%s' valign='center'><img src='%s%s' border='0' width='20' height='20'> %s</TD>",bg_class,url_images_path,temp_service->action_image,temp_service->action_image);
 
 		if(temp_service->icon_image==NULL)
 			printf("<TD CLASS='%s'>&nbsp;</TD>",bg_class);
diff -ru nagios-3.0.5.org/cgi/extinfo.c nagios-3.0.5/cgi/extinfo.c
--- nagios-3.0.5.org/cgi/extinfo.c	Thu Jan 24 03:51:30 2008
+++ nagios-3.0.5/cgi/extinfo.c	Fri Nov 28 12:59:51 2008
@@ -429,7 +429,7 @@
 				process_macros(temp_host->action_url,&processed_string,0);
 				printf("%s",processed_string);
 				free(processed_string);
-				printf("' TARGET='%s'><img src='%s%s' border=0 alt='Perform Additional Actions On This Host' title='Perform Additional Actions On This Host'></A>\n",(action_url_target==NULL)?"_blank":action_url_target,url_images_path,ACTION_ICON);
+				printf("' TARGET='%s'><img src='%s%s' border=0 alt='Perform Additional Actions On This Host' title='Perform Additional Actions On This Host'></A>\n",(action_url_target==NULL)?"_blank":action_url_target,url_images_path,temp_host->action_image==NULL?ACTION_ICON:temp_host->action_image);
 				printf("<BR CLEAR=ALL><FONT SIZE=-1><I>Extra Actions</I></FONT><BR CLEAR=ALL><BR CLEAR=ALL>\n");
 				printf("</TD></TR>\n");
 			        }
@@ -454,7 +454,7 @@
 				process_macros(temp_service->action_url,&processed_string,0);
 				printf("%s",processed_string);
 				free(processed_string);
-				printf("' TARGET='%s'><img src='%s%s' border=0 alt='Perform Additional Actions On This Service' title='Perform Additional Actions On This Service'></A>\n",(action_url_target==NULL)?"_blank":action_url_target,url_images_path,ACTION_ICON);
+				printf("' TARGET='%s'><img src='%s%s' border=0 alt='Perform Additional Actions On This Service' title='Perform Additional Actions On This Service'></A>\n",(action_url_target==NULL)?"_blank":action_url_target,url_images_path,temp_service->action_image==NULL?ACTION_ICON:temp_service->action_image);
 				printf("<BR CLEAR=ALL><FONT SIZE=-1><I>Extra Actions</I></FONT><BR CLEAR=ALL><BR CLEAR=ALL>\n");
 			        }
 			if(temp_service->notes_url!=NULL && strcmp(temp_service->notes_url,"")){
@@ -474,7 +474,7 @@
 				printf("<TR><TD ALIGN='right'>\n");
 				printf("<A HREF='");
 				print_extra_hostgroup_url(temp_hostgroup->group_name,temp_hostgroup->action_url);
-				printf("' TARGET='%s'><img src='%s%s' border=0 alt='Perform Additional Actions On This Hostgroup' title='Perform Additional Actions On This Hostgroup'></A>\n",(action_url_target==NULL)?"_blank":action_url_target,url_images_path,ACTION_ICON);
+				printf("' TARGET='%s'><img src='%s%s' border=0 alt='Perform Additional Actions On This Hostgroup' title='Perform Additional Actions On This Hostgroup'></A>\n",(action_url_target==NULL)?"_blank":action_url_target,url_images_path,temp_hostgroup->action_image==NULL?ACTION_ICON:temp_hostgroup->action_image);
 				printf("<BR CLEAR=ALL><FONT SIZE=-1><I>Extra Actions</I></FONT><BR CLEAR=ALL><BR CLEAR=ALL>\n");
 				printf("</TD></TR>\n");
 			        }
@@ -494,7 +494,7 @@
 			if(temp_servicegroup->action_url!=NULL && strcmp(temp_servicegroup->action_url,"")){
 				printf("<A HREF='");
 				print_extra_servicegroup_url(temp_servicegroup->group_name,temp_servicegroup->action_url);
-				printf("' TARGET='%s'><img src='%s%s' border=0 alt='Perform Additional Actions On This Servicegroup' title='Perform Additional Actions On This Servicegroup'></A>\n",(action_url_target==NULL)?"_blank":action_url_target,url_images_path,ACTION_ICON);
+				printf("' TARGET='%s'><img src='%s%s' border=0 alt='Perform Additional Actions On This Servicegroup' title='Perform Additional Actions On This Servicegroup'></A>\n",(action_url_target==NULL)?"_blank":action_url_target,url_images_path,temp_servicegroup->action_image==NULL?ACTION_ICON:temp_servicegroup->action_image);
 				printf("<BR CLEAR=ALL><FONT SIZE=-1><I>Extra Actions</I></FONT><BR CLEAR=ALL><BR CLEAR=ALL>\n");
 			        }
 			if(temp_servicegroup->notes_url!=NULL && strcmp(temp_servicegroup->notes_url,"")){
diff -ru nagios-3.0.5.org/cgi/status.c nagios-3.0.5/cgi/status.c
--- nagios-3.0.5.org/cgi/status.c	Mon Jun 23 22:47:46 2008
+++ nagios-3.0.5/cgi/status.c	Fri Nov 28 12:59:51 2008
@@ -1611,7 +1611,7 @@
 					printf("%s",processed_string);
 					free(processed_string);
 					printf("' TARGET='%s'>",(action_url_target==NULL)?"_blank":action_url_target);
-					printf("<IMG SRC='%s%s' BORDER=0 WIDTH=%d HEIGHT=%d ALT='%s' TITLE='%s'>",url_images_path,ACTION_ICON,STATUS_ICON_WIDTH,STATUS_ICON_HEIGHT,"Perform Extra Host Actions","Perform Extra Host Actions");
+					printf("<IMG SRC='%s%s' BORDER=0 WIDTH=%d HEIGHT=%d ALT='%s' TITLE='%s'>",url_images_path,(temp_host->action_image==NULL)?ACTION_ICON:temp_host->action_image,STATUS_ICON_WIDTH,STATUS_ICON_HEIGHT,"Perform Extra Host Actions","Perform Extra Host Actions");
 					printf("</A>");
 					printf("</TD>\n");
 				        }
@@ -1702,7 +1702,7 @@
 				printf("%s",processed_string);
 				free(processed_string);
 				printf("' TARGET='%s'>",(action_url_target==NULL)?"_blank":action_url_target);
-				printf("<IMG SRC='%s%s' BORDER=0 WIDTH=%d HEIGHT=%d ALT='%s' TITLE='%s'>",url_images_path,ACTION_ICON,STATUS_ICON_WIDTH,STATUS_ICON_HEIGHT,"Perform Extra Service Actions","Perform Extra Service Actions");
+				printf("<IMG SRC='%s%s' BORDER=0 WIDTH=%d HEIGHT=%d ALT='%s' TITLE='%s'>",url_images_path,(temp_service->action_image==NULL)?ACTION_ICON:temp_service->action_image,STATUS_ICON_WIDTH,STATUS_ICON_HEIGHT,"Perform Extra Service Actions","Perform Extra Service Actions");
 				printf("</A>");
 				printf("</TD>\n");
 				}
@@ -2101,7 +2101,7 @@
 				printf("%s",processed_string);
 				free(processed_string);
 				printf("' TARGET='%s'>",(action_url_target==NULL)?"_blank":action_url_target);
-				printf("<IMG SRC='%s%s' BORDER=0 WIDTH=%d HEIGHT=%d ALT='%s' TITLE='%s'>",url_images_path,ACTION_ICON,STATUS_ICON_WIDTH,STATUS_ICON_HEIGHT,"Perform Extra Host Actions","Perform Extra Host Actions");
+				printf("<IMG SRC='%s%s' BORDER=0 WIDTH=%d HEIGHT=%d ALT='%s' TITLE='%s'>",url_images_path,(temp_host->action_image==NULL)?ACTION_ICON:temp_host->action_image,STATUS_ICON_WIDTH,STATUS_ICON_HEIGHT,"Perform Extra Host Actions","Perform Extra Host Actions");
 				printf("</A>");
 				printf("</TD>\n");
 			        }
@@ -3225,7 +3225,7 @@
 			printf("%s",processed_string);
 			free(processed_string);
 			printf("' TARGET='%s'>",(action_url_target==NULL)?"blank":action_url_target);
-			printf("<IMG SRC='%s%s' BORDER=0 WIDTH=%d HEIGHT=%d ALT='%s' TITLE='%s'>",url_images_path,ACTION_ICON,STATUS_ICON_WIDTH,STATUS_ICON_HEIGHT,"Perform Extra Host Actions","Perform Extra Host Actions");
+			printf("<IMG SRC='%s%s' BORDER=0 WIDTH=%d HEIGHT=%d ALT='%s' TITLE='%s'>",url_images_path,(temp_host->action_image==NULL)?ACTION_ICON:temp_host->action_image,STATUS_ICON_WIDTH,STATUS_ICON_HEIGHT,"Perform Extra Host Actions","Perform Extra Host Actions");
 			printf("</A>");
 		        }
 
@@ -3529,7 +3529,7 @@
 		printf("%s",processed_string);
 		free(processed_string);
 		printf("' TARGET='%s'>",(action_url_target==NULL)?"_blank":action_url_target);
-		printf("<IMG SRC='%s%s' BORDER=0 WIDTH=%d HEIGHT=%d ALT='%s' TITLE='%s'>",url_images_path,ACTION_ICON,STATUS_ICON_WIDTH,STATUS_ICON_HEIGHT,"Perform Extra Host Actions","Perform Extra Host Actions");
+		printf("<IMG SRC='%s%s' BORDER=0 WIDTH=%d HEIGHT=%d ALT='%s' TITLE='%s'>",url_images_path,(temp_host->action_image==NULL)?ACTION_ICON:temp_host->action_image,STATUS_ICON_WIDTH,STATUS_ICON_HEIGHT,"Perform Extra Host Actions","Perform Extra Host Actions");
 		printf("</A>");
 	        }
 	printf("<a href='%s?host=%s'><img src='%s%s' border=0 alt='View Service Details For This Host' title='View Service Details For This Host'></a>\n",STATUS_CGI,url_encode(hststatus->host_name),url_images_path,STATUS_DETAIL_ICON);
@@ -4454,7 +4454,7 @@
 			printf("%s",processed_string);
 			free(processed_string);
 			printf("' TARGET='%s'>",(action_url_target==NULL)?"_blank":action_url_target);
-			printf("<IMG SRC='%s%s' BORDER=0 WIDTH=%d HEIGHT=%d ALT='%s' TITLE='%s'>",url_images_path,ACTION_ICON,STATUS_ICON_WIDTH,STATUS_ICON_HEIGHT,"Perform Extra Host Actions","Perform Extra Host Actions");
+			printf("<IMG SRC='%s%s' BORDER=0 WIDTH=%d HEIGHT=%d ALT='%s' TITLE='%s'>",url_images_path,(temp_host->action_image==NULL)?ACTION_ICON:temp_host->action_image,STATUS_ICON_WIDTH,STATUS_ICON_HEIGHT,"Perform Extra Host Actions","Perform Extra Host Actions");
 			printf("</A>");
 		        }
 
diff -ru nagios-3.0.5.org/common/objects.c nagios-3.0.5/common/objects.c
--- nagios-3.0.5.org/common/objects.c	Sun Apr 13 20:34:27 2008
+++ nagios-3.0.5/common/objects.c	Fri Nov 28 12:59:51 2008
@@ -624,7 +624,7 @@
 
 
 /* add a new host definition */
-host *add_host(char *name, char *display_name, char *alias, char *address, char *check_period, int initial_state, double check_interval, double retry_interval, int max_attempts, int notify_up, int notify_down, int notify_unreachable, int notify_flapping, int notify_downtime, double notification_interval, double first_notification_delay, char *notification_period, int notifications_enabled, char *check_command, int checks_enabled, int accept_passive_checks, char *event_handler, int event_handler_enabled, int flap_detection_enabled, double low_flap_threshold, double high_flap_threshold, int flap_detection_on_up, int flap_detection_on_down, int flap_detection_on_unreachable, int stalk_on_up, int stalk_on_down, int stalk_on_unreachable, int process_perfdata, int failure_prediction_enabled, char *failure_prediction_options, int check_freshness, int freshness_threshold, char *notes, char *notes_url, char *action_url, char *icon_image, char *icon_image_alt, char *vrml_image, char *statusmap_image, int x_2d, int y_2d, int have_2d_coords, double x_3d, double y_3d, double z_3d, int have_3d_coords, int should_be_drawn, int retain_status_information, int retain_nonstatus_information, int obsess_over_host){
+host *add_host(char *name, char *display_name, char *alias, char *address, char *check_period, int initial_state, double check_interval, double retry_interval, int max_attempts, int notify_up, int notify_down, int notify_unreachable, int notify_flapping, int notify_downtime, double notification_interval, double first_notification_delay, char *notification_period, int notifications_enabled, char *check_command, int checks_enabled, int accept_passive_checks, char *event_handler, int event_handler_enabled, int flap_detection_enabled, double low_flap_threshold, double high_flap_threshold, int flap_detection_on_up, int flap_detection_on_down, int flap_detection_on_unreachable, int stalk_on_up, int stalk_on_down, int stalk_on_unreachable, int process_perfdata, int failure_prediction_enabled, char *failure_prediction_options, int check_freshness, int freshness_threshold, char *notes, char *notes_url, char *action_url, char *action_image, char *icon_image, char *icon_image_alt, char *vrml_image, char *statusmap_image, int x_2d, int y_2d, int have_2d_coords, double x_3d, double y_3d, double z_3d, int have_3d_coords, int should_be_drawn, int retain_status_information, int retain_nonstatus_information, int obsess_over_host){
 	host *new_host=NULL;
 	int result=OK;
 #ifdef NSCORE
@@ -693,6 +693,7 @@
 	new_host->notes=NULL;
 	new_host->notes_url=NULL;
 	new_host->action_url=NULL;
+	new_host->action_image=NULL;
 	new_host->icon_image=NULL;
 	new_host->icon_image_alt=NULL;
 	new_host->vrml_image=NULL;
@@ -754,6 +755,10 @@
 		if((new_host->action_url=(char *)strdup(action_url))==NULL)
 			result=ERROR;
 	        }
+	if(action_image){
+		if((new_host->action_image=(char *)strdup(action_image))==NULL)
+			result=ERROR;
+	        }
 	if(icon_image){
 		if((new_host->icon_image=(char *)strdup(icon_image))==NULL)
 			result=ERROR;
@@ -896,6 +901,7 @@
 		my_free(new_host->icon_image_alt);
 		my_free(new_host->icon_image);
 		my_free(new_host->action_url);
+		my_free(new_host->action_image);
 		my_free(new_host->notes_url);
 		my_free(new_host->notes);
 		my_free(new_host->failure_prediction_options);
@@ -1089,7 +1095,7 @@
 
 
 /* add a new host group to the list in memory */
-hostgroup *add_hostgroup(char *name, char *alias, char *notes, char *notes_url, char *action_url){
+hostgroup *add_hostgroup(char *name, char *alias, char *notes, char *notes_url, char *action_url, char *action_image){
 	hostgroup *new_hostgroup=NULL;
 	int result=OK;
 
@@ -1112,6 +1118,7 @@
 	new_hostgroup->notes=NULL;
 	new_hostgroup->notes_url=NULL;
 	new_hostgroup->action_url=NULL;
+	new_hostgroup->action_image=NULL;
 	new_hostgroup->next=NULL;
 	new_hostgroup->nexthash=NULL;
 
@@ -1132,6 +1139,14 @@
 		if((new_hostgroup->action_url=(char *)strdup(action_url))==NULL)
 			result=ERROR;
 		}
+	if(action_image){
+		if((new_hostgroup->action_image=(char *)strdup(action_image))==NULL)
+			result=ERROR;
+		}
+	if(action_image){
+		if((new_hostgroup->action_image=(char *)strdup(action_image))==NULL)
+			result=ERROR;
+		}
 
 	/* add new host group to skiplist */
 	if(result==OK){
@@ -1241,7 +1256,7 @@
 
 
 /* add a new service group to the list in memory */
-servicegroup *add_servicegroup(char *name, char *alias, char *notes, char *notes_url, char *action_url){
+servicegroup *add_servicegroup(char *name, char *alias, char *notes, char *notes_url, char *action_url, char *action_image){
 	servicegroup *new_servicegroup=NULL;
 	int result=OK;
 
@@ -1264,6 +1279,7 @@
 	new_servicegroup->notes=NULL;
 	new_servicegroup->notes_url=NULL;
 	new_servicegroup->action_url=NULL;
+	new_servicegroup->action_image=NULL;
 	new_servicegroup->next=NULL;
 	new_servicegroup->nexthash=NULL;
 
@@ -1284,6 +1300,10 @@
 		if((new_servicegroup->action_url=(char *)strdup(action_url))==NULL)
 			result=ERROR;
 		}
+	if(action_image){
+		if((new_servicegroup->action_image=(char *)strdup(action_image))==NULL)
+			result=ERROR;
+		}
 
 	/* add new service group to skiplist */
 	if(result==OK){
@@ -1762,7 +1782,7 @@
 
 
 /* add a new service to the list in memory */
-service *add_service(char *host_name, char *description, char *display_name, char *check_period, int initial_state, int max_attempts, int parallelize, int accept_passive_checks, double check_interval, double retry_interval, double notification_interval, double first_notification_delay, char *notification_period, int notify_recovery, int notify_unknown, int notify_warning, int notify_critical, int notify_flapping, int notify_downtime, int notifications_enabled, int is_volatile, char *event_handler, int event_handler_enabled, char *check_command, int checks_enabled, int flap_detection_enabled, double low_flap_threshold, double high_flap_threshold, int flap_detection_on_ok, int flap_detection_on_warning, int flap_detection_on_unknown, int flap_detection_on_critical, int stalk_on_ok, int stalk_on_warning, int stalk_on_unknown, int stalk_on_critical, int process_perfdata, int failure_prediction_enabled, char *failure_prediction_options, int check_freshness, int freshness_threshold, char *notes, char *notes_url, char *action_url, char *icon_image, char *icon_image_alt, int retain_status_information, int retain_nonstatus_information, int obsess_over_service){
+service *add_service(char *host_name, char *description, char *display_name, char *check_period, int initial_state, int max_attempts, int parallelize, int accept_passive_checks, double check_interval, double retry_interval, double notification_interval, double first_notification_delay, char *notification_period, int notify_recovery, int notify_unknown, int notify_warning, int notify_critical, int notify_flapping, int notify_downtime, int notifications_enabled, int is_volatile, char *event_handler, int event_handler_enabled, char *check_command, int checks_enabled, int flap_detection_enabled, double low_flap_threshold, double high_flap_threshold, int flap_detection_on_ok, int flap_detection_on_warning, int flap_detection_on_unknown, int flap_detection_on_critical, int stalk_on_ok, int stalk_on_warning, int stalk_on_unknown, int stalk_on_critical, int process_perfdata, int failure_prediction_enabled, char *failure_prediction_options, int check_freshness, int freshness_threshold, char *notes, char *notes_url, char *action_url, char *action_image, char *icon_image, char *icon_image_alt, int retain_status_information, int retain_nonstatus_information, int obsess_over_service){
 	service *new_service=NULL;
 	int result=OK;
 #ifdef NSCORE
@@ -1807,6 +1827,7 @@
 	new_service->notes=NULL;
 	new_service->notes_url=NULL;
 	new_service->action_url=NULL;
+	new_service->action_image=NULL;
 	new_service->icon_image=NULL;
 	new_service->icon_image_alt=NULL;
 	new_service->contact_groups=NULL;
@@ -1866,6 +1887,10 @@
 		if((new_service->action_url=(char *)strdup(action_url))==NULL)
 			result=ERROR;
 	        }
+	if(action_image){
+		if((new_service->action_image=(char *)strdup(action_image))==NULL)
+			result=ERROR;
+	        }
 	if(icon_image){
 		if((new_service->icon_image=(char *)strdup(icon_image))==NULL)
 			result=ERROR;
@@ -3776,6 +3801,7 @@
 		my_free(this_host->notes);
 		my_free(this_host->notes_url);
 		my_free(this_host->action_url);
+		my_free(this_host->action_image);
 		my_free(this_host->icon_image);
 		my_free(this_host->icon_image_alt);
 		my_free(this_host->vrml_image);
@@ -3807,6 +3833,7 @@
 		my_free(this_hostgroup->notes);
 		my_free(this_hostgroup->notes_url);
 		my_free(this_hostgroup->action_url);
+		my_free(this_hostgroup->action_image);
 		my_free(this_hostgroup);
 		this_hostgroup=next_hostgroup;
 		}
@@ -3835,6 +3862,7 @@
 		my_free(this_servicegroup->notes);
 		my_free(this_servicegroup->notes_url);
 		my_free(this_servicegroup->action_url);
+		my_free(this_servicegroup->action_image);
 		my_free(this_servicegroup);
 		this_servicegroup=next_servicegroup;
 		}
@@ -3978,6 +4006,7 @@
 		my_free(this_service->notes);
 		my_free(this_service->notes_url);
 		my_free(this_service->action_url);
+		my_free(this_service->action_image);
 		my_free(this_service->icon_image);
 		my_free(this_service->icon_image_alt);
 		my_free(this_service);
diff -ru nagios-3.0.5.org/html/docs/objectdefinitions.html nagios-3.0.5/html/docs/objectdefinitions.html
--- nagios-3.0.5.org/html/docs/objectdefinitions.html	Tue Nov  4 23:28:40 2008
+++ nagios-3.0.5/html/docs/objectdefinitions.html	Fri Nov 28 12:59:51 2008
@@ -151,6 +151,7 @@
 <tr><td></td><td class="Optional">notes</td><td class="Optional"><i>note_string</i></td></tr>
 <tr><td></td><td class="Optional">notes_url</td><td class="Optional"><i>url</i></td></tr>
 <tr><td></td><td class="Optional">action_url</td><td class="Optional"><i>url</i></td></tr>
+<tr><td></td><td class="Optional">action_image</td><td class="Optional"><i>image_file</i></td></tr>
 <tr><td></td><td class="Optional">icon_image</td><td class="Optional"><i>image_file</i></td></tr>
 <tr><td></td><td class="Optional">icon_image_alt</td><td class="Optional"><i>alt_string</i></td></tr>
 <tr><td></td><td class="Optional">vrml_image</td><td class="Optional"><i>image_file</i></td></tr>
@@ -417,6 +418,12 @@
 </td>
 </tr>
 <tr>
+<td valign="top"><strong>action_image</strong>:</td>
+<td>
+This optional directive is used to define the name of a GIF, PNG, or JPG image that can be used instead of the red "splat" icon for the action_url. If you plan on using relative paths, the base path will be your HTML images directory (i.e. <i>/usr/local/nagios/share/images</i>).
+</td>
+</tr>
+<tr>
 <td valign="top"><strong>icon_image</strong>:</td>
 <td>
 This variable is used to define the name of a GIF, PNG, or JPG image that should be associated with this host.  This image will be displayed in the various places in the CGIs.  The image will look best if it is 40x40 pixels in size.  Images for hosts are assumed to be in the <b>logos/</b> subdirectory in your HTML images directory (i.e. <i>/usr/local/nagios/share/images/logos</i>).
@@ -483,6 +490,7 @@
 <tr><td></td><td class="Optional">notes</td><td class="Optional"><i>note_string</i></td></tr>
 <tr><td></td><td class="Optional">notes_url</td><td class="Optional"><i>url</i></td></tr>
 <tr><td></td><td class="Optional">action_url</td><td class="Optional"><i>url</i></td></tr>
+<tr><td></td><td class="Optional">action_image</td><td class="Optional"><i>image_file</i></td></tr>
 
 <tr><td>&nbsp;&nbsp;&nbsp;</td><td colspan=2 class="Definition">}</td></tr>
 </table>
@@ -541,7 +549,12 @@
 This directive is used to define an optional URL that can be used to provide more actions to be performed on the host group.  If you specify an URL, you will see a red "splat" icon in the CGIs (when you are viewing hostgroup information) that links to the URL you specify here.  Any valid URL can be used.  If you plan on using relative paths, the base path will the the same as what is used to access the CGIs (i.e. <i>/cgi-bin/nagios/</i>).
 </td>
 </tr>
-</table>
+<tr>
+<td valign="top"><strong>action_image</strong>:</td>
+<td>
+This optional directive is used to define the name of a GIF, PNG, or JPG image that can be used instead of the red "splat" icon for the action_url. If you plan on using relative paths, the base path will be your HTML images directory (i.e. <i>/usr/local/nagios/share/images</i>).
+</td>
+</tr>
 
 
 <p>
@@ -603,6 +616,7 @@
 <tr><td></td><td class="Optional">notes</td><td class="Optional"><i>note_string</i></td></tr>
 <tr><td></td><td class="Optional">notes_url</td><td class="Optional"><i>url</i></td></tr>
 <tr><td></td><td class="Optional">action_url</td><td class="Optional"><i>url</i></td></tr>
+<tr><td></td><td class="Optional">action_image</td><td class="Optional"><i>image_file</i></td></tr>
 <tr><td></td><td class="Optional">icon_image</td><td class="Optional"><i>image_file</i></td></tr>
 <tr><td></td><td class="Optional">icon_image_alt</td><td class="Optional"><i>alt_string</i></td></tr>
 
@@ -860,6 +874,12 @@
 </td>
 </tr>
 <tr>
+<td valign="top"><strong>action_image</strong>:</td>
+<td>
+This optional directive is used to define the name of a GIF, PNG, or JPG image that can be used instead of the red "splat" icon for the action_url. If you plan on using relative paths, the base path will be your HTML images directory (i.e. <i>/usr/local/nagios/share/images</i>).
+</td>
+</tr>
+<tr>
 <td valign="top"><strong>icon_image</strong>:</td>
 <td>
 This variable is used to define the name of a GIF, PNG, or JPG image that should be associated with this service.  This image will be displayed in the <a href="cgis.html#status_cgi">status</a> and <a href="cgis.html#extinfo_cgi">extended information</a> CGIs.  The image will look best if it is 40x40 pixels in size.  Images for services are assumed to be in the <b>logos/</b> subdirectory in your HTML images directory (i.e. <i>/usr/local/nagios/share/images/logos</i>).
@@ -904,6 +924,7 @@
 <tr><td></td><td class="Optional">notes</td><td class="Optional"><i>note_string</i></td></tr>
 <tr><td></td><td class="Optional">notes_url</td><td class="Optional"><i>url</i></td></tr>
 <tr><td></td><td class="Optional">action_url</td><td class="Optional"><i>url</i></td></tr>
+<tr><td></td><td class="Optional">action_image</td><td class="Optional"><i>image_file</i></td></tr>
 
 <tr><td>&nbsp;&nbsp;&nbsp;</td><td colspan=2 class="Definition">}</td></tr>
 </table>
@@ -967,6 +988,12 @@
 This directive is used to define an optional URL that can be used to provide more actions to be performed on the service group.  If you specify an URL, you will see a red "splat" icon in the CGIs (when you are viewing service group information) that links to the URL you specify here.  Any valid URL can be used.  If you plan on using relative paths, the base path will the the same as what is used to access the CGIs (i.e. <i>/cgi-bin/nagios/</i>).
 </td>
 </tr>
+<tr>
+<td valign="top"><strong>action_image</strong>:</td>
+<td>
+This optional directive is used to define the name of a GIF, PNG, or JPG image that can be used instead of the red "splat" icon for the action_url. If you plan on using relative paths, the base path will be your HTML images directory (i.e. <i>/usr/local/nagios/share/images</i>).
+</td>
+</tr>
 </table>
 
 
@@ -1859,6 +1886,7 @@
 <tr><td></td><td class="Optional">notes</td><td class="Optional"><i>note_string</i></td></tr>
 <tr><td></td><td class="Optional">notes_url</td><td class="Optional"><i>url</i></td></tr>
 <tr><td></td><td class="Optional">action_url</td><td class="Optional"><i>url</i></td></tr>
+<tr><td></td><td class="Optional">action_image</td><td class="Optional"><i>image_file</i></td></tr>
 <tr><td></td><td class="Optional">icon_image</td><td class="Optional"><i>image_file</i></td></tr>
 <tr><td></td><td class="Optional">icon_image_alt</td><td class="Optional"><i>alt_string</i></td></tr>
 <tr><td></td><td class="Optional">vrml_image</td><td class="Optional"><i>image_file</i></td></tr>
@@ -1912,6 +1940,12 @@
 </td>
 </tr>
 <tr>
+<td valign="top"><strong>action_image</strong>:</td>
+<td>
+This optional directive is used to define the name of a GIF, PNG, or JPG image that can be used instead of the red "splat" icon for the action_url. If you plan on using relative paths, the base path will be your HTML images directory (i.e. <i>/usr/local/nagios/share/images</i>).
+</td>
+</tr>
+<tr>
 <td valign="top"><strong>icon_image</strong>:</td>
 <td>
 This variable is used to define the name of a GIF, PNG, or JPG image that should be associated with this host.  This image will be displayed in the <a href="cgis.html#status_cgi">status</a> and <a href="cgis.html#extinfo_cgi">extended information</a> CGIs.  The image will look best if it is 40x40 pixels in size.  Images for hosts are assumed to be in the <b>logos/</b> subdirectory in your HTML images directory (i.e. <i>/usr/local/nagios/share/images/logos</i>).
@@ -1981,6 +2015,7 @@
 <tr><td></td><td class="Optional">notes</td><td class="Optional"><i>note_string</i></td></tr>
 <tr><td></td><td class="Optional">notes_url</td><td class="Optional"><i>url</i></td></tr>
 <tr><td></td><td class="Optional">action_url</td><td class="Optional"><i>url</i></td></tr>
+<tr><td></td><td class="Optional">action_image</td><td class="Optional"><i>image_file</i></td></tr>
 <tr><td></td><td class="Optional">icon_image</td><td class="Optional"><i>image_file</i></td></tr>
 <tr><td></td><td class="Optional">icon_image_alt</td><td class="Optional"><i>alt_string</i></td></tr>
 
@@ -2030,6 +2065,12 @@
 <td valign="top"><strong>action_url</strong>:</td>
 <td>
 This directive is used to define an optional URL that can be used to provide more actions to be performed on the service.  If you specify an URL, you will see a link that says "Extra Service Actions" in the <a href="cgis.html#extinfo_cgi">extended information</a> CGI (when you are viewing information about the specified service).  Any valid URL can be used.  If you plan on using relative paths, the base path will the the same as what is used to access the CGIs (i.e. <i>/cgi-bin/nagios/</i>).
+</td>
+</tr>
+<tr>
+<td valign="top"><strong>action_image</strong>:</td>
+<td>
+This optional directive is used to define the name of a GIF, PNG, or JPG image that can be used instead of the red "splat" icon for the action_url. If you plan on using relative paths, the base path will be your HTML images directory (i.e. <i>/usr/local/nagios/share/images</i>).
 </td>
 </tr>
 <tr>
diff -ru nagios-3.0.5.org/include/objects.h nagios-3.0.5/include/objects.h
--- nagios-3.0.5.org/include/objects.h	Mon Mar 31 21:09:36 2008
+++ nagios-3.0.5/include/objects.h	Fri Nov 28 12:59:51 2008
@@ -257,7 +257,9 @@
 	hostsmember *members;
 	char    *notes;
 	char    *notes_url;
+	char    *notes_img;
 	char    *action_url;
+	char    *action_image;
 	struct	hostgroup_struct *next;
 	struct	hostgroup_struct *nexthash;
 	}hostgroup;
@@ -311,7 +313,9 @@
 	int     obsess_over_host;
 	char    *notes;
 	char    *notes_url;
+	char    *notes_img;
 	char    *action_url;
+	char    *action_image;
 	char    *icon_image;
 	char    *icon_image_alt;
 	char    *vrml_image;
@@ -396,7 +400,9 @@
 	servicesmember *members;
 	char    *notes;
 	char    *notes_url;
+	char    *notes_img;
 	char    *action_url;
+	char    *action_image;
 	struct	servicegroup_struct *next;
 	struct	servicegroup_struct *nexthash;
 	}servicegroup;
@@ -452,7 +458,9 @@
 	char    *failure_prediction_options;
 	char    *notes;
 	char    *notes_url;
+	char    *notes_img;
 	char    *action_url;
+	char    *action_image;
 	char    *icon_image;
 	char    *icon_image_alt;
 	customvariablesmember *custom_variables;
@@ -639,7 +647,7 @@
 commandsmember *add_service_notification_command_to_contact(contact *,char *);				/* adds a service notification command to a contact definition */
 commandsmember *add_host_notification_command_to_contact(contact *,char *);				/* adds a host notification command to a contact definition */
 customvariablesmember *add_custom_variable_to_contact(contact *,char *,char *);                         /* adds a custom variable to a service definition */
-host *add_host(char *,char *,char *,char *,char *,int,double,double,int,int,int,int,int,int,double,double,char *,int,char *,int,int,char *,int,int,double,double,int,int,int,int,int,int,int,int,char *,int,int,char *,char *,char *,char *,char *,char *,char *,int,int,int,double,double,double,int,int,int,int,int);	/* adds a host definition */
+host *add_host(char *,char *,char *,char *,char *,int,double,double,int,int,int,int,int,int,double,double,char *,int,char *,int,int,char *,int,int,double,double,int,int,int,int,int,int,int,int,char *,int,int,char *,char *,char *,char *,char *,char *,char *,char *,int,int,int,double,double,double,int,int,int,int,int);	/* adds a host definition */
 hostsmember *add_parent_host_to_host(host *,char *);							/* adds a parent host to a host definition */
 hostsmember *add_child_link_to_host(host *,host *);						        /* adds a child host to a host definition */
 contactgroupsmember *add_contactgroup_to_host(host *,char *);					        /* adds a contactgroup to a host definition */
@@ -650,14 +658,14 @@
 timerange *add_timerange_to_timeperiod(timeperiod *,int,unsigned long,unsigned long);			/* adds a timerange to a timeperiod definition */
 daterange *add_exception_to_timeperiod(timeperiod *,int,int,int,int,int,int,int,int,int,int,int,int);
 timerange *add_timerange_to_daterange(daterange *,unsigned long,unsigned long);
-hostgroup *add_hostgroup(char *,char *,char *,char *,char *);						/* adds a hostgroup definition */
+hostgroup *add_hostgroup(char *,char *,char *,char *,char *,char *);					/* adds a hostgroup definition */
 hostsmember *add_host_to_hostgroup(hostgroup *, char *);						/* adds a host to a hostgroup definition */
-servicegroup *add_servicegroup(char *,char *,char *,char *,char *);                                     /* adds a servicegroup definition */
+servicegroup *add_servicegroup(char *,char *,char *,char *,char *,char *);                                     /* adds a servicegroup definition */
 servicesmember *add_service_to_servicegroup(servicegroup *,char *,char *);                              /* adds a service to a servicegroup definition */
 contactgroup *add_contactgroup(char *,char *);								/* adds a contactgroup definition */
 contactsmember *add_contact_to_contactgroup(contactgroup *,char *);					/* adds a contact to a contact group definition */
 command *add_command(char *,char *);									/* adds a command definition */
-service *add_service(char *,char *,char *,char *,int,int,int,int,double,double,double,double,char *,int,int,int,int,int,int,int,int,char *,int,char *,int,int,double,double,int,int,int,int,int,int,int,int,int,int,char *,int,int,char *,char *,char *,char *,char *,int,int,int);	/* adds a service definition */
+service *add_service(char *,char *,char *,char *,int,int,int,int,double,double,double,double,char *,int,int,int,int,int,int,int,int,char *,int,char *,int,int,double,double,int,int,int,int,int,int,int,int,int,int,char *,int,int,char *,char *,char *,char *,char *,char *,int,int,int);	/* adds a service definition */
 contactgroupsmember *add_contactgroup_to_service(service *,char *);					/* adds a contact group to a service definition */
 contactsmember *add_contact_to_service(service *,char *);                                               /* adds a contact to a host definition */
 serviceescalation *add_serviceescalation(char *,char *,int,int,double,char *,int,int,int,int);          /* adds a service escalation definition */
diff -ru nagios-3.0.5.org/xdata/xodtemplate.c nagios-3.0.5/xdata/xodtemplate.c
--- nagios-3.0.5.org/xdata/xodtemplate.c	Mon Jun 23 23:43:22 2008
+++ nagios-3.0.5/xdata/xodtemplate.c	Fri Nov 28 12:59:51 2008
@@ -1110,12 +1110,14 @@
 		new_hostgroup->notes=NULL;
 		new_hostgroup->notes_url=NULL;
 		new_hostgroup->action_url=NULL;
+		new_hostgroup->action_image=NULL;
 		new_hostgroup->have_members=FALSE;
 		new_hostgroup->hostgroup_members=NULL;
 		new_hostgroup->have_hostgroup_members=FALSE;
 		new_hostgroup->have_notes=FALSE;
 		new_hostgroup->have_notes_url=FALSE;
 		new_hostgroup->have_action_url=FALSE;
+		new_hostgroup->have_action_image=FALSE;
 		new_hostgroup->has_been_resolved=FALSE;
 		new_hostgroup->register_object=TRUE;
 
@@ -1166,12 +1168,14 @@
 		new_servicegroup->notes=NULL;
 		new_servicegroup->notes_url=NULL;
 		new_servicegroup->action_url=NULL;
+		new_servicegroup->action_image=NULL;
 		new_servicegroup->have_members=FALSE;
 		new_servicegroup->servicegroup_members=NULL;
 		new_servicegroup->have_servicegroup_members=FALSE;
 		new_servicegroup->have_notes=FALSE;
 		new_servicegroup->have_notes_url=FALSE;
 		new_servicegroup->have_action_url=FALSE;
+		new_servicegroup->have_action_image=FALSE;
 		new_servicegroup->has_been_resolved=FALSE;
 		new_servicegroup->register_object=TRUE;
 
@@ -1478,7 +1482,9 @@
 		new_host->notes_url=NULL;
 		new_host->have_notes_url=FALSE;
 		new_host->action_url=NULL;
+		new_host->action_image=NULL;
 		new_host->have_action_url=FALSE;
+		new_host->have_action_image=FALSE;
 		new_host->icon_image=NULL;
 		new_host->have_icon_image=FALSE;
 		new_host->icon_image_alt=NULL;
@@ -1679,7 +1685,9 @@
 		new_service->notes_url=NULL;
 		new_service->have_notes_url=FALSE;
 		new_service->action_url=NULL;
+		new_service->action_image=NULL;
 		new_service->have_action_url=FALSE;
+		new_service->have_action_image=FALSE;
 		new_service->icon_image=NULL;
 		new_service->have_icon_image=FALSE;
 		new_service->icon_image_alt=NULL;
@@ -1872,7 +1880,9 @@
 		new_hostextinfo->notes_url=NULL;
 		new_hostextinfo->have_notes_url=FALSE;
 		new_hostextinfo->action_url=NULL;
+		new_hostextinfo->action_image=NULL;
 		new_hostextinfo->have_action_url=FALSE;
+		new_hostextinfo->have_action_image=FALSE;
 		new_hostextinfo->icon_image=NULL;
 		new_hostextinfo->have_icon_image=FALSE;
 		new_hostextinfo->icon_image_alt=NULL;
@@ -1943,7 +1953,9 @@
 		new_serviceextinfo->notes_url=NULL;
 		new_serviceextinfo->have_notes_url=FALSE;
 		new_serviceextinfo->action_url=NULL;
+		new_serviceextinfo->action_image=NULL;
 		new_serviceextinfo->have_action_url=FALSE;
+		new_serviceextinfo->have_action_image=FALSE;
 		new_serviceextinfo->icon_image=NULL;
 		new_serviceextinfo->have_icon_image=FALSE;
 		new_serviceextinfo->icon_image_alt=NULL;
@@ -2492,6 +2504,13 @@
 			        }
 			temp_hostgroup->have_action_url=TRUE;
 		        }
+		else if(!strcmp(variable,"action_image")){
+			if(strcmp(value,XODTEMPLATE_NULL)){
+				if((temp_hostgroup->action_image=(char *)strdup(value))==NULL)
+					result=ERROR;
+			        }
+			temp_hostgroup->have_action_image=TRUE;
+		        }
 		else if(!strcmp(variable,"register"))
 			temp_hostgroup->register_object=(atoi(value)>0)?TRUE:FALSE;
 		else{
@@ -2616,6 +2635,13 @@
 			        }
 			temp_servicegroup->have_action_url=TRUE;
 		        }
+		else if(!strcmp(variable,"action_image")){
+			if(strcmp(value,XODTEMPLATE_NULL)){
+				if((temp_servicegroup->action_image=(char *)strdup(value))==NULL)
+					result=ERROR;
+			        }
+			temp_servicegroup->have_action_image=TRUE;
+		        }
 		else if(!strcmp(variable,"register"))
 			temp_servicegroup->register_object=(atoi(value)>0)?TRUE:FALSE;
 		else{
@@ -3410,6 +3436,13 @@
 			        }
 			temp_host->have_action_url=TRUE;
 		        }
+		else if(!strcmp(variable,"action_image")){
+			if(strcmp(value,XODTEMPLATE_NULL)){
+				if((temp_host->action_image=(char *)strdup(value))==NULL)
+					result=ERROR;
+			        }
+			temp_host->have_action_image=TRUE;
+		        }
 		else if(!strcmp(variable,"icon_image")){
 			if(strcmp(value,XODTEMPLATE_NULL)){
 				if((temp_host->icon_image=(char *)strdup(value))==NULL)
@@ -3883,6 +3916,13 @@
 			        }
 			temp_service->have_action_url=TRUE;
 		        }
+		else if(!strcmp(variable,"action_image")){
+			if(strcmp(value,XODTEMPLATE_NULL)){
+				if((temp_service->action_image=(char *)strdup(value))==NULL)
+					result=ERROR;
+			        }
+			temp_service->have_action_image=TRUE;
+		        }
 		else if(!strcmp(variable,"icon_image")){
 			if(strcmp(value,XODTEMPLATE_NULL)){
 				if((temp_service->icon_image=(char *)strdup(value))==NULL)
@@ -4505,6 +4545,13 @@
 			        }
 			temp_hostextinfo->have_action_url=TRUE;
 		        }
+		else if(!strcmp(variable,"action_image")){
+			if(strcmp(value,XODTEMPLATE_NULL)){
+				if((temp_hostextinfo->action_image=(char *)strdup(value))==NULL)
+					result=ERROR;
+			        }
+			temp_hostextinfo->have_action_image=TRUE;
+		        }
 		else if(!strcmp(variable,"icon_image")){
 			if(strcmp(value,XODTEMPLATE_NULL)){
 				if((temp_hostextinfo->icon_image=(char *)strdup(value))==NULL)
@@ -4664,6 +4711,13 @@
 			        }
 			temp_serviceextinfo->have_action_url=TRUE;
 		        }
+		else if(!strcmp(variable,"action_image")){
+			if(strcmp(value,XODTEMPLATE_NULL)){
+				if((temp_serviceextinfo->action_image=(char *)strdup(value))==NULL)
+					result=ERROR;
+			        }
+			temp_serviceextinfo->have_action_image=TRUE;
+		        }
 		else if(!strcmp(variable,"icon_image")){
 			if(strcmp(value,XODTEMPLATE_NULL)){
 				if((temp_serviceextinfo->icon_image=(char *)strdup(value))==NULL)
@@ -6126,7 +6180,9 @@
 	new_service->notes_url=NULL;
 	new_service->have_notes_url=temp_service->have_notes_url;
 	new_service->action_url=NULL;
+	new_service->action_image=NULL;
 	new_service->have_action_url=temp_service->have_action_url;
+	new_service->have_action_image=temp_service->have_action_image;
 	new_service->icon_image=NULL;
 	new_service->have_icon_image=temp_service->have_icon_image;
 	new_service->icon_image_alt=NULL;
@@ -6169,6 +6225,8 @@
 		error=TRUE;
 	if(temp_service->action_url!=NULL && (new_service->action_url=(char *)strdup(temp_service->action_url))==NULL)
 		error=TRUE;
+	if(temp_service->action_image!=NULL && (new_service->action_image=(char *)strdup(temp_service->action_image))==NULL)
+		error=TRUE;
 	if(temp_service->icon_image!=NULL && (new_service->icon_image=(char *)strdup(temp_service->icon_image))==NULL)
 		error=TRUE;
 	if(temp_service->icon_image_alt!=NULL && (new_service->icon_image_alt=(char *)strdup(temp_service->icon_image_alt))==NULL)
@@ -6191,6 +6249,7 @@
 		my_free(new_service->notes);
 		my_free(new_service->notes_url);
 		my_free(new_service->action_url);
+		my_free(new_service->action_image);
 		my_free(new_service->icon_image);
 		my_free(new_service->icon_image_alt);
 		my_free(new_service);
@@ -6646,7 +6705,9 @@
 	new_hostextinfo->notes_url=NULL;
 	new_hostextinfo->have_notes_url=this_hostextinfo->have_notes_url;
 	new_hostextinfo->action_url=NULL;
+	new_hostextinfo->action_image=NULL;
 	new_hostextinfo->have_action_url=this_hostextinfo->have_action_url;
+	new_hostextinfo->have_action_image=this_hostextinfo->have_action_image;
 	new_hostextinfo->icon_image=NULL;
 	new_hostextinfo->have_icon_image=this_hostextinfo->have_icon_image;
 	new_hostextinfo->icon_image_alt=NULL;
@@ -6669,6 +6730,8 @@
 		error=TRUE;
 	if(this_hostextinfo->action_url!=NULL && (new_hostextinfo->action_url=(char *)strdup(this_hostextinfo->action_url))==NULL)
 		error=TRUE;
+	if(this_hostextinfo->action_image!=NULL && (new_hostextinfo->action_image=(char *)strdup(this_hostextinfo->action_image))==NULL)
+		error=TRUE;
 	if(this_hostextinfo->icon_image!=NULL && (new_hostextinfo->icon_image=(char *)strdup(this_hostextinfo->icon_image))==NULL)
 		error=TRUE;
 	if(this_hostextinfo->icon_image_alt!=NULL && (new_hostextinfo->icon_image_alt=(char *)strdup(this_hostextinfo->icon_image_alt))==NULL)
@@ -6685,6 +6748,7 @@
 		my_free(new_hostextinfo->notes);
 		my_free(new_hostextinfo->notes_url);
 		my_free(new_hostextinfo->action_url);
+		my_free(new_hostextinfo->action_image);
 		my_free(new_hostextinfo->icon_image);
 		my_free(new_hostextinfo->icon_image_alt);
 		my_free(new_hostextinfo->vrml_image);
@@ -6740,7 +6804,9 @@
 	new_serviceextinfo->notes_url=NULL;
 	new_serviceextinfo->have_notes_url=this_serviceextinfo->have_notes_url;
 	new_serviceextinfo->action_url=NULL;
+	new_serviceextinfo->action_image=NULL;
 	new_serviceextinfo->have_action_url=this_serviceextinfo->have_action_url;
+	new_serviceextinfo->have_action_image=this_serviceextinfo->have_action_image;
 	new_serviceextinfo->icon_image=NULL;
 	new_serviceextinfo->have_icon_image=this_serviceextinfo->have_icon_image;
 	new_serviceextinfo->icon_image_alt=NULL;
@@ -6761,6 +6827,8 @@
 		error=TRUE;
 	if(this_serviceextinfo->action_url!=NULL && (new_serviceextinfo->action_url=(char *)strdup(this_serviceextinfo->action_url))==NULL)
 		error=TRUE;
+	if(this_serviceextinfo->action_image!=NULL && (new_serviceextinfo->action_image=(char *)strdup(this_serviceextinfo->action_image))==NULL)
+		error=TRUE;
 	if(this_serviceextinfo->icon_image!=NULL && (new_serviceextinfo->icon_image=(char *)strdup(this_serviceextinfo->icon_image))==NULL)
 		error=TRUE;
 	if(this_serviceextinfo->icon_image_alt!=NULL && (new_serviceextinfo->icon_image_alt=(char *)strdup(this_serviceextinfo->icon_image_alt))==NULL)
@@ -6774,6 +6842,7 @@
 		my_free(new_serviceextinfo->notes);
 		my_free(new_serviceextinfo->notes_url);
 		my_free(new_serviceextinfo->action_url);
+		my_free(new_serviceextinfo->action_image);
 		my_free(new_serviceextinfo->icon_image);
 		my_free(new_serviceextinfo->icon_image_alt);
 		my_free(new_serviceextinfo);
@@ -7355,6 +7424,11 @@
 				this_hostgroup->action_url=(char *)strdup(template_hostgroup->action_url);
 			this_hostgroup->have_action_url=TRUE;
 		        }
+		if(this_hostgroup->have_action_image==FALSE && template_hostgroup->have_action_image==TRUE){
+			if(this_hostgroup->action_image==NULL && template_hostgroup->action_image!=NULL)
+				this_hostgroup->action_image=(char *)strdup(template_hostgroup->action_image);
+			this_hostgroup->have_action_image=TRUE;
+		        }
 	        }
 
 	my_free(template_names);
@@ -7426,6 +7500,11 @@
 				this_servicegroup->action_url=(char *)strdup(template_servicegroup->action_url);
 			this_servicegroup->have_action_url=TRUE;
 		        }
+		if(this_servicegroup->have_action_image==FALSE && template_servicegroup->have_action_image==TRUE){
+			if(this_servicegroup->action_image==NULL && template_servicegroup->action_image!=NULL)
+				this_servicegroup->action_image=(char *)strdup(template_servicegroup->action_image);
+			this_servicegroup->have_action_image=TRUE;
+		        }
 	        }
 
 	my_free(template_names);
@@ -7827,6 +7906,11 @@
 				this_host->action_url=(char *)strdup(template_host->action_url);
 			this_host->have_action_url=TRUE;
 		        }
+		if(this_host->have_action_image==FALSE && template_host->have_action_image==TRUE){
+			if(this_host->action_image==NULL && template_host->action_image!=NULL)
+				this_host->action_image=(char *)strdup(template_host->action_image);
+			this_host->have_action_image=TRUE;
+		        }
 		if(this_host->have_icon_image==FALSE && template_host->have_icon_image==TRUE){
 			if(this_host->icon_image==NULL && template_host->icon_image!=NULL)
 				this_host->icon_image=(char *)strdup(template_host->icon_image);
@@ -8078,6 +8162,11 @@
 				this_service->action_url=(char *)strdup(template_service->action_url);
 			this_service->have_action_url=TRUE;
 		        }
+		if(this_service->have_action_image==FALSE && template_service->have_action_image==TRUE){
+			if(this_service->action_image==NULL && template_service->action_image!=NULL)
+				this_service->action_image=(char *)strdup(template_service->action_image);
+			this_service->have_action_image=TRUE;
+		        }
 		if(this_service->have_icon_image==FALSE && template_service->have_icon_image==TRUE){
 			if(this_service->icon_image==NULL && template_service->icon_image!=NULL)
 				this_service->icon_image=(char *)strdup(template_service->icon_image);
@@ -8434,6 +8523,11 @@
 				this_hostextinfo->action_url=(char *)strdup(template_hostextinfo->action_url);
 			this_hostextinfo->have_action_url=TRUE;
 		        }
+		if(this_hostextinfo->have_action_image==FALSE && template_hostextinfo->have_action_image==TRUE){
+			if(this_hostextinfo->action_image==NULL && template_hostextinfo->action_image!=NULL)
+				this_hostextinfo->action_image=(char *)strdup(template_hostextinfo->action_image);
+			this_hostextinfo->have_action_image=TRUE;
+		        }
 		if(this_hostextinfo->have_icon_image==FALSE && template_hostextinfo->have_icon_image==TRUE){
 			if(this_hostextinfo->icon_image==NULL && template_hostextinfo->icon_image!=NULL)
 				this_hostextinfo->icon_image=(char *)strdup(template_hostextinfo->icon_image);
@@ -8542,6 +8636,11 @@
 			this_serviceextinfo->action_url=(char *)strdup(template_serviceextinfo->action_url);
 			this_serviceextinfo->have_action_url=TRUE;
 		        }
+		if(this_serviceextinfo->have_action_image==FALSE && template_serviceextinfo->have_action_image==TRUE){
+		if(this_serviceextinfo->action_image==NULL && template_serviceextinfo->action_image!=NULL)
+			this_serviceextinfo->action_image=(char *)strdup(template_serviceextinfo->action_image);
+			this_serviceextinfo->have_action_image=TRUE;
+		        }
 		if(this_serviceextinfo->have_icon_image==FALSE && template_serviceextinfo->have_icon_image==TRUE){
 		if(this_serviceextinfo->icon_image==NULL && template_serviceextinfo->icon_image!=NULL)
 			this_serviceextinfo->icon_image=(char *)strdup(template_serviceextinfo->icon_image);
@@ -10076,7 +10175,7 @@
 		return OK;
 
 	/* add the  host group */
-	new_hostgroup=add_hostgroup(this_hostgroup->hostgroup_name,this_hostgroup->alias,this_hostgroup->notes,this_hostgroup->notes_url,this_hostgroup->action_url);
+	new_hostgroup=add_hostgroup(this_hostgroup->hostgroup_name,this_hostgroup->alias,this_hostgroup->notes,this_hostgroup->notes_url,this_hostgroup->action_url,this_hostgroup->action_image);
 
 	/* return with an error if we couldn't add the hostgroup */
 	if(new_hostgroup==NULL){
@@ -10123,7 +10222,7 @@
 		return OK;
 
 	/* add the  service group */
-	new_servicegroup=add_servicegroup(this_servicegroup->servicegroup_name,this_servicegroup->alias,this_servicegroup->notes,this_servicegroup->notes_url,this_servicegroup->action_url);
+	new_servicegroup=add_servicegroup(this_servicegroup->servicegroup_name,this_servicegroup->alias,this_servicegroup->notes,this_servicegroup->notes_url,this_servicegroup->action_url,this_servicegroup->action_image);
 
 	/* return with an error if we couldn't add the servicegroup */
 	if(new_servicegroup==NULL){
@@ -10369,7 +10468,7 @@
 		this_host->address=(char *)strdup(this_host->host_name);
 
 	/* add the host definition */
-	new_host=add_host(this_host->host_name,this_host->display_name,this_host->alias,(this_host->address==NULL)?this_host->host_name:this_host->address,this_host->check_period,this_host->initial_state,this_host->check_interval,this_host->retry_interval,this_host->max_check_attempts,this_host->notify_on_recovery,this_host->notify_on_down,this_host->notify_on_unreachable,this_host->notify_on_flapping,this_host->notify_on_downtime,this_host->notification_interval,this_host->first_notification_delay,this_host->notification_period,this_host->notifications_enabled,this_host->check_command,this_host->active_checks_enabled,this_host->passive_checks_enabled,this_host->event_handler,this_host->event_handler_enabled,this_host->flap_detection_enabled,this_host->low_flap_threshold,this_host->high_flap_threshold,this_host->flap_detection_on_up,this_host->flap_detection_on_down,this_host->flap_detection_on_unreachable,this_host->stalk_on_up,this_host->stalk_on_down,this_host->stalk_on_unreachable,this_host->process_perf_data,this_host->failure_prediction_enabled,this_host->failure_prediction_options,this_host->check_freshness,this_host->freshness_threshold,this_host->notes,this_host->notes_url,this_host->action_url,this_host->icon_image,this_host->icon_image_alt,this_host->vrml_image,this_host->statusmap_image,this_host->x_2d,this_host->y_2d,this_host->have_2d_coords,this_host->x_3d,this_host->y_3d,this_host->z_3d,this_host->have_3d_coords,TRUE,this_host->retain_status_information,this_host->retain_nonstatus_information,this_host->obsess_over_host);
+	new_host=add_host(this_host->host_name,this_host->display_name,this_host->alias,(this_host->address==NULL)?this_host->host_name:this_host->address,this_host->check_period,this_host->initial_state,this_host->check_interval,this_host->retry_interval,this_host->max_check_attempts,this_host->notify_on_recovery,this_host->notify_on_down,this_host->notify_on_unreachable,this_host->notify_on_flapping,this_host->notify_on_downtime,this_host->notification_interval,this_host->first_notification_delay,this_host->notification_period,this_host->notifications_enabled,this_host->check_command,this_host->active_checks_enabled,this_host->passive_checks_enabled,this_host->event_handler,this_host->event_handler_enabled,this_host->flap_detection_enabled,this_host->low_flap_threshold,this_host->high_flap_threshold,this_host->flap_detection_on_up,this_host->flap_detection_on_down,this_host->flap_detection_on_unreachable,this_host->stalk_on_up,this_host->stalk_on_down,this_host->stalk_on_unreachable,this_host->process_perf_data,this_host->failure_prediction_enabled,this_host->failure_prediction_options,this_host->check_freshness,this_host->freshness_threshold,this_host->notes,this_host->notes_url,this_host->action_url,this_host->action_image,this_host->icon_image,this_host->icon_image_alt,this_host->vrml_image,this_host->statusmap_image,this_host->x_2d,this_host->y_2d,this_host->have_2d_coords,this_host->x_3d,this_host->y_3d,this_host->z_3d,this_host->have_3d_coords,TRUE,this_host->retain_status_information,this_host->retain_nonstatus_information,this_host->obsess_over_host);
 
 
 	/* return with an error if we couldn't add the host */
@@ -10456,7 +10555,7 @@
 		return OK;
 
 	/* add the service */
-	new_service=add_service(this_service->host_name,this_service->service_description,this_service->display_name,this_service->check_period,this_service->initial_state,this_service->max_check_attempts,this_service->parallelize_check,this_service->passive_checks_enabled,this_service->check_interval,this_service->retry_interval,this_service->notification_interval,this_service->first_notification_delay,this_service->notification_period,this_service->notify_on_recovery,this_service->notify_on_unknown,this_service->notify_on_warning,this_service->notify_on_critical,this_service->notify_on_flapping,this_service->notify_on_downtime,this_service->notifications_enabled,this_service->is_volatile,this_service->event_handler,this_service->event_handler_enabled,this_service->check_command,this_service->active_checks_enabled,this_service->flap_detection_enabled,this_service->low_flap_threshold,this_service->high_flap_threshold,this_service->flap_detection_on_ok,this_service->flap_detection_on_warning,this_service->flap_detection_on_unknown,this_service->flap_detection_on_critical,this_service->stalk_on_ok,this_service->stalk_on_warning,this_service->stalk_on_unknown,this_service->stalk_on_critical,this_service->process_perf_data,this_service->failure_prediction_enabled,this_service->failure_prediction_options,this_service->check_freshness,this_service->freshness_threshold,this_service->notes,this_service->notes_url,this_service->action_url,this_service->icon_image,this_service->icon_image_alt,this_service->retain_status_information,this_service->retain_nonstatus_information,this_service->obsess_over_service);
+	new_service=add_service(this_service->host_name,this_service->service_description,this_service->display_name,this_service->check_period,this_service->initial_state,this_service->max_check_attempts,this_service->parallelize_check,this_service->passive_checks_enabled,this_service->check_interval,this_service->retry_interval,this_service->notification_interval,this_service->first_notification_delay,this_service->notification_period,this_service->notify_on_recovery,this_service->notify_on_unknown,this_service->notify_on_warning,this_service->notify_on_critical,this_service->notify_on_flapping,this_service->notify_on_downtime,this_service->notifications_enabled,this_service->is_volatile,this_service->event_handler,this_service->event_handler_enabled,this_service->check_command,this_service->active_checks_enabled,this_service->flap_detection_enabled,this_service->low_flap_threshold,this_service->high_flap_threshold,this_service->flap_detection_on_ok,this_service->flap_detection_on_warning,this_service->flap_detection_on_unknown,this_service->flap_detection_on_critical,this_service->stalk_on_ok,this_service->stalk_on_warning,this_service->stalk_on_unknown,this_service->stalk_on_critical,this_service->process_perf_data,this_service->failure_prediction_enabled,this_service->failure_prediction_options,this_service->check_freshness,this_service->freshness_threshold,this_service->notes,this_service->notes_url,this_service->action_url,this_service->action_image,this_service->icon_image,this_service->icon_image_alt,this_service->retain_status_information,this_service->retain_nonstatus_information,this_service->obsess_over_service);
 
 	/* return with an error if we couldn't add the service */
 	if(new_service==NULL){
@@ -11470,6 +11569,8 @@
 		this_service->notes_url=strdup(this_serviceextinfo->notes_url);
 	if(this_service->action_url==NULL && this_serviceextinfo->action_url!=NULL)
 		this_service->action_url=strdup(this_serviceextinfo->action_url);
+	if(this_service->action_image==NULL && this_serviceextinfo->action_image!=NULL)
+		this_service->action_image=strdup(this_serviceextinfo->action_image);
 	if(this_service->icon_image==NULL && this_serviceextinfo->icon_image!=NULL)
 		this_service->icon_image=strdup(this_serviceextinfo->icon_image);
 	if(this_service->icon_image_alt==NULL && this_serviceextinfo->icon_image_alt!=NULL)
@@ -11491,6 +11592,8 @@
 		this_host->notes_url=strdup(this_hostextinfo->notes_url);
 	if(this_host->action_url==NULL && this_hostextinfo->action_url!=NULL)
 		this_host->action_url=strdup(this_hostextinfo->action_url);
+	if(this_host->action_image==NULL && this_hostextinfo->action_image!=NULL)
+		this_host->action_image=strdup(this_hostextinfo->action_image);
 	if(this_host->icon_image==NULL && this_hostextinfo->icon_image!=NULL)
 		this_host->icon_image=strdup(this_hostextinfo->icon_image);
 	if(this_host->icon_image_alt==NULL && this_hostextinfo->icon_image_alt!=NULL)
@@ -11698,6 +11801,8 @@
 			fprintf(fp,"\tnotes_url\t%s\n",temp_hostgroup->notes_url);
 		if(temp_hostgroup->action_url)
 			fprintf(fp,"\taction_url\t%s\n",temp_hostgroup->action_url);
+		if(temp_hostgroup->action_image)
+			fprintf(fp,"\taction_image\t%s\n",temp_hostgroup->action_image);
 		fprintf(fp,"\t}\n\n");
 	        }
 
@@ -11720,6 +11825,8 @@
 			fprintf(fp,"\tnotes_url\t%s\n",temp_servicegroup->notes_url);
 		if(temp_servicegroup->action_url)
 			fprintf(fp,"\taction_url\t%s\n",temp_servicegroup->action_url);
+		if(temp_servicegroup->action_image)
+			fprintf(fp,"\taction_image\t%s\n",temp_servicegroup->action_image);
 		fprintf(fp,"\t}\n\n");
 	        }
 
@@ -11908,6 +12015,8 @@
 			fprintf(fp,"\tnotes_url\t%s\n",temp_host->notes_url);
 		if(temp_host->action_url)
 			fprintf(fp,"\taction_url\t%s\n",temp_host->action_url);
+		if(temp_host->action_image)
+			fprintf(fp,"\taction_image\t%s\n",temp_host->action_image);
 		fprintf(fp,"\tretain_status_information\t%d\n",temp_host->retain_status_information);
 		fprintf(fp,"\tretain_nonstatus_information\t%d\n",temp_host->retain_nonstatus_information);
 
@@ -12029,6 +12138,8 @@
 			fprintf(fp,"\tnotes_url\t%s\n",temp_service->notes_url);
 		if(temp_service->action_url)
 			fprintf(fp,"\taction_url\t%s\n",temp_service->action_url);
+		if(temp_service->action_image)
+			fprintf(fp,"\taction_image\t%s\n",temp_service->action_image);
 		fprintf(fp,"\tretain_status_information\t%d\n",temp_service->retain_status_information);
 		fprintf(fp,"\tretain_nonstatus_information\t%d\n",temp_service->retain_nonstatus_information);
 
@@ -12907,6 +13018,7 @@
 		my_free(this_hostgroup->notes);
 		my_free(this_hostgroup->notes_url);
 		my_free(this_hostgroup->action_url);
+		my_free(this_hostgroup->action_image);
 		my_free(this_hostgroup);
 	        }
 	xodtemplate_hostgroup_list=NULL;
@@ -12924,6 +13036,7 @@
 		my_free(this_servicegroup->notes);
 		my_free(this_servicegroup->notes_url);
 		my_free(this_servicegroup->action_url);
+		my_free(this_servicegroup->action_image);
 		my_free(this_servicegroup);
 	        }
 	xodtemplate_servicegroup_list=NULL;
@@ -13028,6 +13141,7 @@
 		my_free(this_host->notes);
 		my_free(this_host->notes_url);
 		my_free(this_host->action_url);
+		my_free(this_host->action_image);
 		my_free(this_host->icon_image);
 		my_free(this_host->icon_image_alt);
 		my_free(this_host->vrml_image);
@@ -13067,6 +13181,7 @@
 		my_free(this_service->notes);
 		my_free(this_service->notes_url);
 		my_free(this_service->action_url);
+		my_free(this_service->action_image);
 		my_free(this_service->icon_image);
 		my_free(this_service->icon_image_alt);
 		my_free(this_service);
@@ -13114,6 +13229,7 @@
 		my_free(this_hostextinfo->notes);
 		my_free(this_hostextinfo->notes_url);
 		my_free(this_hostextinfo->action_url);
+		my_free(this_hostextinfo->action_image);
 		my_free(this_hostextinfo->icon_image);
 		my_free(this_hostextinfo->icon_image_alt);
 		my_free(this_hostextinfo->vrml_image);
@@ -13134,6 +13250,7 @@
 		my_free(this_serviceextinfo->notes);
 		my_free(this_serviceextinfo->notes_url);
 		my_free(this_serviceextinfo->action_url);
+		my_free(this_serviceextinfo->action_image);
 		my_free(this_serviceextinfo->icon_image);
 		my_free(this_serviceextinfo->icon_image_alt);
 		my_free(this_serviceextinfo);
diff -ru nagios-3.0.5.org/xdata/xodtemplate.h nagios-3.0.5/xdata/xodtemplate.h
--- nagios-3.0.5.org/xdata/xodtemplate.h	Thu Feb 28 20:27:55 2008
+++ nagios-3.0.5/xdata/xodtemplate.h	Fri Nov 28 12:59:51 2008
@@ -269,7 +269,9 @@
 	char      *failure_prediction_options;
 	char      *notes;
 	char      *notes_url;
+	char      *notes_img;
 	char      *action_url;
+	char      *action_image;
 	char      *icon_image;
 	char      *icon_image_alt;
 	char      *vrml_image;
@@ -295,7 +297,9 @@
 	int       have_failure_prediction_options;
 	int       have_notes;
 	int       have_notes_url;
+	int       have_notes_img;
 	int       have_action_url;
+	int       have_action_image;
 	int       have_icon_image;
 	int       have_icon_image_alt;
 	int       have_vrml_image;
@@ -346,13 +350,17 @@
 	char      *hostgroup_members;
 	char      *notes;
 	char      *notes_url;
+	char      *notes_img;
 	char      *action_url;
+	char      *action_image;
 
 	int       have_members;
 	int       have_hostgroup_members;
 	int       have_notes;
 	int       have_notes_url;
+	int       have_notes_img;
 	int       have_action_url;
+	int       have_action_image;
 
 	int       has_been_resolved;
 	int       register_object;
@@ -415,7 +423,9 @@
 	char       *failure_prediction_options;
 	char       *notes;
 	char       *notes_url;
+	char       *notes_img;
 	char       *action_url;
+	char       *action_image;
 	char       *icon_image;
 	char       *icon_image_alt;
 	int        retain_status_information;
@@ -436,7 +446,9 @@
 	int        have_failure_prediction_options;
 	int        have_notes;
 	int        have_notes_url;
+	int        have_notes_img;
 	int        have_action_url;
+	int        have_action_image;
 	int        have_icon_image;
 	int        have_icon_image_alt;
 
@@ -486,13 +498,17 @@
 	char      *servicegroup_members;
 	char      *notes;
 	char      *notes_url;
+	char      *notes_img;
 	char      *action_url;
+	char      *action_image;
 
 	int       have_members;
 	int       have_servicegroup_members;
 	int       have_notes;
 	int       have_notes_url;
+	int       have_notes_img;
 	int       have_action_url;
+	int       have_action_image;
 
 	int       has_been_resolved;
 	int       register_object;
@@ -674,7 +690,9 @@
 	char       *hostgroup_name;
 	char       *notes;
 	char       *notes_url;
+	char       *notes_img;
 	char       *action_url;
+	char       *action_image;
 	char       *icon_image;
 	char       *icon_image_alt;
 	char       *vrml_image;
@@ -689,7 +707,9 @@
 	int        have_hostgroup_name;
 	int        have_notes;
 	int        have_notes_url;
+	int        have_notes_img;
 	int        have_action_url;
+	int        have_action_image;
 	int        have_icon_image;
 	int        have_icon_image_alt;
 	int        have_vrml_image;
@@ -716,7 +736,9 @@
 	char       *service_description;
 	char       *notes;
 	char       *notes_url;
+	char       *notes_img;
 	char       *action_url;
+	char       *action_image;
 	char       *icon_image;
 	char       *icon_image_alt;
 
@@ -725,7 +747,9 @@
 	int        have_service_description;
 	int        have_notes;
 	int        have_notes_url;
+	int        have_notes_img;
 	int        have_action_url;
+	int        have_action_image;
 	int        have_icon_image;
 	int        have_icon_image_alt;
 
