--- loncom/homework/response.pm	2006/12/04 21:23:01	1.152
+++ loncom/homework/response.pm	2006/12/11 22:02:13	1.154
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # various response type definitons response definition
 #
-# $Id: response.pm,v 1.152 2006/12/04 21:23:01 albertel Exp $
+# $Id: response.pm,v 1.154 2006/12/11 22:02:13 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -30,6 +30,7 @@ package Apache::response;
 use strict;
 use Apache::lonlocal;
 use Apache::lonnet;
+use Apache::lonmaxima();
 
 BEGIN {
     &Apache::lonxml::register('Apache::response',('responseparam','parameter','dataresponse','customresponse','mathresponse'));
@@ -474,21 +475,29 @@ sub start_mathresponse {
 					   'cas',
 					   ['maxima'],
 					   $token);
-	$result.=&Apache::edit::text_arg('Algebra System:',
-					 'cas',$token);
 	$result.=&Apache::edit::text_arg('Argument Array:',
 					 'args',$token);
 	$result.=&Apache::edit::end_row().&Apache::edit::start_spanning_row();
     } elsif ($target eq 'modified') {
 	my $constructtag;
 	$constructtag=&Apache::edit::get_new_args($token,$parstack,
-						  $safeeval,'answerdisplay');
+						  $safeeval,'answerdisplay','cas','args');
 	if ($constructtag) {
 	    $result = &Apache::edit::rebuild_tag($token);
 	    $result.=&Apache::edit::handle_insert();
 	}
     } elsif ($target eq 'answer' || $target eq 'grade') {
 	&Apache::response::reset_params();
+	my $args_ref= \%{$safeeval->varglob('LONCAPA::mathresponse_args')};
+	undef(%{ $args_ref });
+	$$args_ref{'cas'}=$token->[2]{'cas'};
+        if ($token->[2]{'args'}=~/\$/) {
+	    $$args_ref{'args'}=&Apache::run::run($token->[2]{'args'},$safeeval);
+	} elsif ($token->[2]{'args'}=~/\@/) {
+	    $$args_ref{'args'}=&Apache::run::run('join(",",'.$token->[2]{'args'}.')',$safeeval);
+	} else {
+	    $$args_ref{'args'}=$token->[2]{'args'};
+	}
     } elsif ($target eq 'meta') {
 	$result .= &Apache::response::meta_package_write('mathresponse');
     }
@@ -511,10 +520,11 @@ sub end_mathresponse {
 	    $Apache::lonhomework::results{"resource.$part.$id.submission"}=
 		$response;
 	    my $error;
-	    ${$safeeval->varglob('LONCAPA::mathresponse_submission')}=
-		$response;
-	    
-	    my $award = &Apache::run::run('{ my $submission=$LONCAPA::mathresponse_submission;'.$Apache::response::custom_answer.'}',$safeeval);
+	    my $args_ref= \%{$safeeval->varglob('LONCAPA::mathresponse_args')};
+            my $award;
+            if ($$args_ref{'cas'} eq 'maxima') {
+		$award=&Apache::lonmaxima::maxima_run($Apache::response::custom_answer,$response,$$args_ref{'args'});
+	    }
 	    if (!&Apache::inputtags::valid_award($award)) {
 		$error = $award;
 		$award = 'ERROR';