--- loncom/homework/imageresponse.pm	2003/11/10 23:29:27	1.40
+++ loncom/homework/imageresponse.pm	2003/11/11 00:39:33	1.42
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # image click response style
 #
-# $Id: imageresponse.pm,v 1.40 2003/11/10 23:29:27 albertel Exp $
+# $Id: imageresponse.pm,v 1.42 2003/11/11 00:39:33 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -104,41 +104,49 @@ sub whichfoils {
 }
 
 sub prep_image {
-    my ($image)=@_;
+    my ($image,$mode,$name)=@_;
     my $part=$Apache::inputtags::part;
-    my $id=$Apache::inputtags::response['-1'];
-    my $token=$Apache::lonxml::curdepth.'_'.$$;
-    my $args="BGIMG=".$image;
-    &Apache::lonxml::debug("args is $args image is $image");
-    my ($x,$y)=split(/:/,$Apache::lonhomework::history{"resource.$part.$id.submission"});
+    my $respid=$Apache::inputtags::response['-1'];
+    my $id=&Apache::loncommon::get_cgi_id();
+    my %x;
+    $x{"cgi.$id.BGIMG"}=$image;
+    my ($x,$y)=split(/:/,$Apache::lonhomework::history{"resource.$part.$respid.submission"});
     #draws 2 xs on the image at the clicked location
     #one in white and then one in red on top of the one in white
     if (defined($x) && defined($y)) {
-	$args.="&LINECOUNT=4";
+	$x{"cgi.$id.LINECOUNT"}=4;
 	my $length = 6;
 	my $width = 1;
 	my $extrawidth = 2;
-	$args.="&LINEW0=".($width+$extrawidth);
-	$args.="&LINEC0=FFFFFF";
-	$args.="&LINEX10=".($x-$length)."&LINEY10=".($y-$length);
-	$args.="&LINEX20=".($x+$length)."&LINEY20=".($y+$length);
-	$args.="&LINEW1=".($width+$extrawidth);
-	$args.="&LINEC1=FFFFFF";
-	$args.="&LINEX11=".($x-$length)."&LINEY11=".($y+$length);
-	$args.="&LINEX21=".($x+$length)."&LINEY21=".($y-$length);
-	$args.="&LINEW2=$width";
-	$args.="&LINEC2=FF0000";
-	$args.="&LINEX12=".($x-$length)."&LINEY12=".($y-$length);
-	$args.="&LINEX22=".($x+$length)."&LINEY22=".($y+$length);
-	$args.="&LINEW3=$width";
-	$args.="&LINEC3=FF0000";
-	$args.="&LINEX13=".($x-$length)."&LINEY13=".($y+$length);
-	$args.="&LINEX23=".($x+$length)."&LINEY23=".($y-$length);
+	$x{"cgi.$id.LINE0"}=
+	    join(':',(($x-$length),($y-$length),($x+$length),($y+$length),
+		      "FFFFFF",($width+$extrawidth)));
+	$x{"cgi.$id.LINE1"}=
+	    join(':',(($x-$length),($y+$length),($x+$length),($y-$length),
+		      "FFFFFF",($width+$extrawidth)));
+	$x{"cgi.$id.LINE2"}=
+	    join(':',(($x-$length),($y-$length),($x+$length),($y+$length),
+		      "FF0000",($width)));
+	$x{"cgi.$id.LINE3"}=
+	    join(':',(($x-$length),($y+$length),($x+$length),($y-$length),
+		      "FF0000",($width)));
     }
-    &Apache::lonxml::debug("args is $args image is $image");
-    &Apache::lonnet::appenv(("imagerequest.$token"=>
-			     &Apache::lonnet::escape($args)));
-    return $token;
+    if ($mode eq 'answer') {
+	my $width = 1;
+	my $extrawidth = 2;
+	my @areas = @{ $Apache::response::foilgroup{"$name.area"} };
+	foreach my $area (@areas) {
+	    my ($x1,$y1,$x2,$y2)=
+		($area=~m/rectangle:\(([0-9]+),([0-9]+)\)\-\(([0-9]+),([0-9]+)\)/);
+	    my $i=$x{"cgi.$id.BOXCOUNT"}++;
+	    $x{"cgi.$id.BOX$i"}=join(':',($x1,$y1,$x2,$y2,"FFFFFF",
+					  ($width+$extrawidth)));
+	    $i=$x{"cgi.$id.BOXCOUNT"}++;
+	    $x{"cgi.$id.BOX$i"}=join(':',($x1,$y1,$x2,$y2,"00FF00",$width));
+	}
+    }
+    &Apache::lonnet::appenv(%x);
+    return $id;
 }
 
 sub displayfoils {
@@ -163,7 +171,7 @@ sub displayfoils {
 	    if ($target eq 'tex') {
 		$result.=$Apache::response::foilgroup{"$name.image"}."\\vskip 0 mm \n";
 	    } else {
-		my $token=&prep_image($image);
+		my $token=&prep_image($image,'answer',$name);
 		$result.="<img src=\"/adm/randomlabel.png?token=$token\" /><br />\n";
 	    }
 	} else {