version 1.33, 2023/07/11 23:43:03
|
version 1.36, 2025/03/15 01:03:33
|
Line 309 sub update_exttool {
|
Line 309 sub update_exttool {
|
my ($marker,$cdom,$cnum,$supplementalflag,$args) = @_; |
my ($marker,$cdom,$cnum,$supplementalflag,$args) = @_; |
my (%newhash,$changed,$newgradable,@deleted,$errormsg); |
my (%newhash,$changed,$newgradable,@deleted,$errormsg); |
($newhash{'target'},$newhash{'width'},$newhash{'height'},$newhash{'linktext'},$newhash{'explanation'}, |
($newhash{'target'},$newhash{'width'},$newhash{'height'},$newhash{'linktext'},$newhash{'explanation'}, |
$newhash{'crslabel'},$newhash{'crstitle'},$newhash{'crsappend'},$newhash{'gradable'}) = split(/:/,$args); |
$newhash{'crslabel'},$newhash{'crstitle'},$newhash{'crsappend'},$newhash{'gradable'}, |
foreach my $item ('linktext','explanation','crslabel','crstitle','crsappend') { |
$newhash{'returnurl'},$newhash{'backtourl'}) = split(/:/,$args); |
|
foreach my $item ('linktext','explanation','crslabel','crstitle','crsappend','backtourl') { |
$newhash{$item} = &unescape($newhash{$item}); |
$newhash{$item} = &unescape($newhash{$item}); |
} |
} |
my %toolhash=&Apache::lonnet::dump('exttool_'.$marker,$cdom,$cnum); |
my %toolhash=&Apache::lonnet::dump('exttool_'.$marker,$cdom,$cnum); |
foreach my $item ('target','width','height','linktext','explanation','crslabel','crstitle','crsappend','gradable') { |
foreach my $item ('target','width','height','linktext','explanation','crslabel','crstitle','crsappend','gradable','returnurl','backtourl') { |
$newhash{$item} =~ s/^\s+//; |
$newhash{$item} =~ s/^\s+//; |
$newhash{$item} =~ s/\s+$//; |
$newhash{$item} =~ s/\s+$//; |
if (($item eq 'width') || ($item eq 'height') || ($item eq 'linktext') || ($item eq 'explanation')) { |
if (($item eq 'width') || ($item eq 'height') || ($item eq 'linktext') || ($item eq 'explanation')) { |
Line 329 sub update_exttool {
|
Line 330 sub update_exttool {
|
unless ($newhash{$item} == 1) { |
unless ($newhash{$item} == 1) { |
$newhash{$item} = ''; |
$newhash{$item} = ''; |
} |
} |
|
} elsif ($item eq 'backtourl') { |
|
unless ($newhash{'returnurl'} eq 'custom') { |
|
$newhash{$item} = ''; |
|
} |
} |
} |
if ($toolhash{$item} ne $newhash{$item}) { |
if ($toolhash{$item} ne $newhash{$item}) { |
if (($item eq 'gradable') && (!$supplementalflag)) { |
if (($item eq 'gradable') && (!$supplementalflag)) { |
Line 352 sub update_exttool {
|
Line 357 sub update_exttool {
|
} |
} |
} else { |
} else { |
$toolhash{$item} = $newhash{$item}; |
$toolhash{$item} = $newhash{$item}; |
$changed = 1; |
$changed = 1; |
} |
} |
} |
} |
} |
} |
Line 396 sub extedit_form {
|
Line 401 sub extedit_form {
|
} |
} |
my ($formname,$formid,$toggle,$fieldsetid,$urlid,$subdivid,$dispdivstyle,$dimendivstyle, |
my ($formname,$formid,$toggle,$fieldsetid,$urlid,$subdivid,$dispdivstyle,$dimendivstyle, |
$windivstyle,$linktextstyle,$explanationstyle,$labelstyle,$titlestyle, |
$windivstyle,$linktextstyle,$explanationstyle,$labelstyle,$titlestyle, |
$appendstyle,$gradablestyle,$subdivstyle,$legend,$urlelem,$toolelem,%toolattr); |
$appendstyle,$gradablestyle,$returnurlstyle,$subdivstyle,$legend,$urlelem, |
|
$toolelem,%toolattr); |
$formname = 'new'.$type; |
$formname = 'new'.$type; |
$toggle = $type; |
$toggle = $type; |
$fieldsetid = 'external'.$type.'form'; |
$fieldsetid = 'external'.$type.'form'; |
$urlid = $type.'url'; |
$urlid = $type.'url'; |
map { $toolattr{$_} = $type.$_; } ('dispdiv','dimendiv','dimenwidth','dimenheight', |
map { $toolattr{$_} = $type.$_; } ('dispdiv','dimendiv','dimenwidth','dimenheight', |
'crstitlediv','crslabeldiv','crsappenddiv', |
'crstitlediv','crslabeldiv','crsappenddiv', |
'gradablediv','crstitle','crslabel','crsappend', |
'gradablediv','returnurldiv','crstitle','crslabel', |
'windiv','linktextdiv','explanationdiv', |
'crsappend','windiv','linktextdiv','explanationdiv', |
'linktext','explanation','providerurl'); |
'linktext','explanation','providerurl','customreturnurl'); |
$dispdivstyle = 'display:none'; |
$dispdivstyle = 'display:none'; |
$dimendivstyle = 'display:none'; |
$dimendivstyle = 'display:none'; |
$windivstyle = 'display:none'; |
$windivstyle = 'display:none'; |
Line 415 sub extedit_form {
|
Line 421 sub extedit_form {
|
$titlestyle = 'display:none'; |
$titlestyle = 'display:none'; |
$appendstyle = 'display:none'; |
$appendstyle = 'display:none'; |
$gradablestyle = 'display:none'; |
$gradablestyle = 'display:none'; |
|
$returnurlstyle = 'display:none'; |
$subdivstyle = 'display:block'; |
$subdivstyle = 'display:block'; |
if ($supplementalflag) { |
if ($supplementalflag) { |
$formname = 'newsupp'.$type; |
$formname = 'newsupp'.$type; |
Line 425 sub extedit_form {
|
Line 432 sub extedit_form {
|
} |
} |
my ($link,$legend,$active,$srcclass,$extsrc,$preview,$title,$save,$crstitle,$crslabel, |
my ($link,$legend,$active,$srcclass,$extsrc,$preview,$title,$save,$crstitle,$crslabel, |
$crsappend,$fieldsetstyle,$action,$hiddenelem,$form,$width,$height,$tooltarget, |
$crsappend,$fieldsetstyle,$action,$hiddenelem,$form,$width,$height,$tooltarget, |
$linktext,$explanation,$providerurl,$chkgrd,$chknogrd,%chkstate); |
$linktext,$explanation,$providerurl,$returnurl,$chkgrd,$chknogrd,%chkstate, |
|
$chknoreturn,$chkreturndef,$chkreturncust,$customreturn,$backtourl); |
$fieldsetstyle = 'display: none;'; |
$fieldsetstyle = 'display: none;'; |
$action = '/adm/coursedocs'; |
$action = '/adm/coursedocs'; |
my $protocol = ($ENV{'SERVER_PORT'} == 443?'https':'http'); |
my $protocol = ($ENV{'SERVER_PORT'} == 443?'https':'http'); |
Line 576 sub extedit_form {
|
Line 584 sub extedit_form {
|
if ($ltihash->{'crsconf'}->{'explanation'}) { |
if ($ltihash->{'crsconf'}->{'explanation'}) { |
$explanationstyle = 'padding:0;display:inline'; |
$explanationstyle = 'padding:0;display:inline'; |
} |
} |
|
if ($ltihash->{'crsconf'}->{'returnurl'}) { |
|
$returnurl = $toolhash{'returnurl'}; |
|
$returnurlstyle = 'display:inline'; |
|
$backtourl = $toolhash{'backtourl'}; |
|
if ($returnurl eq 'none') { |
|
$chknoreturn = ' checked="checked"'; |
|
$customreturn = 'hidden'; |
|
} elsif (($returnurl eq 'custom') && ($backtourl ne '')) { |
|
$chkreturncust = ' checked="checked"'; |
|
$customreturn = 'text'; |
|
} else { |
|
$chkreturndef = ' checked="checked"'; |
|
$customreturn = 'hidden'; |
|
} |
|
} |
} |
} |
$toolelem = '<span class="LC_nobreak">'.$image.' '.$tooltitle.'</span><br />'; |
$toolelem = '<span class="LC_nobreak">'.$image.' '.$tooltitle.'</span><br />'; |
$gradablestyle = 'display:inline'; |
$gradablestyle = 'display:inline'; |
Line 658 sub extedit_form {
|
Line 681 sub extedit_form {
|
$crslabel = $env{'course.'.$cdom.'_'.$cnum.'.internal.coursecode'}; |
$crslabel = $env{'course.'.$cdom.'_'.$cnum.'.internal.coursecode'}; |
$crstitle = $env{'course.'.$cdom.'_'.$cnum.'.description'}; |
$crstitle = $env{'course.'.$cdom.'_'.$cnum.'.description'}; |
$crsappend = ''; |
$crsappend = ''; |
|
$returnurl = ''; |
|
$backtourl = ''; |
|
$customreturn = 'hidden'; |
$chknogrd = ' checked="checked"'; |
$chknogrd = ' checked="checked"'; |
|
$chknoreturn = ''; |
|
$chkreturndef = ' checked="checked"'; |
|
$chkreturncust = ''; |
} |
} |
|
my $onclickreturl = ' onclick="updateReturnUrl('."this.form,'$toolattr{'customreturnurl'}','$toolattr{'returnurldiv'}','exttoolreturnurl'".');"'; |
$toolelem .= '<div id="'.$toolattr{'dispdiv'}.'" style="'.$dispdivstyle.'">'. |
$toolelem .= '<div id="'.$toolattr{'dispdiv'}.'" style="'.$dispdivstyle.'">'. |
'<span class="'.$class.'">'.&mt('Display target:').' '. |
'<span class="'.$class.'">'.&mt('Display target:').' '. |
'<label><input type="radio" name="exttooltarget" value="iframe" '.$chkstate{'iframe'}.'onclick="updateTooldim(this.form,'. |
'<label><input type="radio" name="exttooltarget" value="iframe" '.$chkstate{'iframe'}.'onclick="updateTooldim(this.form,'. |
Line 687 sub extedit_form {
|
Line 717 sub extedit_form {
|
$toolelem .= '<div id="'.$toolattr{'crslabeldiv'}.'" style="'.$labelstyle.'">'. |
$toolelem .= '<div id="'.$toolattr{'crslabeldiv'}.'" style="'.$labelstyle.'">'. |
'<span class="'.$class.'">'.&mt('Course label:').' '. |
'<span class="'.$class.'">'.&mt('Course label:').' '. |
'<input type="text" id="'.$toolattr{'crslabel'}.'" name="exttoollabel" value="'.$crslabel.'"'.$disabled.' /></span><br />'. |
'<input type="text" id="'.$toolattr{'crslabel'}.'" name="exttoollabel" value="'.$crslabel.'"'.$disabled.' /></span><br />'. |
'</div>'. |
'</div>'."\n". |
'<div id="'.$toolattr{'crstitlediv'}.'" style="'.$titlestyle.'">'. |
'<div id="'.$toolattr{'crstitlediv'}.'" style="'.$titlestyle.'">'. |
'<span class="'.$class.'">'.&mt('Course title:').' '. |
'<span class="'.$class.'">'.&mt('Course title:').' '. |
'<input type="text" id="'.$toolattr{'crstitle'}.'" name="exttooltitle" value="'.$crstitle.'"'.$disabled.' /></span><br />'. |
'<input type="text" id="'.$toolattr{'crstitle'}.'" name="exttooltitle" value="'.$crstitle.'"'.$disabled.' /></span><br />'. |
'</div>'. |
'</div>'."\n". |
'<div id="'.$toolattr{'crsappenddiv'}.'" style="'.$appendstyle.'">'. |
'<div id="'.$toolattr{'crsappenddiv'}.'" style="'.$appendstyle.'">'. |
'<span class="'.$class.'">'.&mt('Append to URL[_1]', |
'<span class="'.$class.'">'.&mt('Append to URL[_1]', |
'<span id="'.$toolattr{'providerurl'}.'"> ('.$providerurl.')<br /></span>'). |
'<span id="'.$toolattr{'providerurl'}.'"> ('.$providerurl.')<br /></span>'). |
'<input type="text" id="'.$toolattr{'crsappend'}.'" size="30" name="exttoolappend" value="'.$crsappend.'"'.$disabled.' /></span><br />'. |
'<input type="text" id="'.$toolattr{'crsappend'}.'" size="30" name="exttoolappend" value="'.$crsappend.'"'.$disabled.' /></span><br />'. |
'</div>'. |
'</div>'."\n". |
'<div id="'.$toolattr{'gradablediv'}.'" style="'.$gradablestyle.'">'. |
'<div id="'.$toolattr{'gradablediv'}.'" style="'.$gradablestyle.'">'. |
'<span class="'.$class.'">'.&mt('Gradable').' '. |
'<span class="'.$class.'">'.&mt('Gradable').' '. |
'<label><input type="radio" name="exttoolgradable" value="1"'.$chkgrd.$disabled. |
'<label><input type="radio" name="exttoolgradable" value="1"'.$chkgrd.$disabled. |
' />'.&mt('Yes').'</label>'.(' 'x2). |
' />'.&mt('Yes').'</label>'.(' 'x2). |
'<label><input type="radio" name="exttoolgradable" value="0"'.$chknogrd.$disabled. |
'<label><input type="radio" name="exttoolgradable" value="0"'.$chknogrd.$disabled. |
' />'.&mt('No').'</label></span></div>'; |
' />'.&mt('No').'</label></span><br /></div>'."\n". |
|
'<div id="'.$toolattr{'returnurldiv'}.'" style="'.$returnurlstyle.'">'. |
|
'<span class="'.$class.'">'.&mt('Include return URL').': '. |
|
'<label><input type="radio" name="exttoolreturnurl" value="none"'.$chknoreturn.$disabled.$onclickreturl.' />'. |
|
&mt('No').'</label>'.(' 'x2). |
|
'<label><input type="radio" name="exttoolreturnurl" value="default"'.$chkreturndef.$disabled.$onclickreturl.' />'. |
|
&mt('Yes, default URL').'</label>'.(' 'x2). |
|
'<label><input type="radio" name="exttoolreturnurl" value="custom"'.$chkreturncust.$disabled.$onclickreturl.' />'. |
|
&mt('Yes, specify URL').'</label></span><br />'."\n". |
|
'<input type="'.$customreturn.'" id="'.$toolattr{'customreturnurl'}.'" size="35" name="exttoolbacktourl" value="'.$backtourl.'"'.$disabled.' />'. |
|
'</div>'."\n"; |
} |
} |
my $chooser = $toolelem; |
my $chooser = $toolelem; |
if ($type eq 'ext') { |
if ($type eq 'ext') { |
$chooser = " |
$chooser = " |
<div> |
<div> |
<span$srcclass> |
<span$srcclass> |
|
<label> |
$extsrc |
$extsrc |
$urlelem |
$urlelem |
|
</label> |
$preview |
$preview |
</span> |
</span> |
</div> |
</div> |
"; |
"; |
} |
} |
|
my $idattr; |
|
unless ($subdivid eq '') { |
|
$idattr = 'id="'.$subdivid.'"'; |
|
} |
$form = <<ENDFORM; |
$form = <<ENDFORM; |
<form action="$action" method="post" name="$formname" id="$formid"> |
<form action="$action" method="post" name="$formname" id="$formid"> |
<fieldset id="$fieldsetid" style="$fieldsetstyle"> |
<fieldset id="$fieldsetid" style="$fieldsetstyle"> |
$legend |
$legend |
$active |
$active |
$chooser |
$chooser |
<div id="$subdivid" style="$subdivstyle"> |
<div $idattr style="$subdivstyle"> |
<span$srcclass> |
<span$srcclass> |
|
<label> |
$title |
$title |
<input type="text" size="$size" name="exttitle" value="$orig_title" $disabled /> |
<input type="text" size="$size" name="exttitle" value="$orig_title" $disabled /> |
|
</label> |
<input type="hidden" name="importdetail" value="" /> |
<input type="hidden" name="importdetail" value="" /> |
$pathitem |
$pathitem |
$hiddenelem |
$hiddenelem |
Line 834 sub extedit_javascript {
|
Line 882 sub extedit_javascript {
|
" var ltitoolsExplain = new Array();\n". |
" var ltitoolsExplain = new Array();\n". |
" var ltitoolsLabel = new Array();\n". |
" var ltitoolsLabel = new Array();\n". |
" var ltitoolsTitle = new Array();\n". |
" var ltitoolsTitle = new Array();\n". |
" var ltitoolsAppend = new Array();\n"; |
" var ltitoolsAppend = new Array();\n". |
|
" var ltitoolsReturnUrl = new Array();\n"; |
$exttoolnums = " var ltitoolsnum = new Array();\n". |
$exttoolnums = " var ltitoolsnum = new Array();\n". |
" var tooloptval = new Array();\n". |
" var tooloptval = new Array();\n". |
" var toolopttxt = new Array();\n"; |
" var toolopttxt = new Array();\n"; |
Line 854 sub extedit_javascript {
|
Line 903 sub extedit_javascript {
|
" ltitoolsExplain[$idx] = new Array($num);\n". |
" ltitoolsExplain[$idx] = new Array($num);\n". |
" ltitoolsLabel[$idx] = new Array($num);\n". |
" ltitoolsLabel[$idx] = new Array($num);\n". |
" ltitoolsTitle[$idx] = new Array($num);\n". |
" ltitoolsTitle[$idx] = new Array($num);\n". |
" ltitoolsAppend[$idx] = new Array($num);\n"; |
" ltitoolsAppend[$idx] = new Array($num);\n". |
|
" ltitoolsReturnUrl[$idx] = new Array($num);\n"; |
my $i=0; |
my $i=0; |
foreach my $key (sort { $a <=> $b } keys(%{$toolsref->{$type}})) { |
foreach my $key (sort { $a <=> $b } keys(%{$toolsref->{$type}})) { |
if (ref($toolsref->{$type}->{$key}) eq 'HASH') { |
if (ref($toolsref->{$type}->{$key}) eq 'HASH') { |
Line 893 sub extedit_javascript {
|
Line 943 sub extedit_javascript {
|
$toolsjs .= " ltitoolsTitle[$idx][$i] = '$title';\n"; |
$toolsjs .= " ltitoolsTitle[$idx][$i] = '$title';\n"; |
my $append = $toolsref->{$type}->{$key}->{'crsconf'}->{'append'}; |
my $append = $toolsref->{$type}->{$key}->{'crsconf'}->{'append'}; |
$toolsjs .= " ltitoolsAppend[$idx][$i] = '$append';\n"; |
$toolsjs .= " ltitoolsAppend[$idx][$i] = '$append';\n"; |
|
my $returnurl = $toolsref->{$type}->{$key}->{'crsconf'}->{'returnurl'}; |
|
$toolsjs .= " ltitoolsReturnUrl[$idx][$i] = '$returnurl';\n"; |
} |
} |
} |
} |
$i++; |
$i++; |
Line 1050 function setExternal(extform,residx,type
|
Line 1102 function setExternal(extform,residx,type
|
var labelinput = prefix+'toolcrslabel'; |
var labelinput = prefix+'toolcrslabel'; |
var titleinput = prefix+'toolcrstitle'; |
var titleinput = prefix+'toolcrstitle'; |
var appendinput = prefix+'toolcrsappend'; |
var appendinput = prefix+'toolcrsappend'; |
|
var customreturnurl = prefix+'customreturnurl'; |
if (residx > 0) { |
if (residx > 0) { |
labelinput += '_'+residx; |
labelinput += '_'+residx; |
titleinput += '_'+residx; |
titleinput += '_'+residx; |
appendinput += '_'+residx; |
appendinput += '_'+residx; |
|
customreturnurl += '_'+residx; |
} |
} |
if (document.getElementById(labelinput)) { |
if (document.getElementById(labelinput)) { |
var crslabel = document.getElementById(labelinput).value; |
var crslabel = document.getElementById(labelinput).value; |
Line 1102 function setExternal(extform,residx,type
|
Line 1156 function setExternal(extform,residx,type
|
} else { |
} else { |
info += ':'; |
info += ':'; |
} |
} |
|
var returnurldiv = prefix+'toolreturnurldiv'; |
|
if (residx > 0) { |
|
returnurldiv += '_'+residx; |
|
} |
|
if (document.getElementById(returnurldiv)) { |
|
if (document.getElementById(returnurldiv).style.display == 'inline') { |
|
if (extform.exttoolreturnurl.length) { |
|
for (var i=0; i<extform.exttoolreturnurl.length; i++) { |
|
if (extform.exttoolreturnurl[i].checked) { |
|
if (extform.exttoolreturnurl[i].value == 'custom') { |
|
var backtourl = extform.exttoolbacktourl.value; |
|
backtourl.trim(); |
|
info += ':custom:'+escape(backtourl); |
|
} else if (extform.exttoolreturnurl[i].value == 'default') { |
|
info += ':default:'; |
|
} else { |
|
info += ':none:'; |
|
} |
|
} |
|
} |
|
} |
|
} else { |
|
info += '::'; |
|
} |
|
} else { |
|
info += '::'; |
|
} |
info=escape(info); |
info=escape(info); |
if (residx > 0) { |
if (residx > 0) { |
eval("extform.importdetail.value=title+'='+info+'='+residx;extform.submit();"); |
eval("extform.importdetail.value=title+'='+info+'='+residx;extform.submit();"); |
Line 1284 function updateExttool(caller,form,suppl
|
Line 1365 function updateExttool(caller,form,suppl
|
titlediv = prefix+'toolcrstitlediv'; |
titlediv = prefix+'toolcrstitlediv'; |
appenddiv = prefix+'toolcrsappenddiv'; |
appenddiv = prefix+'toolcrsappenddiv'; |
gradablediv = prefix+'toolgradablediv'; |
gradablediv = prefix+'toolgradablediv'; |
|
returnurldiv = prefix+'toolreturnurldiv'; |
providerurl = prefix+'toolproviderurl'; |
providerurl = prefix+'toolproviderurl'; |
labelinput = prefix+'toolcrslabel'; |
labelinput = prefix+'toolcrslabel'; |
titleinput = prefix+'toolcrstitle'; |
titleinput = prefix+'toolcrstitle'; |
Line 1324 function updateExttool(caller,form,suppl
|
Line 1406 function updateExttool(caller,form,suppl
|
if (document.getElementById(gradablediv)) { |
if (document.getElementById(gradablediv)) { |
document.getElementById(gradablediv).style.display = 'none'; |
document.getElementById(gradablediv).style.display = 'none'; |
} |
} |
|
if (document.getElementById(returnurldiv)) { |
|
document.getElementById(returnurldiv).style.display = 'none'; |
|
} |
} else { |
} else { |
var tooltype = ''; |
var tooltype = ''; |
var typeelem = form.elements[prefix+'exttooltype']; |
var typeelem = form.elements[prefix+'exttooltype']; |
Line 1441 function updateExttool(caller,form,suppl
|
Line 1526 function updateExttool(caller,form,suppl
|
document.getElementById(gradablediv).style.display = 'inline'; |
document.getElementById(gradablediv).style.display = 'inline'; |
} |
} |
} |
} |
|
if (document.getElementById(returnurldiv)) { |
|
if (ltitoolsReturnUrl[i][j]) { |
|
document.getElementById(returnurldiv).style.display = 'inline'; |
|
} else { |
|
document.getElementById(returnurldiv).style.display = 'none'; |
|
} |
|
} |
break; |
break; |
} |
} |
} |
} |
Line 1450 function updateExttool(caller,form,suppl
|
Line 1542 function updateExttool(caller,form,suppl
|
} |
} |
} |
} |
|
|
|
function updateReturnUrl(form,typeid,divid,radioname) { |
|
if ((document.getElementById(typeid)) && |
|
(document.getElementById(divid))) { |
|
if (document.getElementById(divid).style.display == 'inline') { |
|
var radelem = form.elements[radioname]; |
|
var inputtype = 'hidden'; |
|
if (radelem.length) { |
|
for (var i=0; i<radelem.length; i++) { |
|
if (radelem[i].checked) { |
|
if (radelem[i].value == 'custom') { |
|
inputtype = 'text'; |
|
} else { |
|
inputtype = 'hidden'; |
|
} |
|
break; |
|
} |
|
} |
|
} |
|
document.getElementById(typeid).type = inputtype; |
|
} |
|
} |
|
return; |
|
} |
|
|
function updateTooldim(form,dimendiv,windiv,widthinput,heightinput,linkinput,explaininput) { |
function updateTooldim(form,dimendiv,windiv,widthinput,heightinput,linkinput,explaininput) { |
if (form.exttooltarget.length) { |
if (form.exttooltarget.length) { |
for (var i=0; i<form.exttooltarget.length; i++) { |
for (var i=0; i<form.exttooltarget.length; i++) { |