--- loncom/xml/lonxml.pm	2011/10/13 01:54:21	1.520
+++ loncom/xml/lonxml.pm	2011/12/09 21:21:43	1.527
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # XML Parser Module 
 #
-# $Id: lonxml.pm,v 1.520 2011/10/13 01:54:21 www Exp $
+# $Id: lonxml.pm,v 1.527 2011/12/09 21:21:43 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -301,7 +301,8 @@ sub xmlparse {
  &clean_safespace($safeeval);
 
  if (@script_var_displays) {
-     $finaloutput .= join('',@script_var_displays);
+     my $scriptoutput = join('',@script_var_displays);
+     $finaloutput=~s{(</body>\s*</html>)\s*$}{$scriptoutput$1}s;
      undef(@script_var_displays);
  }
  &init_state();
@@ -788,9 +789,14 @@ sub init_safespace {
   $safehole->wrap(\&Apache::lonnet::logthis,$safeeval,'&LONCAPA_INTERNAL_LOGTHIS');
   $safehole->wrap(\&Apache::inputtags::finalizeawards,$safeeval,'&LONCAPA_INTERNAL_FINALIZEAWARDS');
   $safehole->wrap(\&Apache::caparesponse::get_sigrange,$safeeval,'&LONCAPA_INTERNAL_get_sigrange');
+  $safehole->wrap(\&Apache::functionplotresponse::fpr_val,$safeeval,'&fpr_val');
   $safehole->wrap(\&Apache::functionplotresponse::fpr_f,$safeeval,'&fpr_f');
   $safehole->wrap(\&Apache::functionplotresponse::fpr_dfdx,$safeeval,'&fpr_dfdx');
   $safehole->wrap(\&Apache::functionplotresponse::fpr_d2fdx2,$safeeval,'&fpr_d2fdx2');
+  $safehole->wrap(\&Apache::functionplotresponse::fpr_vectorcoords,$safeeval,'&fpr_vectorcoords');
+  $safehole->wrap(\&Apache::functionplotresponse::fpr_objectcoords,$safeeval,'&fpr_objectcoords');
+  $safehole->wrap(\&Apache::functionplotresponse::fpr_vectorlength,$safeeval,'&fpr_vectorlength');
+  $safehole->wrap(\&Apache::functionplotresponse::fpr_vectorangle,$safeeval,'&fpr_vectorangle');
 
 #  use Data::Dumper;
 #  $safehole->wrap(\&Data::Dumper::Dumper,$safeeval,'&LONCAPA_INTERNAL_Dumper');
@@ -843,7 +849,8 @@ sub initialize_rndseed {
 sub default_homework_load {
     my ($safeeval)=@_;
     &Apache::lonxml::debug('Loading default_homework');
-    my $default=&Apache::lonnet::getfile('/home/httpd/html/res/adm/includes/default_homework.lcpm');
+    my $default=&Apache::lonnet::getfile($Apache::lonnet::perlvar{'lonIncludes'}.
+                                         '/default_homework.lcpm');
     if ($default eq -1) {
 	&Apache::lonxml::error("<b>Unable to find <i>default_homework.lcpm</i></b>");
     } else {
@@ -1013,7 +1020,7 @@ the current 'bubble line number' is stor
 The value of it is stored in $Apache:lonxml::counter when live and
 stored back to env after done.
 
-=item &increment_counter($increment);
+=item &increment_counter($increment, $part_response);
 
 Increments the internal counter environment variable a specified amount
 
@@ -1490,7 +1497,8 @@ sub renderingoptions {
            {&Apache::lonlocal::texthash
                (''        => '',
                 'tth'     => 'tth (TeX to HTML)',
-                'jsMath'  => 'jsMath',
+                'MathJax' => 'MathJax',
+  		'jsMath'  => 'jsMath',
                 'mimetex' => 'mimetex (Convert to Images)')}).
      '</span>';
     return $output;
@@ -1752,7 +1760,7 @@ ENDNOTFOUND
                 }
                 my $brcrum;
                 if ($env{'request.state'} eq 'construct') {
-                    $brcrum = [{'href' => &Apache::loncommon::authorspace(),
+                    $brcrum = [{'href' => &Apache::loncommon::authorspace($request->uri),
                                 'text' => 'Construction Space'},
                                {'href' => '',
                                 'text' => $breadcrumbtext}];
@@ -1789,7 +1797,7 @@ ENDNOTFOUND
             my $header;
             if ($env{'request.state'} eq 'construct') {
                 $options{'bread_crumbs'} = [{
-                            'href' => &Apache::loncommon::authorspace(),
+                            'href' => &Apache::loncommon::authorspace($request->uri),
                             'text' => 'Construction Space'},
                            {'href' => '',
                             'text' => $breadcrumbtext}];
@@ -1846,8 +1854,9 @@ sub debug {
 }
 
 sub show_error_warn_msg {
-    if ($env{'request.filename'} eq '/home/httpd/html/res/lib/templates/simpleproblem.problem' &&
-	&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {
+    if (($env{'request.filename'} eq 
+         $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/lib/templates/simpleproblem.problem') &&
+        (&Apache::lonnet::allowed('mdc',$env{'request.course.id'}))) {
 	return 1;
     }
     return (($Apache::lonxml::debug eq 1) ||
@@ -2042,11 +2051,13 @@ sub register_insert_xml {
     while (my $token = $parser->get_token()) {
 	if ($token->[0] eq 'S') {
 	    my $key;
-	    if      ($token->[1] eq 'tag') {
+	    if ($token->[1] eq 'tag') {
 		$tag = $token->[2]{'name'};
-		$insertlist{$tagnum.'.tag'} = $tag;
-		$insertlist{$tag.'.num'}   = $tagnum;
-		push(@alltags,$tag);
+                if (defined($tag)) {
+		    $insertlist{$tagnum.'.tag'} = $tag;
+		    $insertlist{$tag.'.num'}   = $tagnum;
+		    push(@alltags,$tag);
+                }
 	    } elsif ($in_help && $token->[1] eq 'file') {
 		$key = $tag.'.helpfile';
 	    } elsif ($in_help && $token->[1] eq 'description') {