Gradebook.GridModel=Class.create();Gradebook.GridModel.prototype={initialize:function(a){this.gradebookService=a;this.courseId=a.courseId;this.rows=new Array();this.colDefs=new Array();this.colOrderMap=new Array();this.customViews=new Array();this.listeners=new Array();this.accessibleMode=false;this.floatLocaleFormat=null;this.resizingWindow=false;this.minimumRows=10;this.isolatedStudentId=""},getFloatLocaleFormat:function(){return this.floatLocaleFormat},setFloatLocaleFormat:function(a){this.floatLocaleFormat=a;NumberFormatter.needToConvert=(this.floatLocaleFormat.separator==",")},getNumberFormatter:function(){return NumberFormatter},getCustomViews:function(){this.customViews.sort(function(d,c){var e=d.name.toLowerCase();var f=c.name.toLowerCase();if(e==f){return 0}else{if(e<f){return -1}else{return 1}}});return this.customViews},fireModelChanged:function(){for(var a=0;a<this.listeners.length;a++){this.listeners[a].modelChanged()}},fireModelError:function(b,c){for(var a=0;a<this.listeners.length;a++){if(this.listeners[a].modelError){this.listeners[a].modelError(b,c)}}},addModelListener:function(a){this.listeners.push(a)},removeModelListeners:function(){this.listeners=new Array()},updateGrade:function(d,c,b,a){this.gradebookService.updateGrade((this.updateGradeCallback).bind(this),this.version,d,c,b,a)},deleteColumn:function(a){this.gradebookService.deleteColumn(a)},modifyColumn:function(a,b){this.gradebookService.modifyColumn(a,b)},viewItemStats:function(a){this.gradebookService.viewItemStats(a)},viewSingleStudentGrades:function(a){this.isolatedStudentId=a;this.gradebookService.reloadGrid()},restoreFromSingleStudentView:function(){this.isolatedStudentId="";this.gradebookService.reloadGrid()},viewStudentStats:function(a){this.gradebookService.viewStudentStats(a)},viewAdaptiveRelease:function(a){this.gradebookService.viewAdaptiveRelease(a)},hideColumn:function(a){this.gradebookService.hideColumn(a)},showGradeDetails:function(b,a){this.gradebookService.showGradeDetails(b,a)},onAddComment:function(b,a){this.gradebookService.loadComments(b,a,"studentComments","instructorComments")},exemptGrade:function(b,a){this.gradebookService.setExemption((this.updateGradeCallback).bind(this),this.version,b,a,true)},clearExemption:function(b,a){this.gradebookService.setExemption((this.updateGradeCallback).bind(this),this.version,b,a,false)},setComments:function(b,a,d,c){this.gradebookService.setComments(b,a,d,c)},getRowByUserId:function(c){var d=this.rows;for(var b=0,a=d.length;b<a;b++){if(d[b][0].getUserId()==c){return d[b]}}return null},_getGradesForItemId:function(h,g){var b=new Array();var c=this.colDefMap[h];if(c==undefined){GradebookUtil.error("GridModel _getGradesForItemId contains data for invalid column id: "+h);return b}var e=this.rows;for(var d=0,a=e.length;d<a;d++){var f=e[d][c];if(g||f.isAvailable()){b.push(f)}}return b},updateGradeCallback:function(g){if(!g||g.length==0){GradebookUtil.error("GridModel error updating grade");return}for(var f=0,j=g.length;f<j;f++){var e=g[f];var k=e.itemId;var h=e.courseUserId;var b=e.score;var c=e.textInput;var m=this.getRowByUserId(h);var l=this.colDefMap[k];if(l==undefined){continue}var a=m[l];a.tv=c;if(c.length==0&&b==0){a.v="-"}else{a.v=b}a.gc=(e.modified)?"y":null;a.or=(e.override)?"y":null;a.x=(e.exempt)?"y":null;a.mp=e.points;a.isUncommitted=false;var d=a.savingDiv;if(d&&d.timerExpired&&d.parentNode){d.style.display="none";d.parentNode.removeChild(d);a.savingDiv=null}}this.fireModelChanged()},requestLoadData:function(){GradebookUtil.debug("GridModel requestLoadData called");this.lastUpdateTS=new Date().getTime();this.gradebookService.requestLoadData((this._loadDataFromJSON).bind(this),(this._reportError).bind(this),(this._reportException).bind(this))},requestUpdateData:function(){var a=new Date().getTime()-this.lastUpdateTS;if(this.resizingWindow&&(a<5*60*1000)){this.fireModelChanged();return}this.lastUpdateTS=new Date().getTime();GradebookUtil.debug("GridModel requestUpdateData called");var b=null;if(this.currentCustomView&&this.currentCustomView.usesGroups()){b=this.currentCustomView.id}this.gradebookService.requestUpdateData(this.version,this.lastUserChangeTS,this.usersHash,b,(this._updateDataFromJSON).bind(this),(this._reportError).bind(this),(this._reportException).bind(this))},setResizingWindow:function(a){this.resizingWindow=a},getResizingWindow:function(){return this.resizingWindow},setMinimumRows:function(a){if(a<5){a=5}if(a>50){a=50}this.minimumRows=a},getMinimumRows:function(){return this.minimumRows},_reportException:function(a){GradebookUtil.error("exception getting data from server: "+a.message)},_reportError:function(a){GradebookUtil.error("error getting data from server: "+a.status+" -- "+a.statusText)},getVisibleColDefIndex:function(d){var c=this.colDefMap[d];if(c===undefined||this.colDefs[c]===undefined||!this.colDefs[c].gbvis){return -1}for(var b=0,a=this.colOrderMap.length;b<a;b++){if(this.colOrderMap[b]==c){return b}}return -1},_loadDataFromJSON:function(reply){GradebookUtil.debug("GridModel _loadDataFromJSON called");try{var jsonBook=eval("("+reply.responseText+")")}catch(e){this.fireModelError(e,reply.responseText);return}try{this.schemaMap=new Array();for(var i=0;i<jsonBook.schemas.length;i++){jsonBook.schemas[i]=this._createSchema(jsonBook.schemas[i].type,jsonBook.schemas[i]);this.schemaMap[jsonBook.schemas[i].id]=jsonBook.schemas[i]}this.colDefMap=new Array();for(var i=0;i<jsonBook.colDefs.length;i++){jsonBook.colDefs[i]=this._createColDef(jsonBook.colDefs[i],this,this.schemaMap);this.colDefMap[jsonBook.colDefs[i].id]=i}for(var i=0;i<jsonBook.rows.length;i++){jsonBook.rows[i]=this._loadRowDataFromJSON(jsonBook.rows[i],jsonBook.colDefs,this.colDefMap)}this.customViewMap=new Array();if(jsonBook.customViews){for(var i=0;i<jsonBook.customViews.length;i++){jsonBook.customViews[i]=new Gradebook.CustomView(jsonBook.customViews[i],this);this.customViewMap[jsonBook.customViews[i].id]=i}}this.groupsMap=new Array();if(jsonBook.groups){for(var i=0;i<jsonBook.groups.length;i++){this.groupsMap[jsonBook.groups[i].id]=i}}this._buildCategoryNameMap(jsonBook);Object.extend(this,jsonBook);this._buildGradingPeriodMap();if(this.customViewIdParam!=null&&this.customViewIdParam.length>0){this._internalChangeCurrentView("cv_"+this.customViewIdParam)}else{if(this.defCVID){this._internalChangeCurrentView("cv_"+this.defCVID)}else{if(this.defGPID){this._internalChangeCurrentView(this.defGPID)}}}this._setStudentInfoLayout();this._updateVisibleRows(jsonBook);this.sortColumns();if(this.colDefMap.LN!=undefined){this.sortColumnId="LN";this.sortDir="ASC";this.reSort()}this.fireModelChanged()}catch(e){this.fireModelError(e)}},_updateDataFromJSON:function(reply){GradebookUtil.debug("GridModel _updateDataFromJSON called");try{var jsonBook=eval("("+reply.responseText+")")}catch(e){this.fireModelError(e,reply.responseText);return}try{if(this._hasNewUsers(jsonBook)){this.requestLoadData();return}this.version=jsonBook.version;this.lastUserChangeTS=jsonBook.lastUserChangeTS;this.usersHash=jsonBook.usersHash;this.numFrozenColumns=jsonBook.numFrozenColumns;this.gradingPeriods=jsonBook.gradingPeriods;this.categories=jsonBook.categories;this._buildCategoryNameMap(jsonBook);this.studentInfoLayouts=jsonBook.studentInfoLayouts;this.pubColID=jsonBook.pubColID;this.defCVID=jsonBook.defCVID;this.defGPID=jsonBook.defGPID;if(jsonBook.schemas){for(var i=0;i<jsonBook.schemas.length;i++){var schema=this.schemaMap[jsonBook.schemas[i].id];if(schema===undefined){schema=this._createSchema(jsonBook.schemas[i].type,jsonBook.schemas[i]);this.schemaMap[jsonBook.schemas[i].id]=schema}else{Object.extend(schema,jsonBook.schemas[i])}}}if(jsonBook.groups){if(!this.groupsMap||!this.groups||this.groups.length==0){this.groupsMap=new Array();this.groups=jsonBook.groups;for(var i=0;i<jsonBook.groups.length;i++){this.groupsMap[jsonBook.groups[i].id]=i}}else{for(var i=0;i<jsonBook.groups.length;i++){var group=this.groupsMap[jsonBook.groups[i].id];if(group===undefined){this.groupsMap[jsonBook.groups[i].id]=this.groups.length;this.groups.push(jsonBook.groups[i])}else{this.groups[group]=jsonBook.groups[i]}}}}if(jsonBook.colDefs){for(var i=0;i<jsonBook.colDefs.length;i++){var colIndex=this.colDefMap[jsonBook.colDefs[i].id];if(colIndex==undefined){if(jsonBook.colDefs[i].deleted){continue}this.colDefMap[jsonBook.colDefs[i].id]=this.colDefs.length;this.colDefs.push(this._createColDef(jsonBook.colDefs[i],this,this.schemaMap))}else{var colDef=this.colDefs[colIndex];colDef.comput_err=false;Object.extend(colDef,jsonBook.colDefs[i]);if(jsonBook.colDefs[i].comput_err){var grades=this._getGradesForItemId(jsonBook.colDefs[i].id,true);for(var g=0;g<grades.length;g++){grades[g].initialize(grades[g].colDef,grades[g].metaData)}}if(colDef.deleted){this.colDefMap[colDef.id]=null}if(colDef.sid){colDef.primarySchema=this.schemaMap[colDef.sid]}if(colDef.ssid&&colDef.ssid.length>0){colDef.secondarySchema=this.schemaMap[colDef.ssid]}else{colDef.secondarySchema=null}}}}while(this.rows.length>0&&this.colDefs.length>this.rows[0].length){var colDefIndex=this.rows[0].length;for(var i=0;i<this.rows.length;i++){var metaData=this.rows[i][0].metaData;var colDef=this.colDefs[colDefIndex];if(colDef instanceof Gradebook.GradeColDef){this.rows[i].push(new Gradebook.Grade(colDef,metaData))}else{this.rows[i].push(new Gradebook.StudentAttribute(colDef,metaData))}}}if(jsonBook.rows){if(jsonBook.type=="delta_with_user"){var tempArray=new Array();for(var i=0;i<this.rows.length;i++){if(this._containsUser(jsonBook.rows,this.rows[i][0].getUserId())){tempArray.push(this.rows[i])}}this.rows=tempArray}for(var i=0;i<jsonBook.rows.length;i++){var row=this.getRowByUserId(jsonBook.rows[i][0].uid);if(row==null){this.rows.push(this._loadRowDataFromJSON(jsonBook.rows[i],this.colDefs,this.colDefMap))}else{this._updateRowDataFromJSON(row,jsonBook.rows[i],this.colDefs,this.colDefMap)}}}this._buildGradingPeriodMap();if(jsonBook.customViews){for(var i=0;i<jsonBook.customViews.length;i++){var idx=this.customViewMap[jsonBook.customViews[i].id];if(idx===undefined){this.customViewMap[jsonBook.customViews[i].id]=this.customViews.length;this.customViews.push(new Gradebook.CustomView(jsonBook.customViews[i],this))}else{this.customViews[idx]=new Gradebook.CustomView(jsonBook.customViews[i],this)}}}if(this.customViews){var tempArray=new Array();this.customViewMap=new Array();for(var i=0;i<this.customViews.length;i++){if(jsonBook.customViewIds.indexOf(Number(this.customViews[i].id))!=-1){this.customViewMap[this.customViews[i].id]=tempArray.length;tempArray.push(this.customViews[i])}}this.customViews=tempArray}if(this.customViewIdParam!=null&&this.customViewIdParam.length>0){this._internalChangeCurrentView("cv_"+this.customViewIdParam)}else{if(this.currentView){this._internalChangeCurrentView(this.currentView)}}this._setStudentInfoLayout();this._updateVisibleRows(jsonBook);this.sortColumns();this.reSort();this.checkedNoStudents()}catch(e){this.fireModelError(e)}},_buildCategoryNameMap:function(a){this.catNameMap=new Array();if(a.categories){for(var b=0;b<a.categories.length;b++){this.catNameMap[a.categories[b].id]=a.categories[b].name}}},_updateVisibleRows:function(b){var e=(!b.hiddenStudentIds||b.hiddenStudentIds.length==0);this.visibleRows=new Array();var f=this.rows;for(var d=0,a=f.length;d<a;d++){var g=f[d];var c=!e&&(b.hiddenStudentIds.indexOf(Number(g[0].getUserId()))!=-1);g[0].setHidden(c);if(!c){this.visibleRows.push(g)}}this._applyCustomView()},updateUserVisibility:function(a,b){this.gradebookService.updateUserVisibility(a,b)},_hasNewUsers:function(a){if(!a||!a.rows){return false}for(var b=0;b<a.rows.length;b++){if(this.getRowByUserId(a.rows[b][0].uid)==null){return true}}return false},_containsUser:function(c,b){for(var a=0;a<c.length;a++){if(c[a][0].uid==b){return true}}return false},_createColDef:function(c,a,b){if(c.type=="s"){return new Gradebook.StudentAttributeColDef(c,a,b)}else{return new Gradebook.GradeColDef(c,a,b)}},_createSchema:function(a,b){if(a=="S"){return new Gradebook.NumericSchema(b,this)}else{if(a=="X"){return new Gradebook.TextSchema(b,this)}else{if(a=="P"){return new Gradebook.PercentageSchema(b,this)}else{if(a=="C"){return new Gradebook.CompleteIncompleteSchema(b,this)}else{if(a=="T"){return new Gradebook.LetterSchema(b,this)}else{GradebookUtil.debug("GridModel _createSchema invalid type: "+a);return null}}}}}},_setStudentInfoLayout:function(){for(var b=0;b<this.studentInfoLayouts.length;b++){var a=this.colDefMap[this.studentInfoLayouts[b].id];if(a===undefined){continue}var c=this.colDefs[a];c.gbvis=this.studentInfoLayouts[b].gbvis;c.pos=this.studentInfoLayouts[b].pos}},_loadRowDataFromJSON:function(a,d,h){var c=new Array();var g="";if(a[0].uid){g=a[0].uid}var b=new Gradebook.RowMetaData(g);for(var f=0;f<d.length;f++){if(d[f] instanceof Gradebook.GradeColDef){c[f]=new Gradebook.Grade(d[f],b)}else{c[f]=new Gradebook.StudentAttribute(d[f],b)}}for(var f=0;f<a.length;f++){var e=h[a[f].c];if(e==undefined){GradebookUtil.error("GridModel _loadRowDataFromJSON jsonRow contains data for invalid column id: "+a[f].c);continue}c[e]._loadFromJSON(a[f])}return c},_updateRowDataFromJSON:function(h,a,c,f){var b=h[0].metaData;for(var e=0;e<a.length;e++){var d=f[a[e].c];var g=h[d];if(g===undefined){if(c[d] instanceof Gradebook.GradeColDef){g=new Gradebook.Grade(c[d],b)}else{g=new Gradebook.StudentAttribute(c[d],b)}h.push(g)}c[d].comput_err=false;g._loadFromJSON(a[e])}},getRowIterators:function(b,h,g){var f=this.visibleRows;if(!b){b=0}if(!g){g=0}if(!h){h=f.length}var a=b+h;if(b<0||b>=f.length){GradebookUtil.error("getRowIterators startRow out of range. Max is: "+f.length-1+" startRow is: "+b);return null}if(h<0||h>f.length){GradebookUtil.error("getRowIterators numRows out of range. Max is: "+f.length+" numRows is: "+h);return null}if(g<0||g>=this.colOrderMap.length){GradebookUtil.error("getRowIterators startCol out of range. Max is: "+this.orderMap.length+" startCol is: "+g);return null}if(a>f.length){a=f.length;GradebookUtil.error("Error: GridModel getRowIterators input args requesting too much data. startRow = "+b+" numRows = "+h+" rows.length = "+f.length);return null}var e=new Array();var c=0;for(var d=b;d<a;d++){e[c++]=new Gradebook.GridRowIterator(f[d],this.colOrderMap,g)}return e},getColDefIterator:function(a){if(!a){a=0}if(a<0||a>=this.colOrderMap.length){GradebookUtil.error("getColDefIterator startCol out of range. Max is: "+this.orderMap.length+" startCol is: "+a);return null}return new Gradebook.GridRowIterator(this.colDefs,this.colOrderMap,a)},getNumRows:function(){if(this.visibleRows){return this.visibleRows.length}else{return 0}},getNumColDefs:function(){return this.colOrderMap.length},getNumFrozenColumns:function(){return this.numFrozenColumns},getSortDir:function(){return this.sortDir},getSortIndex:function(){if(this.sortColumnId===undefined){return -1}var a=this.colDefMap[this.sortColumnId];if(a===undefined){return -1}else{var b=this.colOrderMap[a];if(b===undefined||this.colDefs[b]===undefined||this.colDefs[b].deleted=="Y"){return -1}else{return a}}},reSort:function(){if(this.sortColumnId===undefined||this.sortDir===undefined){return}var a=this.getSortIndex();if(a==-1){return}this.sort(a,this.sortDir)},setDefaultView:function(a){this.gradebookService.setDefaultView(a)},getDefaultView:function(){if(this.defCVID){if(this.customViewMap[this.defCVID]){return"cv_"+this.defCVID}return null}else{if(this.defGPID){if(this.gradingPeriodMap&&!this.gradingPeriodMap[this.defGPID]){return null}return this.defGPID}else{return null}}},changeCurrentView:function(a){this.customViewIdParam=null;return this._internalChangeCurrentView(a)},_internalChangeCurrentView:function(c){var b=this.currentView;this.currentView=c;this.currentCustomView=null;this.currentGradingPeriodId=null;if(c.startsWith("cv_")){var a=this.customViewMap[c.substring(3)];if(a==undefined){if(this.defCVID){var d="cv_"+this.defCVID;if(d!=c){this._internalChangeCurrentView(d)}else{this.currentView=(this.currentView!=b)?b:null;return null}}else{if(this.defGPID){this._internalChangeCurrentView(this.defGPID)}else{this.currentView=(this.currentView!=b)?b:null;return null}}}else{if(!this.customViews[a].evaluate()){this.currentView=(this.currentView!=b)?b:null;return this.getMessage("changesEffectCustViewMsg")}this.currentCustomView=this.customViews[a]}}else{if(this.gradingPeriodMap&&!this.gradingPeriodMap[c]){if(this.defCVID){this._internalChangeCurrentView("cv_"+this.defCVID)}else{if(this.defGPID&&this.defGPID!=c){this._internalChangeCurrentView(this.defGPID)}else{this.currentView=(this.currentView!=b)?b:null;this.currentGradingPeriodId=null}}return null}this.currentGradingPeriodId=c}return null},_applyCustomView:function(){if(this.isolatedStudentId){this.visibleRows=new Array();var d=this.getRowByUserId(this.isolatedStudentId);this.visibleRows.push(d)}if(this.currentCustomView==null||this.currentCustomView==undefined){return}this.currentCustomView.evaluate(this);var c=this.currentCustomView.getUserIds();if(this.isolatedStudentId){return}this.visibleRows=new Array();for(var b=0,a=c.length;b<a;b++){var d=this.getRowByUserId(c[b]);if(d){this.visibleRows.push(d)}}},_buildGradingPeriodMap:function(){this.gradingPeriodMap=new Array();if(this.gradingPeriods){for(var b=0,a=this.gradingPeriods.length;b<a;b++){this.gradingPeriodMap[this.gradingPeriods[b].id]=this.gradingPeriods[b]}this.gradingPeriods.sort(function(d,c){var e=d.name.toLowerCase();var f=c.name.toLowerCase();if(e==f){return 0}else{if(e<f){return -1}else{return 1}}})}},getCustomView:function(b){var a=this.customViewMap[b];if(a==undefined){return null}else{return this.customViews[a]}},getCurrentCustomView:function(a){return this.currentCustomView},sortColumns:function(j){if(this.sortColAscending==undefined){this.sortColAscending=true}if(j){if(this.currentSortColumnBy==j){this.sortColAscending=!this.sortColAscending}else{this.sortColAscending=true;this.currentSortColumnBy=j}}else{if(!this.currentSortColumnBy){this.currentSortColumnBy="pos"}}var k=null;j=this.currentSortColumnBy;if(j=="pos"){k=this._sortColByPosFunc.bind(this)}else{if(j=="categories"){k=this._sortColByCategoriesFunc.bind(this)}else{if(j=="dueDate"){k=this._sortColByDueDateFunc.bind(this)}else{if(j=="creationdate"){k=this._sortColByCreationDateFunc.bind(this)}else{if(j=="points"){k=this._sortColByPointsFunc.bind(this)}else{if(j=="name"){k=this._sortColByNameFunc.bind(this)}}}}}}var a=new Array();if(this.currentCustomView){var e=this.currentCustomView.getDisplayItemIds();a=this._getVisibleToAll(this.currentCustomView.includeHiddenItems,e);for(var c=0,d=e.length;c<d;c++){var b=this.colDefs[this.colDefMap[e[c]]];a.push(b)}}else{for(var c=0,d=this.colDefs.length;c<d;c++){var b=this.colDefs[c];if(b.deleted||!b.gbvis){continue}var h=this.currentGradingPeriodId;var g=(h==undefined||h==b.gpid||h=="all"||(h=="none"&&b.gpid==""));if(b.visAll||!b.isGrade()||g){a.push(b)}}}a.sort(k);this.colOrderMap=new Array();for(var c=0,d=a.length,f=0;c<d;c++){this.colOrderMap[f++]=this.colDefMap[a[c].id]}},_getVisibleToAll:function(c,d){var b=new Array();for(var e=0,a=this.colDefs.length;e<a;e++){var g=this.colDefs[e];if(d.indexOf(g.id)!=-1){continue}var f=g.visAll||!g.isGrade();if(g.deleted||!f||(!c&&!g.gbvis)){continue}b.push(g)}return b},_sortVisibleToAll:function(d,c){var e=d.visAll||!d.isGrade();var f=c.visAll||!c.isGrade();if(!e&&!f){return null}else{if(e&&f){return d.pos-c.pos}else{if(e){return -1}else{if(f){return 1}}}}},_sortColDir:function(a){return(this.sortColAscending)?a:a*-1},_sortColByPosFunc:function(d,c){var g=this._sortVisibleToAll(d,c);if(g!=null){return g}var h=(d.gpid.blank())?-1:this.gradingPeriodMap[d.gpid].pos;var f=(c.gpid.blank())?-1:this.gradingPeriodMap[c.gpid].pos;var e;if(h==f){e=d.pos-c.pos}else{if(h>=0&&f>=0){e=h-f}else{if(f==-1){e=-1}else{e=1}}}return this._sortColDir(e)},_sortColByPointsFunc:function(d,c){var f=this._sortVisibleToAll(d,c);if(f!=null){return f}var g=d.points;var h=c.points;var e;if(g==h){e=d.cdate-c.cdate}else{if(g<h){e=-1}else{e=1}}return this._sortColDir(e)},_sortColByNameFunc:function(d,c){var f=this._sortVisibleToAll(d,c);if(f!=null){return f}var g=d.name.toLocaleLowerCase();var h=c.name.toLocaleLowerCase();var e;if(g==h){e=d.cdate-c.cdate}else{if(g<h){e=-1}else{e=1}}return this._sortColDir(e)},_sortColByDueDateFunc:function(d,c){var f=this._sortVisibleToAll(d,c);if(f!=null){return f}var g=d.due;var h=c.due;var e;if(g==h){e=d.cdate-c.cdate}else{if(g==0){e=-1}else{if(h==0){e=1}else{if(g<h){e=-1}else{e=1}}}}return this._sortColDir(e)},_sortColByCreationDateFunc:function(d,c){var f=this._sortVisibleToAll(d,c);if(f!=null){return f}var e=d.cdate-c.cdate;return this._sortColDir(e)},_sortColByCategoriesFunc:function(d,c){var f=this._sortVisibleToAll(d,c);if(f!=null){return f}var g=d.getCategory();var h=c.getCategory();var e;if(g==h){e=d.cdate-c.cdate}else{if(g<h){e=-1}else{e=1}}return this._sortColDir(e)},sort:function(d,c){if(d<-1||d>=this.colOrderMap.length){GradebookUtil.error("sort colnum out of range. Max is: "+this.orderMap.length+" colnum is: "+d);return}GradebookUtil.debug("GridModel sort called. colnum: "+d+" sortdir: "+c);this.sortDir=c;var f;if(d==-1){this.sortColumnId=null;if(c=="ASC"){f=this._sortCheckedASC.bind(this)}else{f=this._sortCheckedDESC.bind(this)}}else{var e=this.colOrderMap[d];var a=this.colDefMap.LN;var b=this.colDefs[e];this.sortColumnId=b.id;if(this.sortColumnId=="LN"){a=this.colDefMap.FN}f=b.getSortFunction(e,c,a)}this.visibleRows.sort(f)},_sortCheckedASC:function(d,c){var e=d[0].isRowChecked()?1:0;var f=c[0].isRowChecked()?1:0;if(e==f){return 0}if(e<f){return -1}return 1},_sortCheckedDESC:function(d,c){var e=d[0].isRowChecked()?1:0;var f=c[0].isRowChecked()?1:0;if(e==f){return 0}if(f<e){return -1}return 1},getColDefs:function(g,b){var e=this.colDefs;var d=new Array();for(var f=0,a=e.length;f<a;f++){var h=e[f];if(!h.deleted&&(!g||h.isGrade())&&(b||!h.isHidden())){d.push(h)}}return d},getCurrentColDefs:function(b){var e=this.colDefs;var d=new Array();for(var f=0,a=this.colOrderMap.length;f<a;f++){var g=e[this.colOrderMap[f]];if(g.isGrade()&&(b||!g.isCalculated())){d.push(g)}}return d},getNextColDefId:function(b,a){for(var c=0;c<b.length-1;c++){if(b[c].getID()==a){return b[c+1].getID()}}return null},getPrevColDefId:function(b,a){for(var c=1;c<b.length;c++){if(b[c].getID()==a){return b[c-1].getID()}}return null},getStudents:function(c){var h=(c)?this.rows:this.visibleRows;var e=new Array();var a=0;var b=1;var f=2;h.sort(function(k,i){var l=k[a].v;var m=i[a].v;if(l==m){return 0}else{if(l<m){return -1}else{return 1}}});for(var d=0;d<h.length;d++){var j={};var g=h[d];j.last=g[a].v;j.first=g[b].v;j.user=g[f].v;j.id=g[0].getUserId();j.hidden=g[0].isHidden();j.available=g[0].isAvailable();e.push(j)}return e},getGradingPeriods:function(){return this.gradingPeriods},getCategories:function(){return this.categories},getNextUserId:function(b){for(var a=0;a<this.visibleRows.length-1;a++){if(this.visibleRows[a][0].getUserId()==b){return this.visibleRows[a+1][0].getUserId()}}return null},getPrevUserId:function(b){for(var a=1;a<this.visibleRows.length;a++){if(this.visibleRows[a][0].getUserId()==b){return this.visibleRows[a-1][0].getUserId()}}return null},getRawValue:function(d,b){var a=this.colDefMap[d];if(a===undefined){return null}var c=this.colDefs[a];return c.getRawValue(b)},getDisplayValue:function(c,d){var a=this.colDefMap[c];if(a===undefined){return null}var b=this.colDefs[a];return b.getDisplayValue(d)},getDisplayType:function(c){var a=this.colDefMap[c];if(a===undefined){return null}var b=this.colDefs[a];return b.getDisplayType()},validate:function(c,d){var a=this.colDefMap[c];if(a===undefined){return null}var b=this.colDefs[a];return b.validate(d)},getCheckedStudentIds:function(){var c=this.visibleRows;var d=new Array();for(var b=0,a=c.length;b<a;b++){if(c[b][0].isRowChecked()){d.push(c[b][0].getUserId())}}return d},checkedAllStudents:function(){var c=this.visibleRows;for(var b=0,a=c.length;b<a;b++){c[b][0].setRowChecked(true)}this.fireModelChanged()},checkedNoStudents:function(){var c=this.visibleRows;for(var b=0,a=c.length;b<a;b++){c[b][0].setRowChecked(false)}this.fireModelChanged()},invertCheckedStudents:function(){var c=this.visibleRows;for(var b=0,a=c.length;b<a;b++){c[b][0].invertChecked()}this.fireModelChanged()},checkedRangeOfStudents:function(f,e){var b;var g=this.visibleRows;for(var d=0,a=g.length;d<a;d++){var c=g[d][0].getUserId();if(!b&&(c!=f&&c!=e)){continue}else{if(!b&&c==f){b=c}else{if(!b&&c==e){b=c}else{if(c==f||c==e){break}else{g[d][0].setRowChecked(true)}}}}}this.fireModelChanged()},isAnyGradeModified:function(c){var a=this.colDefMap[c];if(a===undefined){return false}var d=this.visibleRows;for(var b=0;b<d.length;b++){if(d[b][a].isModified()){return true}}return false},clearModifiedIndicator:function(d,c){if(c==-1){var a=this.colDefMap[d];if(a===undefined){return}var e=this.visibleRows;for(var b=0;b<e.length;b++){if(e[b][a].isModified()){e[b][a].clearModifiedIndicator()}}this.fireModelChanged()}this.gradebookService.clearModifiedIndicator(d,c)},clearAttempts:function(c,b,a,d){this.gradebookService.clearAttempts(c,b,a,d)},updateGroups:function(){var a=this.courseId;if(a.indexOf("_")>=0){a=a.split("_")[1]}var b=window.frames.gradecenterframe;if(!b){b=window.frames.content}if(!b.GradebookDWRFacade){b=window.frames.content.frames.main}b.GradebookDWRFacade.getGroups(a,Gradebook.GridModel.prototype.updateGroupsCallback)},updateGroupsCallback:function(e){var d=new Array();var a=new Array();var c=$H(e);c.each(function(h){var f={};f.id=h.key;f.uids=h.value;d[f.id]=a.length;a.push(f)});var b=Gradebook.getModel();b.groupsMap=d;b.groups=a},getReportData:function(k){var j=0;var r=null;if(k.students=="BYGROUPS"){if(k.groupIds==null){GradebookUtil.error("GridModel error getReportData: no reportDef.groupIds");return null}r=this._getUserIdsByGroupIds(k.groupIds)}else{if(k.students=="BYSTUDENT"){if(k.studentIds==null){GradebookUtil.error("GridModel error getReportData: no reportDef.studentIds");return null}r=k.studentIds}}var h=this._getRowsByUserIds(r);h.sort(function(g,c){var i=g[j].v;var w=c[j].v;if(i==w){return 0}else{if(i<w){return -1}else{return 1}}});if(!k.includeHiddenStudents){h=this._removeHiddenStudents(h)}var l=this.getColDefs(true,true);if(k.columns=="BYITEM"){l=this._getColDefsById(k.itemIds)}else{if(k.columns=="BYGP"){l=this._getColDefsByGradingPeriodId(k.gradingPeriodIds)}else{if(k.columns=="BYCAT"){l=this._getColDefsByCategoryId(k.categoryIds)}}}if(!k.includeHiddenColumns){l=this._removeHiddenColumns(l)}var p={};p.columnInfoMap=new Array();p.studentGradeInfo=new Array();for(var n=0,o=l.length;n<o;n++){var b=l[n];var a={};p.columnInfoMap[b.id]=a;a.name=b.getName();if(k.columnInfoDescription){a.description="tbd"}if(k.columnInfoDueDate){a.dueDate=b.getDueDate()}if(k.columnInfoStatsMedian||k.columnInfoStatsAverage){var v=b.getStats(true);a.statsMedian=v.median;a.statsAverage=v.avg}}for(var n=0,f=h.length;n<f;n++){var d=h[n];var m={};p.studentGradeInfo.push(m);if(k.firstName){m.firstName=this._getStudentAttribute(d,"FN")}if(k.lastName){m.lastName=this._getStudentAttribute(d,"LN")}if(k.studentId){m.studentId=this._getStudentAttribute(d,"SI")}if(k.userName){m.userName=this._getStudentAttribute(d,"UN")}if(k.lastAccessed){m.lastAccessed=this._getStudentAttribute(d,"LA");if(m.lastAccessed&&m.lastAccessed>0){var t=new Date();t.setTime(m.lastAccessed);m.lastAccessed=formatDate(t,"MMM d, y")}}m.grades=new Array();for(var s=0,e=l.length;s<e;s++){var q={};q.cid=l[s].id;var u=this._getGrade(d,l[s]);if(u.attemptInProgress()&&!u.isOverride()){q.grade=this.getMessage("inProgressMsg")}else{if(u.needsGrading()&&!u.isOverride()){q.grade=this.getMessage("needsGradingMsg")}else{q.grade=u.getCellValue()}}m.grades.push(q)}}return p},_getGrade:function(c,b){var a=this.colDefMap[b.id];if(a==undefined){GradebookUtil.error("GridModel _getGrade invalid column id: "+b.id);return null}return c[a]},_getStudentAttribute:function(c,a){var b=this.colDefMap[a];if(b==undefined){GradebookUtil.error("GridModel _getStudentAttribute invalid column id: "+a);return null}return c[b].getValue()},_removeHiddenStudents:function(d){var c=new Array();for(var b=0,a=d.length;b<a;b++){if(!d[b][0].isHidden()){c.push(d[b])}}return c},_removeHiddenColumns:function(c){var b=new Array();for(var d=0,a=c.length;d<a;d++){if(!c[d].isHidden()){b.push(c[d])}}return b},_getColDefsById:function(b){var c=new Array();for(var d=0,a=this.colDefs.length;d<a;d++){if(b.indexOf(this.colDefs[d].id)!=-1){c.push(this.colDefs[d])}}return c},_getColDefsByCategoryId:function(c){var b=new Array();for(var d=0,a=this.colDefs.length;d<a;d++){if(c.indexOf(this.colDefs[d].catid)!=-1){b.push(this.colDefs[d])}}return b},_getColDefsByGradingPeriodId:function(b){var c=new Array();for(var d=0,a=this.colDefs.length;d<a;d++){if(b.indexOf(this.colDefs[d].gpid)!=-1){c.push(this.colDefs[d])}}return c},_getRowsByUserIds:function(d){var c=this.rows;if(d==null){return c}var e=new Array();for(var b=0,a=c.length;b<a;b++){if(d.indexOf(c[b][0].getUserId())!=-1){e.push(c[b])}}return e},_getUserIdsByGroupIds:function(b){if(!this.groupsMap||!this.groups){GradebookUtil.error("GridModel error getUserIdsByGroupIds: no groups");return null}var f=new Array();for(var c=0;c<b.length;c++){var a=this.groupsMap[Number(b[c])];if(a==undefined){GradebookUtil.error("GridModel error getUserIdsByGroupIds: no group for id: "+b[c]);continue}var e=this.groups[a];for(var d=0;d<e.uids.length;d++){if(f.indexOf(e.uids[d])==-1){f.push(String(e.uids[d]))}}}return f},getStudentStats:function(b,r){var p={};p.catStats=new Array();var j=new Array();var o=new Array();var s=r?this.colOrderMap.length:this.colDefs.length;for(var q=0;q<s;q++){var l=r?this.colOrderMap[q]:q;var v=this.colDefs[l];if(!v.deleted&&v.isGrade()&&!v.isCalculated()){o.push(v)}}var f=this.getRowByUserId(b);for(var q=0;q<o.length;q++){var k=o[q];var h=k.getCategoryID();var m=j[h];if(m==null){m={};m.name=k.getCategory();m.qtyGraded=0;m.qtyInProgress=0;m.qtyNeedsGrading=0;m.qtyExempt=0;m.sum=0;m.avg=0;j[h]=m;p.catStats.push(m)}var a=this._getGrade(f,k);var w=a.getSortValue();var n=(w=="-");var g=a.attemptInProgress();var e=a.needsGrading();var t=a.isExempt();var d=(!n&&!g&&!e&&!t);if(g){m.qtyInProgress++}else{if(e){m.qtyNeedsGrading++}else{if(t){m.qtyExempt++}}}if(d){m.qtyGraded++;if(k.isCalculated()){w=parseFloat(w)/parseFloat(a.getPointsPossible())*100}m.sum+=parseFloat(w)}}p.numItemsCompleted=0;var u=0;for(var q=0;q<p.catStats.length;q++){var m=p.catStats[q];if(m.sum>0){m.avg=m.sum/parseFloat(m.qtyGraded);m.avg=NumberFormatter.getDisplayFloat(m.avg.toFixed(2))}u+=m.qtyExempt;p.numItemsCompleted+=(m.qtyNeedsGrading+m.qtyGraded)}p.numItems=o.length-u;return p},getAccessibleMode:function(){return this.accessibleMode},setAccessibleMode:function(a){this.accessibleMode=a},setLoggerDebugLevel:function(a){this.logger.setLevel(top.content.log4javascript.Level.DEBUG)},setLogger:function(a){this.logger=a},getLogger:function(){return this.logger},setMessages:function(a){this.messages=a},getMessage:function(a){if(this.messages){return this.messages[a]}else{return a}}};Gradebook.RowMetaData=Class.create();Gradebook.RowMetaData.prototype={initialize:function(a){this.userId=a;this.isChecked=false;this.isHidden=false;this.comput_err=false}};Gradebook.ColDef=Class.create();Gradebook.ColDef.prototype={initialize:function(c,a,b){this.model=a;Object.extend(this,c);if(this.sid){this.primarySchema=b[this.sid]}if(this.ssid){this.secondarySchema=b[this.ssid]}},getSortFunction:function(c,b,a){this.sortColumn=c;this.secondarySortColumn=a;if(b=="ASC"){return this._sortASC.bind(this)}else{return this._sortDESC.bind(this)}},validate:function(b,a){if(!this.primarySchema){return null}else{return this.primarySchema.validate(b,a)}},_sortASC:function(d,c){var e=d[this.sortColumn].getValue();var f=c[this.sortColumn].getValue();if(!e&&!f){return this._secondarySortASC(d,c)}if(!e){return -1}if(!f){return 1}e=e.toUpperCase();f=f.toUpperCase();if(e==f){return this._secondarySortASC(d,c)}if(e<f){return -1}return 1},_secondarySortASC:function(d,c){var e=d[this.secondarySortColumn].getValue();var f=c[this.secondarySortColumn].getValue();if(!e||!f){return 0}e=e.toUpperCase();f=f.toUpperCase();if(e==f){return 0}if(e<f){return -1}return 1},_sortDESC:function(d,c){var e=d[this.sortColumn].getValue();var f=c[this.sortColumn].getValue();if(!e&&!f){return this._secondarySortDESC(d,c)}if(!f){return -1}if(!e){return 1}e=e.toUpperCase();f=f.toUpperCase();if(e==f){return this._secondarySortDESC(d,c)}if(f<e){return -1}return 1},_secondarySortDESC:function(d,c){var e=d[this.secondarySortColumn].getValue();var f=c[this.secondarySortColumn].getValue();if(!e||!f){return 0}e=e.toUpperCase();f=f.toUpperCase();if(e==f){return 0}if(f<e){return -1}return 1},getEditValue:function(a){if(!this.primarySchema){return a.getValue()}return this.primarySchema.getEditValue(a)},getCellValue:function(c){if(!this.primarySchema){return c.getValue()}var b=this.primarySchema.getCellValue(c);if(this.secondarySchema){var a=this.secondarySchema.getCellValue(c);b+=" <span>("+a+")</span>"}return new String(b)},getAltValue:function(c){if(c.isExempt()){return this.model.getMessage("cmExemptGrade")}if(!this.secondarySchema){return this.getCellValue(c)}var b=this.primarySchema.getCellValue(c);if(this.secondarySchema){var a=this.secondarySchema.getCellValue(c);b+=" ("+a+")"}return new String(b)},getSortValue:function(a){return a.getValue()},getName:function(){return this.name},getID:function(){return this.id},getPoints:function(){if(this.isCalculated()){return GradebookUtil.getMessage("variesPerStudentMsg")}else{return this.points}},getAliasID:function(){return this.id},getCategoryID:function(){return this.catid},getCategory:function(){if(!this.catid){return""}if(!this.model.catNameMap){return""}var a=this.model.catNameMap[Number(this.catid)];if(a){return a}return""},getCategoryAliasID:function(){return this.catid},isHidden:function(){return !this.gbvis},isScorable:function(){return this.scrble},isPublic:function(){return(this.id==this.model.pubColID)},isVisibleToStudents:function(){return this.vis},onHideColumn:function(a){Event.stop(a);this.gbvis=false;this.model.hideColumn(this.id)},onSortAscending:function(a){Event.stop(a);this.cellController.onSortAscending()},onSortDescending:function(a){Event.stop(a);this.cellController.onSortDescending()},onToggleColumnStudentVisibility:function(a){Event.stop(a);this.model.setColumnStudentVisibility(this.id,!this.vis);this.cellController.closePopupsAndRestoreFocus(a)},getDisplayType:function(){return this.primarySchema.type},hasError:function(){return this.comput_err},getDisplayValue:function(a){if(this.primarySchema){return this.primarySchema.getDisplayValue(a,this.points)}else{return a}}};Gradebook.GradeColDef=Class.create();Object.extend(Gradebook.GradeColDef.prototype,Gradebook.ColDef.prototype);Object.extend(Gradebook.GradeColDef.prototype,{initialize:function(c,a,b){Gradebook.ColDef.prototype.initialize.call(this,c,a,b)},getRawValue:function(b){var c=b;if(this.primarySchema){var a=this.primarySchema.getRawValue(b,this);c=parseFloat(a);if(!GradebookUtil.isValidFloat(a)){if(typeof(a)=="string"){return a}c=0}}return c},getSortValue:function(a){if(this.primarySchema){return this.primarySchema.getSortValue(a)}else{return a.getValue()}},updateGrade:function(c,b){var d=this.getRawValue(c);var a=c;this.model.updateGrade(d,a,b,this.id)},_sortASC:function(u,t){var o=u[this.sortColumn];var m=t[this.sortColumn];var v=o.getSortValue();var e=m.getSortValue();if(o.colDef.primarySchema instanceof Gradebook.TextSchema){if(v==e){return this._secondarySortASC(u,t)}if(v<e){return -1}return 1}var k=parseFloat(v);var i=parseFloat(e);var l=(v=="-");var f=(e=="-");var h=o.isExempt();var q=m.isExempt();var r=o.attemptInProgress();var g=m.attemptInProgress();var n=o.needsGrading();var d=m.needsGrading();var c=(l||h||r||n||isNaN(k));var j=(f||q||g||d||isNaN(i));var p=(h)?1:(r)?2:(n)?3:(l)?0:v;var s=(q)?1:(g)?2:(d)?3:(f)?0:e;if(c||j){if(c&&j){if(p==s){return this._secondarySortASC(u,t)}else{return p-s}}if(c){return -1}else{return 1}}else{if(k==i){return this._secondarySortASC(u,t)}else{return k-i}}},_sortDESC:function(u,t){var o=u[this.sortColumn];var m=t[this.sortColumn];var v=o.getSortValue();var e=m.getSortValue();if(o.colDef.primarySchema instanceof Gradebook.TextSchema){if(v==e){return this._secondarySortDESC(u,t)}if(e<v){return -1}return 1}var k=parseFloat(v);var i=parseFloat(e);var l=(v=="-");var f=(e=="-");var h=o.isExempt();var q=m.isExempt();var r=o.attemptInProgress();var g=m.attemptInProgress();var n=o.needsGrading();var d=m.needsGrading();var c=(l||h||r||n||isNaN(k));var j=(f||q||g||d||isNaN(i));var p=(h)?1:(r)?2:(n)?3:(l)?0:v;var s=(q)?1:(g)?2:(d)?3:(f)?0:e;if(c||j){if(c&&j){if(p==s){return this._secondarySortDESC(u,t)}else{return s-p}}if(j){return -1}else{return 1}}else{if(k==i){return this._secondarySortDESC(u,t)}else{return i-k}}},isGrade:function(){return true},isCalculated:function(){return this.type!="N"},isTotal:function(){return this.type=="T"},isWeighted:function(){return this.type=="W"},getType:function(){switch(this.type){case"T":return"total";case"W":return"weighted";case"A":return"average";case"M":return"minMax"}return"grade"},isManual:function(){return this.manual},isHideAttemptScore:function(){return this.hideAtt},isTextSchema:function(a){var b=this.model.schemaMap[a];if((b!=undefined)&&(b.type=="X")){return true}return false},isAssessment:function(){return(this.src&&this.src=="assmt")},isAssignment:function(){return(this.src&&this.src=="agn")},isAllowMulti:function(){return(this.am&&this.am=="y")},showGradeDetails:function(a){this.model.showGradeDetails(a,this.id)},onAddComment:function(a){this.model.onAddComment(a,this.id)},exemptGrade:function(a){this.model.exemptGrade(a,this.id)},clearExemption:function(a){this.model.clearExemption(a,this.id)},setComments:function(a,c,b){this.model.setComments(a,this.id,c,b)},onModifyColumn:function(a){Event.stop(a);this.model.modifyColumn(this.id,this.type)},onDeleteColumn:function(a){Event.stop(a);if(confirm(this.model.getMessage("confirmDeleteItemMsg"))){this.model.deleteColumn(this.id)}},onViewInfo:function(a){this.cellController.viewColumnInfo(a,this)},onClearModified:function(a){Event.stop(a);this.clearModifiedIndicator(-1);this.cellController.closePopupsAndRestoreFocus(a)},onItemStats:function(a){Event.stop(a);this.model.viewItemStats(this.id)},clearModifiedIndicator:function(a){this.model.clearModifiedIndicator(this.id,a)},clearAttemptsByDate:function(a,b){this.model.clearAttempts(this.id,"BYDATE",a,b)},clearAttempts:function(a){this.model.clearAttempts(this.id,a)},onViewAssessmentStats:function(a){Event.stop(a);this.model.gradebookService.viewAssessmentStats(this.id)},onMakeExternalGrade:function(a){Event.stop(a);this.cellController.closePopupsAndRestoreFocus(a);this.model.gradebookService.makeExternalGrade(this.id)},onDownloadAssessmentResults:function(a){Event.stop(a);this.model.gradebookService.downloadAssessmentResults(this.id)},onAssignmentFileCleanup:function(a){Event.stop(a);this.model.gradebookService.assignmentFileCleanup(this.id)},onAssignmentDownload:function(a){Event.stop(a);this.model.gradebookService.assignmentDownload(this.id)},onShowClearAttemptsForm:function(a){this.cellController.showClearAttemptsFlyOut(a,this.id)},getContextMenuInfo:function(b){this.cellController=b;var a;var c={id:"gradeHeaderCM",items:[{id:"gh_viewColumnInfo",visible:true,onclick:this.onViewInfo.bindAsEventListener(this)},{id:"gh_modifyColumn",visible:true,onclick:this.onModifyColumn.bindAsEventListener(this)},{id:"gh_columnStats",visible:!this.isTextSchema(this.sid),onclick:this.onItemStats.bindAsEventListener(this)},{id:"gh_clearModified",visible:(this.model.isAnyGradeModified(this.id)),onclick:this.onClearModified.bindAsEventListener(this)},{id:"gh_makeExternalGrade",visible:!this.isPublic(),onclick:this.onMakeExternalGrade.bindAsEventListener(this)},{id:"gh_assessStats",visible:this.isAssessment(),onclick:this.onViewAssessmentStats.bindAsEventListener(this)},{id:"gh_assessDownload",visible:this.isAssessment(),onclick:this.onDownloadAssessmentResults.bindAsEventListener(this)},{id:"gh_assignFileCleanup",visible:this.isAssignment(),onclick:this.onAssignmentFileCleanup.bindAsEventListener(this)},{id:"gh_assignDownload",visible:this.isAssignment(),onclick:this.onAssignmentDownload.bindAsEventListener(this)},{id:"gh_clearAllAttempts",visible:this.isAllowMulti(),onclick:this.onShowClearAttemptsForm.bindAsEventListener(this)},{id:"gh_sortAscending",visible:true,onclick:this.onSortAscending.bindAsEventListener(this)},{id:"gh_sortDescending",visible:true,onclick:this.onSortDescending.bindAsEventListener(this)},{id:"gh_hideColumn",visible:true,onclick:this.onHideColumn.bindAsEventListener(this),receipt:"hideColumnInlineMsg"},{id:"gh_deleteColumn",visible:((this.isManual()||this.isCalculated())&&!this.isPublic()),onclick:this.onDeleteColumn.bindAsEventListener(this)}]};return c},getDueDate:function(){var b=GradebookUtil.getMessage("noneMsg");if(this.due&&this.due>0){var a=new Date();a.setTime(this.due);b=formatDate(a,"MMM d, y")}return b},getStats:function(c){var n=this.model._getGradesForItemId(this.id,c);if(this.primarySchema instanceof Gradebook.TextSchema){n=new Array()}var m=new Array();var k=0;var h={};h.count=0;h.minVal=null;h.maxVal=null;h.qtyNull=0;h.qtyInProgress=0;h.qtyNeedsGrading=0;h.qtyExempt=0;for(var g=0;g<n.length;g++){var e=n[g];var d=e.getSortValue();var a=(d=="-");var l=e.attemptInProgress();var f=e.needsGrading();var j=e.isExempt();var b=(!a&&!l&&!f&&!j);if(l){h.qtyInProgress++}else{if(f){h.qtyNeedsGrading++}else{if(j){h.qtyExempt++}else{if(a){h.qtyNull++}}}}if(b){if(this.isCalculated()){d=(parseFloat(d)/parseFloat(e.getPointsPossible())*100)}m.push(d);k+=parseFloat(d);h.minVal=(h.minVal==null)?d:Math.min(d,h.minVal);h.maxVal=(h.maxVal==null)?d:Math.max(d,h.maxVal)}}h.count=m.length;if(m.length==0){h.avg="";h.range="";h.minVal="";h.maxVal="";h.median="";h.variance="";h.stdDev=""}else{h.avg=k/m.length;h.range=h.maxVal-h.minVal;m.sort(Gradebook.numberComparator);if(m.length==1){h.median=m[0]}else{if(m.length%2){h.median=m[parseInt(m.length/2)]}else{h.median=(m[m.length/2-1]+m[m.length/2])/2}}h.variance=this._computeVariance(m,h.avg);h.stdDev=Math.sqrt(h.variance);h.maxVal=this._formatFloat(h.maxVal);h.minVal=this._formatFloat(h.minVal);h.avg=this._formatFloat(h.avg);h.range=this._formatFloat(h.range);h.median=this._formatFloat(h.median);h.variance=this._formatFloat(h.variance);h.stdDev=this._formatFloat(h.stdDev)}h.gradeDistribution=this.primarySchema.getGradeDistribution(m,this.isCalculated()?100:this.points,h);return h},_formatFloat:function(a){try{if(a!=null){return NumberFormatter.getDisplayFloat(a.toFixed(2))}}catch(b){}return a},_computeVariance:function(b,e){var a=0;for(var d=0;d<b.length;d++){var c=b[d]-e;a+=(c*c)}return a/b.length},getInfo:function(){var c;if(this.isPublic()){c=GradebookUtil.getMessage("isMsg")}else{c=GradebookUtil.getMessage("isNotMsg")}var d;if(this.isScorable()){d=GradebookUtil.getMessage("yesMsg")}else{d=GradebookUtil.getMessage("noMsg")}var a;if(this.isCalculated()){a=GradebookUtil.getMessage("variesPerStudentMsg")}else{a=NumberFormatter.getDisplayFloat(this.points)}var b=[{id:"itemInfoId",value:this.getID()},{id:"itemInfoName",value:this.name},{id:"itemInfoCategory",value:this.getCategory()},{id:"itemInfoSchema",value:this.primarySchema.name},{id:"itemInfoPoints",value:(a==0?"-":a)},{id:"itemInfoPublic",value:c},{id:"itemInfoIncludedInCalculations",value:d},{id:"itemInfoDueDate",value:this.getDueDate()}];return b}});Gradebook.StudentAttributeColDef=Class.create();Object.extend(Gradebook.StudentAttributeColDef.prototype,Gradebook.ColDef.prototype);Object.extend(Gradebook.StudentAttributeColDef.prototype,{initialize:function(c,a,b){Gradebook.ColDef.prototype.initialize.call(this,c,a,b);this.vis=true},isGrade:function(){return false},isCalculated:function(){return false},isTotal:function(){return false},isWeighted:function(){return false},getType:function(){return"student"},getCellValue:function(d){var c=d.getValue();if(this.id=="LA"){var b="";if(c&&c>0){var a=new Date();a.setTime(c);c=formatDate(a,"MMM d, y")}}return c},getRawValue:function(a){return a},updateUserVisibility:function(a,b){this.model.updateUserVisibility(a,b)},getContextMenuInfo:function(a){this.cellController=a;var c=(this.model.colOrderMap[0]!=this.model.colDefMap[this.id]);var b={id:"studentInfoHeaderCM",items:[{id:"sih_sortAscending",visible:true,onclick:this.onSortAscending.bindAsEventListener(this)},{id:"sih_sortDescending",visible:true,onclick:this.onSortDescending.bindAsEventListener(this)},{id:"sih_hideColumn",visible:c,onclick:this.onHideColumn.bindAsEventListener(this),receipt:"hideColumnInlineMsg"}]};return b}});Gradebook.GridCell=Class.create();Gradebook.GridCell.prototype={initialize:function(b,a){this.colDef=b;this.metaData=a;this.v="-";this.canBeEdited=true;this.isBeingEdited=false;this.isUncommitted=false;if(this.colDef.id=="UN"){this.metaData.userNameGridCell=this}},_loadFromJSON:function(a){this.gc=null;this.ip=null;this.ng=null;this.or=null;this.x=null;if(!(a.avail===undefined)){this.metaData.avail=a.avail}Object.extend(this,a)},getUserId:function(){return this.metaData.userId},getUserName:function(){return this.metaData.userNameGridCell.v},isHidden:function(){return this.metaData.isHidden},setHidden:function(a){this.metaData.isHidden=a},isRowChecked:function(){return this.metaData.isChecked},setRowChecked:function(a){this.metaData.isChecked=a},invertChecked:function(){this.metaData.isChecked=!this.metaData.isChecked},isAvailable:function(){return this.metaData.avail},isGrade:function(){return(this.colDef.isGrade())},isOverride:function(){return(this.or&&this.or=="y")},needsGrading:function(){return(this.ng!=null&&this.ng&&this.ng=="y")},attemptInProgress:function(){return(this.ip!=null&&this.ip&&this.ip=="y")},isModified:function(){return(this.gc&&this.gc=="y")},isGraded:function(){var a=this.getTextValue();return(a!="-"&&a.length>0)},isComplete:function(){if(this.colDef.primarySchema instanceof Gradebook.CompleteIncompleteSchema){return this.isGraded()}else{return false}},isExempt:function(){return(this.x=="y")},validate:function(b,a){return this.colDef.validate(b,a)},update:function(a){this.isUncommitted=true;this.gc="y";this.colDef.updateGrade(a,this.getUserId())},getCellValue:function(){return this.colDef.getCellValue(this)},getAltValue:function(){if(this.isGrade()&&!this.isGraded()){return GradebookUtil.getMessage("noGradeMsg")}return this.colDef.getAltValue(this)},getEditValue:function(){return this.colDef.getEditValue(this)},getSortValue:function(){return this.colDef.getSortValue(this)},getPointsPossible:function(){if(this.mp){return this.mp}else{if(this.colDef.points){return this.colDef.points}else{return 0}}},getTextValue:function(){if(this.tv){return this.tv}else{return"-"}},getValue:function(){return this.v}};Gradebook.Grade=Class.create();Object.extend(Gradebook.Grade.prototype,Gradebook.GridCell.prototype);Object.extend(Gradebook.Grade.prototype,{initialize:function(b,a){Gradebook.GridCell.prototype.initialize.call(this,b,a)},canEdit:function(){return(!this.colDef.isCalculated()&&!this.colDef.isHideAttemptScore()&&!this.savingDiv)},showGradeDetails:function(a){Event.stop(a);this.colDef.showGradeDetails(this.getUserId())},onAddComment:function(a){this.cellController.addGradeComment(a,this);this.colDef.onAddComment(this.getUserId())},exemptGrade:function(a){Event.stop(a);this.cellController.stopEdit(false,true);this.colDef.exemptGrade(this.getUserId(),this);this.cellController.closePopupsAndRestoreFocus(a)},clearExemption:function(a){Event.stop(a);this.colDef.clearExemption(this.getUserId());this.cellController.closePopupsAndRestoreFocus(a)},onClearModified:function(a){Event.stop(a);this.clearModifiedIndicator();this.colDef.clearModifiedIndicator(this.getUserId());this.cellController.closePopupsAndRestoreFocus(a)},clearModifiedIndicator:function(){this.gc=null;if(this.cellController){this.cellController.renderHTML(this)}},setComments:function(b,a){this.colDef.setComments(this.getUserId(),b,a)},getContextMenuInfo:function(c){if(this.colDef.isCalculated()){return null}this.cellController=c;var b=this.colDef.isManual();var d=this.isExempt();var a=(b&&this.v!="-")||(!b&&this.isOverride())||d;var e={id:"gradeCM",items:[{id:"g_360View",visible:true,onclick:this.showGradeDetails.bindAsEventListener(this)},{id:"g_addComment",visible:a,onclick:this.onAddComment.bindAsEventListener(this)},{id:"g_clearModified",visible:(this.isModified()),onclick:this.onClearModified.bindAsEventListener(this)},{id:"g_exemptGrade",visible:!d,onclick:this.exemptGrade.bindAsEventListener(this)},{id:"g_clearExemption",visible:d,onclick:this.clearExemption.bindAsEventListener(this)}]};return e}});Gradebook.StudentAttribute=Class.create();Object.extend(Gradebook.StudentAttribute.prototype,Gradebook.GridCell.prototype);Object.extend(Gradebook.StudentAttribute.prototype,{initialize:function(b,a){Gradebook.GridCell.prototype.initialize.call(this,b,a)},onSendEmail:function(a){Event.stop(a);var b=new Array();b[0]=this.getUserId();this.cellController.sendEmail("S",b)},onShowUser:function(a){Event.stop(a);this.colDef.updateUserVisibility(this.getUserId(),true)},onHideOtherStudents:function(a){Event.stop(a);this.colDef.model.viewSingleStudentGrades(this.getUserId())},onShowAllRows:function(a){Event.stop(a);this.colDef.model.restoreFromSingleStudentView()},onStudentStats:function(a){Event.stop(a);this.colDef.model.viewStudentStats(this.getUserId())},onHideUser:function(a){Event.stop(a);this.colDef.updateUserVisibility(this.getUserId(),false)},onAdaptiveReleaseUser:function(a){Event.stop(a);this.colDef.model.viewAdaptiveRelease(this.getUserName())},canEdit:function(){return false},getContextMenuInfo:function(a){this.cellController=a;var b={id:"studentInfoCM",items:[{id:"si_studentHideOtherStudents",visible:this.colDef.model.isolatedStudentId?false:true,onclick:this.onHideOtherStudents.bindAsEventListener(this)},{id:"si_showAllRows",visible:this.colDef.model.isolatedStudentId?true:false,onclick:this.onShowAllRows.bindAsEventListener(this)},{id:"si_studentStats",visible:true,onclick:this.onStudentStats.bindAsEventListener(this)},{id:"si_adaptiveReleaseColumn",visible:true,onclick:this.onAdaptiveReleaseUser.bindAsEventListener(this)},{id:"si_sendEmail",visible:true,onclick:this.onSendEmail.bindAsEventListener(this)},{id:"si_hideUser",visible:!this.isHidden(),onclick:this.onHideUser.bindAsEventListener(this),receipt:"hideStudentInlineMsg"},{id:"si_showUser",visible:this.isHidden(),onclick:this.onShowUser.bindAsEventListener(this)}]};return b}});Gradebook.NumericSchema=Class.create();Gradebook.NumericSchema.prototype={initialize:function(b,a){this.model=a;Object.extend(this,b)},getGradeDistribution:function(a,c,b){return Gradebook.PercentageSchema.prototype.getGradeDistribution(a,c,b)},getCellValue:function(a){return this.getDisplayValue(a.getValue(),a.getPointsPossible())},getEditValue:function(a){return this.getCellValue(a)},getSortValue:function(a){return a.getValue()},getDisplayValue:function(b,a){if(b=="-"||b.length==0){return b}return NumberFormatter.getDisplayFloat(parseFloat(b).toFixed(2))},getRawValue:function(a,b){return NumberFormatter.getDotFloat(a)},validate:function(c,b){if(c==""||c=="0"||c=="-"){return null}if(!GradebookUtil.isValidFloat(c)){return GradebookUtil.getMessage("invalidNumberErrorMsg")}var d=""+c;var a=d.indexOf(".");if(a>-1&&(d.length-a-1)>4){return GradebookUtil.getMessage("tooManyDecimalPlacesErrorMsg")}else{return null}}};Gradebook.TextSchema=Class.create();Gradebook.TextSchema.prototype={initialize:function(b,a){this.model=a;Object.extend(this,b)},getGradeDistribution:function(a,c,b){return null},getEditValue:function(a){return this.getCellValue(a)},getCellValue:function(a){return this.getDisplayValue(a.getTextValue(),a.getPointsPossible())},getSortValue:function(b){var a=b.getTextValue().toUpperCase();return a},getDisplayValue:function(b,a){return b},getRawValue:function(a,b){return a},validate:function(b,a){return null}};Gradebook.PercentageSchema=Class.create();Gradebook.PercentageSchema.prototype={initialize:function(b,a){this.model=a;Object.extend(this,b)},getGradeDistribution:function(j,h,b){var g=new Array();var c=new Array();c.count=0;c.text="less than 0";g.push(c);for(var a=0;a<10;a++){c=new Array();c.count=0;c.low=(a*10);c.high=(a*10)+((a<9)?9:10);c.text=c.low+" - "+c.high;g.push(c)}var c=new Array();c.count=0;c.text="greater than 100";g.push(c);for(var a=0,e=j.length;a<e;a++){var f=(h)?(parseFloat(j[a])/parseFloat(h)*100):parseFloat(j[a]);if(f==100){f-=0.1}var d=parseInt(f/10)+1;if(f<0){d=0}if(f>100){d=11}g[d].count++}g.reverse();return g},getCellValue:function(a){return this.getDisplayValue(a.getValue(),a.getPointsPossible())},getEditValue:function(a){return this.getCellValue(a)},getSortValue:function(a){return a.getValue()},getDisplayValue:function(c,a){if(parseFloat(a)==0||c=="-"||c.length==0){return c}var b=parseFloat(c)/parseFloat(a)*100;return NumberFormatter.getDisplayFloat(parseFloat(b).toFixed(2))+"%"},getRawValue:function(a,c){var b=(c.points)?c.points:100;a=a.replace("%","");a=NumberFormatter.getDotFloat(a);return parseFloat(a)/100*parseFloat(b)},validate:function(c,b){c=c.replace("%","");if(c==""||c=="0"||c=="-"){return null}var d=NumberFormatter.getDotFloat(c);if(!GradebookUtil.isValidFloat(d)){return GradebookUtil.getMessage("invalidNumberErrorMsg")}d=""+d;var a=d.indexOf(".");if(a>-1&&(d.length-a-1)>4){return GradebookUtil.getMessage("tooManyDecimalPlacesErrorMsg")}else{return null}}};Gradebook.CompleteIncompleteSchema=Class.create();Gradebook.CompleteIncompleteSchema.prototype={initialize:function(b,a){this.model=a;Object.extend(this,b)},getGradeDistribution:function(a,d,c){var e=new Array();var b=new Array();b.count=c.qtyNull;b.text="Incomplete";e.push(b);b=new Array();b.count=a.length;b.text="Complete";e.push(b);e.reverse();return e},getCellValue:function(a){return this.getDisplayValue(a.getTextValue(),a.getPointsPossible())},getEditValue:function(a){return a.getValue()},getSortValue:function(b){var a=b.getTextValue().toUpperCase();if(a=="-"){return"-"}else{return b.getValue()}},getDisplayValue:function(b,a){if(b!="-"&&b.length>0){return'<img border="0" width="16" height="16" src="/images/ci/icons/checkmark_ia.gif" alt="'+GradebookUtil.getMessage("completedMsg")+'">'}else{return"-"}},getRawValue:function(a,b){return a},validate:function(b,a){if(b==""||b=="0"||b=="-"){return null}if(!GradebookUtil.isValidFloat(b)){return GradebookUtil.getMessage("invalidNumberErrorMsg")}else{return null}}};Gradebook.LetterSchema=Class.create();Gradebook.LetterSchema.prototype={initialize:function(b,a){this.model=a;Object.extend(this,b)},getGradeDistribution:function(j,h,d){var g=new Array();var b=new Array();this.symbols.each(function(k){var i=new Array();i.count=0;i.text=k.sym;b[k.sym]=g.length;g.push(i)});for(var c=0,f=j.length;c<f;c++){var a=this.getDisplayValue(j[c],h);var e=b[a];if(e!=undefined){g[e].count++}}return g},getCellValue:function(a){return this.getDisplayValue(a.getValue(),a.getPointsPossible())},getEditValue:function(a){return this.getCellValue(a)},getSortValue:function(a){return a.getValue()},getDisplayValue:function(d,b){if(parseFloat(b)==0||d=="-"||d.length==0){return d}var c=parseFloat(d)/parseFloat(b)*100;c=c.toFixed(2);if(!parseFloat(c)&&c!=0){var a;d=d.toUpperCase();this.symbols.each(function(f){if(d==f.sym.toUpperCase()){a=f.sym;throw $break}});if(a){return a}else{return d}}var e=d;this.symbols.each(function(f){if(c>=f.lb&&c<=f.ub){e=f.sym;throw $break}});return e},getRawValue:function(a,c){var b=(c.points)?c.points:100;a=""+a;a=a.replace("%","");var d=a.toUpperCase();var d;this.symbols.each(function(e){if(d==e.sym.toUpperCase()){d=(parseFloat(e.abs)/100)*b;throw $break}});return d},validate:function(c,a){if(c==""||c=="0"||c=="-"){return null}if(GradebookUtil.isValidFloat(c)){return null}var b=GradebookUtil.getMessage("invalidLetterErrorMsg");c=c.toUpperCase();this.symbols.each(function(d){if(c==d.sym.toUpperCase()||(a&&d.sym.toUpperCase().startsWith(c))){b=null;throw $break}});return b}};Gradebook.CustomView=Class.create();Gradebook.CustomView.prototype={initialize:function(b,a){this.model=a;Object.extend(this,b)},evaluate:function(){try{if(this.definition){var ext=eval("({"+this.definition+"})");Object.extend(this,ext);this.definition=null}this.userIds=new Array();this.colIds=new Array();this.aliasMap=new Array();for(var i=0,len=this.aliases.length;i<len;i++){this.aliasMap[this.aliases[i].key]=this.aliases[i].val}if(this.formula){this._evaluateAdvanced()}else{this._evaluateBasic()}this._computeDisplayItems();return true}catch(e){alert(this.model.getMessage("custViewRenderErrorMsg"));return false}},usesGroups:function(){for(var b=0,a=this.aliases.length;b<a;b++){if(this.aliases[b].key.startsWith("gr")){return true}}return false},getUserIds:function(){return this.userIds},getDisplayItemIds:function(){return this.colIds},_computeDisplayItems:function(){if(this.display.ids){this.display.unAliasedIds=new Array();for(var c=0,a=this.display.ids.length;c<a;c++){var e=this.aliasMap[this.display.ids[c]];if(e==undefined){throw"missing alias"}this.display.unAliasedIds.push(e)}}var b=this.model.getColDefs(false,this.display.showhidden);var d=this.display.items.toUpperCase();if(d=="BYITEM"){this.colIds=this._getItemsById()}else{if(d=="INCRI"){this.colIds=this._getItemsInCriteria()}else{if(d=="BYCAT"){this.colIds=this._getItemsByCategoryId(b)}else{if(d=="BYGP"){this.colIds=this._getItemsByGradingPeriodId(b)}else{if(d=="ALLITEM"){this.colIds=this._getAllItems(b)}else{if(d=="IVS"){this.colIds=this._getItemsByVisibilityToStudents(b,true)}else{if(d=="INVS"){this.colIds=this._getItemsByVisibilityToStudents(b,false)}else{if(d=="NOITEM"){this.colIds=new Array()}}}}}}}}},_getItemsById:function(){return this.display.unAliasedIds},_getItemsInCriteria:function(){var b=new Array();for(var c=0,a=this.aliases.length;c<a;c++){if(this.aliases[c].key.startsWith("I_")){b.push(this.aliases[c].val)}}return b},_getItemsByCategoryId:function(c){var b=new Array();for(var d=0,a=c.length;d<a;d++){if(this.display.unAliasedIds.indexOf(c[d].catid)!=-1){b.push(c[d].id)}}return b},_getItemsByGradingPeriodId:function(c){var b=new Array();for(var d=0,a=c.length;d<a;d++){if(this.display.unAliasedIds.indexOf(c[d].gpid)!=-1){b.push(c[d].id)}}return b},_getItemsByVisibilityToStudents:function(c,e){var b=new Array();for(var d=0,a=c.length;d<a;d++){if(c[d].vis==e){b.push(c[d].id)}}return b},_getAllItems:function(c){var b=new Array();for(var d=0,a=c.length;d<a;d++){b.push(c[d].id)}return b},_evaluateBasic:function(){if(this.students.userIds&&this.students.userIds[0]!="all"){var e=this.students.userIds;for(var d=0,a=e.length;d<a;d++){var f=this.aliasMap[e[d]];if(f==undefined){throw"missing alias"}this.userIds.push(f)}}else{var b=this.students.showstuhidden;var c=this.model.getStudents(b);for(var d=0,a=c.length;d<a;d++){this.userIds.push(c[d].id)}}},_evaluateAdvanced:function(){if(!this.postFixFormula){this.postFixFormula=this.infix2postfix(this.formula)}if(!this.criteriaMap){this.criteriaMap=new Array();for(var b=0,a=this.criteria.length;b<a;b++){this.criteriaMap[this.criteria[b].fid]=b}}var c=this.model.rows;for(var b=0,a=c.length;b<a;b++){if(this._evaluateFormulaForRow(c[b])){this.userIds.push(c[b][0].getUserId())}}},_evaluateFormulaForRow:function(h){if(this.postFixFormula.length==1){return this._evalCriteria(this.postFixFormula[0],h)}var f=new Array();for(var d=0,e=this.postFixFormula.length;d<e;d++){var g=this.postFixFormula[d];switch(g){case"AND":case"OR":if(f.length<2){throw (this.model.getMessage("custViewStackEmptyMsg")+g)}var j=f.pop();var a=f.pop();var c=a;if(typeof(a)=="string"){c=this._evalCriteria(a,h)}var b=j;if(typeof(j)=="string"){b=this._evalCriteria(j,h)}if(g=="AND"){f.push((c&&b))}else{if(g=="OR"){f.push((c||b))}}break;default:f.push(g);break}}if(f.length!=1){throw this.model.getMessage("custViewUnableToEvaluateMsg")}else{return f.pop()}},_getAliasOrId:function(a){if(a.startsWith("I_")||a.startsWith("c_")||a.startsWith("gp_")||a.startsWith("gr_")||a.startsWith("st_")){return this.aliasMap[a]}else{return a}},_evalCriteria:function(g,f){var a=this.criteria[this.criteriaMap[g]];var d=this._getAliasOrId(a.cid);if(d==undefined){throw"missing alias"}var b=this.model.colDefMap;var h=b[d];if(d=="SV"||d=="GM"){h=0}if(h==undefined){throw"missing alias"}var e=f[h];var c=this._getEvalCriteriaFunc(a);return c(a,e)},_evalAvailableCriteria:function(a,c){var b=(c.isAvailable())?"A":"U";return a.value==b},_evalStatusCriteria:function(a,b){if(a.value=="IP"){return b.attemptInProgress()}else{if(a.value=="NG"){return b.needsGrading()}else{if(a.value=="NU"){return b.getSortValue()=="-"}else{if(a.value=="X"){return b.isExempt()}}}}},_evalStudentVisibleCriteria:function(a,c){var b=(c.isHidden())?"H":"V";return a.value==b},_evalGroupMembershipCriteria:function(d,a){var j=(d.cond=="eq")?false:true;var h=d.value.split(",");for(var e=0,g=h.length;e<g;e++){var c=this.aliasMap[h[e]];if(c==undefined){throw"missing alias"}var f=a.getUserId();var b=this._userIsInGroup(f,c);j=((d.cond=="eq")?j||b:j&&!b)}return j},_evalLastAccessedCriteria:function(a,d){var c=d.getSortValue();if(a.cond=="eq"){var b=1000*60*60*24;var f=parseInt(c/b);var e=parseInt(a.value/b);return(f==e)}else{if(a.cond=="be"){return(c<a.value)}else{if(a.cond=="af"){return(c>a.value)}}}},_defaultEvalCriteria:function(b,f){var e=f.getSortValue();if(f.attemptInProgress()||f.needsGrading()||(e=="-")||f.isExempt()){return false}var c=b.cond;var d=f.colDef.getRawValue(b.value);if(this._isNumber(e)&&this._isNumber(d)){var h=this._toNumber(e);var g=this._toNumber(d);var a=(b.value2!=undefined)?this._toNumber(f.colDef.getRawValue(b.value2)):0;if(c=="eq"){return(h==g)}else{if(c=="neq"){return(h!=g)}else{if(c=="gt"){return(h>g)}else{if(c=="lt"){return(h<g)}else{if(c=="le"){return(h<=g)}else{if(c=="ge"){return(h>=g)}else{if(c=="bet"){return((g<=h)&&(h<=a))}}}}}}}}else{if(typeof(e)=="string"&&typeof(d)=="string"){e=e.toUpperCase();d=d.toUpperCase();if(c=="eq"){return(e==d)}else{if(c=="neq"){return(e!=d)}else{if(c=="bw"){return(e.startsWith(d))}else{if(c=="con"){return(e.indexOf(d)!=-1)}}}}}else{throw (this.model.getMessage("custViewDataTypeMismatchMsg")+" "+b.fid)}}},_getEvalCriteriaFunc:function(a){if(!this.evalCriteriaFuncMap){this.evalCriteriaFuncMap=new Array();this.evalCriteriaFuncMap.AV=this._evalAvailableCriteria.bind(this);this.evalCriteriaFuncMap.SV=this._evalStudentVisibleCriteria.bind(this);this.evalCriteriaFuncMap.LA=this._evalLastAccessedCriteria.bind(this);this.evalCriteriaFuncMap.GM=this._evalGroupMembershipCriteria.bind(this)}var b=this.evalCriteriaFuncMap[a.cid];if(!b){if(a.cond=="se"){b=this._evalStatusCriteria.bind(this)}else{b=this._defaultEvalCriteria.bind(this)}}return b},_userIsInGroup:function(e,d){e=Number(e);var b=this.model.groups;for(var c=0,a=b.length;c<a;c++){if(b[c].id==d){return(b[c].uids.indexOf(e)!=-1)}}return false},getValidationError:function(c,a){try{var b=this.infix2postfix(c,a);return null}catch(d){return d}},infix2postfix:function(h,b){var e=h;e=e.gsub(/\(/," ( ");e=e.gsub(/\)/," ) ");var k=$w(e);var j=new Array();var c=new Array();for(var d=0,g=k.length;d<g;d++){var l=k[d].toUpperCase();switch(l){case"AND":case"OR":while(this._isOperator(j[j.length-1])){c.push(j.pop())}j.push(l.toUpperCase());break;case"(":j.push(l);break;case")":foundStart=false;while(j.length>0){l=j.pop();if(l=="("){foundStart=true;break}else{c.push(l)}}if(j.length==0&&!foundStart){throw (this.model.getMessage("custViewMismatchedParensMsg")+" "+this.name)}break;default:if(b&&b.indexOf(l)==-1){throw this.model.getMessage("criteriaNotFoundMsg")}c.push(l);break}}while(j.length>0){l=j.pop();if(l=="("){throw (this.model.getMessage("custViewMismatchedParensMsg")+" "+this.name)}c.push(l)}return c},_isOperator:function(a){return(a=="OR"||a=="AND")},_isNumber:function(a){return(isNaN(new Number(a))?false:true)},_toNumber:function(a){if(typeof(a)=="number"){return a}else{var b=new Number(a);return b.valueOf()}}};Gradebook.GridRowIterator=Class.create();Gradebook.GridRowIterator.prototype={initialize:function(a,c,b){this.dataArray=a;this.orderMap=c;this.currentIndex=b},hasNext:function(){return this.currentIndex<this.orderMap.length},next:function(){if(this.currentIndex>=this.orderMap.length){GradebookUtil.error("GridRowIterator out of data. length = "+this.orderMap.length);return null}return this.dataArray[this.orderMap[this.currentIndex++]]}};Gradebook.numberComparator=function(d,c){return d-c};var NumberFormatter={needToConvert:false,getDisplayFloat:function(a){if(!NumberFormatter.needToConvert){return a}a=""+a;return a.replace(".",",")},getDotFloat:function(a){if(!NumberFormatter.needToConvert){return a}a=""+a;return a.replace(",",".")},parseLocaleFloat:function(b){if(!b){return Number.NaN}var a=NumberFormatter.getDotFloat(b);return parseFloat(a)}};
