MDL-16949 - fix wrong addition of times in SCORM API, thanks Xabi Martin. backport 1.8.

This commit is contained in:
piers 2008-11-14 00:10:10 +00:00
parent 537172328a
commit b9aa74c7f5

View file

@ -1110,18 +1110,42 @@ function SCORMapi1_3() {
var firstarray = first.match(matchexpr);
var secondarray = second.match(matchexpr);
if ((firstarray != null) && (secondarray != null)) {
var secs = parseFloat(firstarray[13],10)+parseFloat(secondarray[13],10); //Seconds
var change = Math.floor(secs / 60);
secs = secs - (change * 60);
var mins = parseInt(firstarray[11],10)+parseInt(secondarray[11],10)+change; //Minutes
var firstsecs=0;
if(parseFloat(firstarray[13],10)>0){ firstsecs=parseFloat(firstarray[13],10); }
var secondsecs=0;
if(parseFloat(secondarray[13],10)>0){ secondsecs=parseFloat(secondarray[13],10); }
var secs = firstsecs+secondsecs; //Seconds
var change = Math.floor(secs/60);
secs = Math.round((secs-(change*60))*100)/100;
var firstmins=0;
if(parseInt(firstarray[11],10)>0){ firstmins=parseInt(firstarray[11],10); }
var secondmins=0;
if(parseInt(secondarray[11],10)>0){ secondmins=parseInt(secondarray[11],10); }
var mins = firstmins+secondmins+change; //Minutes
change = Math.floor(mins / 60);
mins = mins - (change * 60);
var hours = parseInt(firstarray[9],10)+parseInt(secondarray[9],10)+change; //Hours
change = Math.floor(hours / 24);
hours = hours - (change * 24);
var days = parseInt(firstarray[6],10)+parseInt(secondarray[6],10)+change; // Days
var months = parseInt(firstarray[4],10)+parseInt(secondarray[4],10)
var years = parseInt(firstarray[2],10)+parseInt(secondarray[2],10)
mins = Math.round(mins-(change*60));
var firsthours=0;
if(parseInt(firstarray[9],10)>0){ firsthours=parseInt(firstarray[9],10); }
var secondhours=0;
if(parseInt(secondarray[9],10)>0){ secondhours=parseInt(secondarray[9],10); }
var hours = firsthours+secondhours+change; //Hours
change = Math.floor(hours/24);
hours = Math.round(hours-(change*24));
var firstdays=0;
if(parseInt(firstarray[6],10)>0){ firstdays=parseInt(firstarray[6],10); }
var seconddays=0;
if(parseInt(secondarray[6],10)>0){ firstdays=parseInt(secondarray[6],10); }
var days = Math.round(firstdays+seconddays+change); // Days
var firstmonths=0;
if(parseInt(firstarray[4],10)>0){ firstmonths=parseInt(firstarray[4],10); }
var secondmonths=0;
if(parseInt(secondarray[4],10)>0){ secondmonths=parseInt(secondarray[4],10); }
var months = Math.round(firstmonths+secondmonths);
var firstyears=0;
if(parseInt(firstarray[2],10)>0){ firstyears=parseInt(firstarray[2],10); }
var secondyears=0;
if(parseInt(secondarray[2],10)>0){ secondyears=parseInt(secondarray[2],10); }
var years = Math.round(firstyears+secondyears);
}
if (years > 0) {
timestring += years + 'Y';