var Gradebook={Version:"1.0.0",prototypeVersion:parseFloat(Prototype.Version.split(".")[0]+"."+Prototype.Version.split(".")[1]),getModel:function(){try{if(window.gbModel){return window.gbModel}if(parent.gbModel){return parent.gbModel}return parent.parent.gbModel}catch(a){return null}},clearModel:function(){parent.gbModel=null}};Gradebook.Grid=Class.create();Gradebook.Grid.prototype={initialize:function(d,a,c,b){this.options={scrollerBorderRight:"1px solid #ababab",sortBlankImg:"images/blank.gif",sortAscendImg:"/images/ci/icons/sort_on_up.gif",sortDescendImg:"/images/ci/icons/sort_on.gif",topArrowLImg:"images/toparrowL.gif",topArrowRImg:"images/toparrowR.gif",botArrowLImg:"images/botarrowL.gif",botArrowRImg:"images/botarrowR.gif",numFrozenColumns:0,accessibleMode:false};Object.extend(this.options,c||{});this.tableId=d;this.table=$(d);this.currentSelectedCell=null;if(b){this.model=b;this.model.removeModelListeners();this.model.gradebookService=a}else{this.model=new Gradebook.GridModel(a)}this.model.addModelListener(this);this.initClearAttemptsFlyOut();if(this.model.getNumColDefs()==0){this.model.requestLoadData()}else{this.model.requestUpdateData()}this.moveToRoot("gradeCM");this.moveToRoot("gradeHeaderCM");this.moveToRoot("studentInfoHeaderCM");this.moveToRoot("studentInfoCM")},moveToRoot:function(c){var a=document.getElementsByTagName("body")[0];var d=$(c);d.remove();a.appendChild(d)},modelChanged:function(){$("loadStatusMsg").update(GradebookUtil.getMessage("creatingGridMsg"));this.model.removeModelListeners();setTimeout(this.createView.bind(this),50)},modelError:function(a,b){model=null;parent.gbModel=null;if(b&&!b.startsWith('{"dataFormat":')){document.write(b);document.close()}else{$("loadstatus").hide();$("loadingGridErrorMsg").update(GradebookUtil.getMessage("errorParsingDataMsg"));$("errorLoadingGrid").show();if(a){if(a.name&&a.message){$("loadingGridError").update(a.name+": "+a.message)}else{$("loadingGridError").update(a)}}}},initClearAttemptsFlyOut:function(){var a=$("clearAttemptsFlyOut");Event.observe(a,"click",function(b){Gradebook.doNotCloseAttemptsForm=true});Event.observe($("dp_bbDateTimePicker_start_date"),"click",function(b){$("clearAttemptsOptionRange").checked=true});Event.observe($("dp_bbDateTimePicker_end_date"),"click",function(b){$("clearAttemptsOptionRange").checked=true});Event.observe($("dp_bbDateTimePicker_start_date"),"change",function(b){$("clearAttemptsOptionRange").checked=true});Event.observe($("dp_bbDateTimePicker_end_date"),"change",function(b){$("clearAttemptsOptionRange").checked=true});Event.observe("selectOption","change",function(b){$("clearAttemptsOptionSelect").checked=true});Gradebook.clearAttemptsFormDefault=new Object();Gradebook.clearAttemptsFormDefault.defaultSelect=$("selectOption").value;Gradebook.clearAttemptsFormDefault.defaultStartDate=$("dp_bbDateTimePicker_start_date").value;Gradebook.clearAttemptsFormDefault.defaultEndDate=$("dp_bbDateTimePicker_end_date").value;Gradebook.clearAttemptsFormDefault.defaultStartDateHidden=$("bbDateTimePickerstart").value;Gradebook.clearAttemptsFormDefault.defaultEndDateHidden=$("bbDateTimePickerend").value;Event.observe("clearAttemptsFlyOutCancel","click",function(b){$("clearAttemptsFlyOut").style.display="none"})},createView:function(){this.options.numFrozenColumns=model.getNumFrozenColumns();this.modelSortIndex=this.model.getSortIndex();this.sortDir=this.model.getSortDir();this._initializeHTML();this.viewPort=new Gradebook.GridViewPort(this.table,this.model,this.options,this);this.model.addModelListener(this.viewPort);if(this.options.onLoadComplete){this.options.onLoadComplete()}this.viewPort.refreshContentsH();this._setAccessibilityHeaders();this.updateSortImage();this.restoreFocus()},setAccessibleViewportSize:function(){var c=$(this.tableId+"_container");var d=20;if(this.table.rows.length>0){d=this.table.rows[this.table.rows.length-1].offsetHeight+1}var b=Math.max(this.options.tableHeight,((this.model.getMinimumRows()+1)*d+10));b=Math.min(b,this.table.offsetHeight+19);var a=Math.min(this.options.tableWidth,this.table.offsetWidth+19);c.style.height=b+"px";c.style.width=a+"px";c.style.overflow="auto"},_initializeHTML:function(){this._sizeHTMLTable();this.table.insert({before:"<div id='"+this.tableId+"_container' style='position:relative;'></div>"});this.table.previousSibling.appendChild(this.table);if(this.options.accessibleMode){this.setAccessibleViewportSize();return}this.table.insert({before:"<div id='"+this.tableId+"_viewport'></div>"});this.table.previousSibling.appendChild(this.table);var d=$(this.tableId+"_viewport");d.style.height=(this.table.offsetHeight)+"px";d.style.overflow="hidden";var b=$(this.table.id+"_header");if(b){var e=b.rows[0].cells.length;for(var i=0;i<e;i++){new Gradebook.CellController(b.rows[0].cells[i],this,0,i,true)}}var g=this.table.rows.length;for(var f=0;f<g;f++){var h=this.table.rows[0].cells.length;for(var i=0;i<h;i++){var a=this.table.rows[f].cells[i];new Gradebook.CellController(a,this,f,i,false)}}if(document.onClickHandler){Event.stopObserving(document,"click",document.onClickHandler)}document.onClickHandler=this.onDocumentClickHandler.bindAsEventListener(this);Event.observe(document,"click",document.onClickHandler);if(document.onKeydownHandler){Event.stopObserving(document,"keydown",document.onKeydownHandler)}document.onKeydownHandler=this.onDocumentKeyDownHandler.bindAsEventListener(this);Event.observe(document,"keydown",document.onKeydownHandler)},unload:function(){Gradebook.CellController.prototype.removeAllSavingDivs();var f=this.table.rows.length;for(var e=0;e<f;e++){var g=this.table.rows[0].cells.length;for(var h=0;h<g;h++){var a=this.table.rows[e].cells[h];if(a.controller){a.controller.unload()}}}var b=$(this.table.id+"_header");if(b){var d=b.rows[0].cells.length;for(var h=0;h<d;h++){var a=b.rows[0].cells[h];if(a.controller){a.controller.unload()}}}if(this.viewPort){this.viewPort.unload()}this.model.removeModelListeners();this.table=null;this.model=null;this.viewPort=null;this.options=null;this.sortCell=null},_sizeHTMLTable:function(){var d=this.table;var l=$(this.table.id+"_header");var g=0;var b=0;var n=this.options.numFrozenColumns;if(n==0){for(var e=0;e<d.rows.length;e++){d.rows[e].deleteCell(1);l.rows[e].deleteCell(1)}$("selectedRowMsg").style.display="none"}else{$("selectedRowMsg").style.display="inline"}if(this.options.accessibleMode){g=this.model.getNumRows();b=this.model.getNumColDefs()}else{var o=this.table.rows[this.table.rows.length-1].cells[1];o.height=o.offsetHeight;g=parseInt(this.options.tableHeight/o.offsetHeight);if(g<(this.model.getMinimumRows()+1)){g=(this.model.getMinimumRows()+1)}b=parseInt(this.options.tableWidth/o.offsetWidth)}if(this.model.getNumRows()<=g){g=this.model.getNumRows()+1;if(this.model.getNumRows()==0){g=0}}if(n+1>=b){n=b-1;this.options.numFrozenColumns=n}for(var e=0;e<n-1;e++){this._cloneColumn(1)}var a=b-n-1;for(var e=0;e<a;e++){this._cloneColumn(n+1)}var k=this.table.rows[0].cells[0].offsetWidth;var c=this.table.offsetWidth;this.avgColWidth=(c-k)/b;var m=(n*this.avgColWidth)+k;$("selectedRows").style.width=this.isIE?m+"px":m-2+"px";var h=g-d.rows.length;if(l){h--}var f=d.rows[this.table.rows.length-1];for(var e=0;e<h;e++){d.tBodies[0].appendChild(f.cloneNode(true))}while(d.rows.length>g){if(d.rows.length>0){d.deleteRow(d.rows.length-1)}}var j=d.rows;while(d.rows.length>0&&d.rows[0].cells.length-1>this.model.getNumColDefs()){for(var e=0;e<j.length;e++){if(j[e].cells.length>1){j[e].deleteCell(-1)}}}while(l&&l.rows[0].cells.length-1>this.model.getNumColDefs()){l.rows[0].deleteCell(-1)}},_cloneColumn:function(c){var e=this.table;for(var d=0;d<e.rows.length;d++){var a=e.rows[d].cells[c];var f=a.cloneNode(true);e.rows[d].insertBefore(f,a)}var b=$(this.table.id+"_header");if(b){var e=b;for(var d=0;d<e.rows.length;d++){var a=e.rows[d].cells[c];var f=a.cloneNode(true);e.rows[d].insertBefore(f,a)}}},_setAccessibilityHeaders:function(){if(!this.options.accessibleMode){return}var e=this.table;var d=e.rows[0];for(var b=1;b<d.cells.length;b++){var a=d.cells[b];a.abbr=a.controller.getGridCell().getName()}e.rows[0].cells[0].abbr=" ";var c=this.getAbbrColIndexs();if(e.rows.length>1&&e.rows[1].cells.length>1){for(var b=1;b<e.rows.length;b++){c.each(function(g){var f=e.rows[b].cells[g+1];f.abbr=f.controller.getGridCell().getValue();f.scope="row"})}}},getAbbrColIndexs:function(){if(!this.abbrColIndexs){this.abbrColIndexs=new Array();var b=this.model.getVisibleColDefIndex("LN");var a=this.model.getVisibleColDefIndex("FN");var c=this.model.getVisibleColDefIndex("UN");if(b!=-1&&a!=-1){this.abbrColIndexs.push(b);this.abbrColIndexs.push(a)}else{if(c!=-1){this.abbrColIndexs.push(c)}else{this.abbrColIndexs.push(0)}}}return this.abbrColIndexs},onDocumentClickHandler:function(a){if(document.ignoreOnClick){return}Gradebook.CellController.prototype.closePopupsAndRestoreFocus(a)},onDocumentKeyDownHandler:function(b){GradebookUtil.debug("onDocumentKeyDownHandler keyCode = "+b.keyCode);if(!Gradebook.CellController.prototype.tableHasFocus){return}var d=b.keyCode;var a=this.viewPort.getNumVisibleRows();var c=0;var e=0;switch(d){case (Event.KEY_LEFT):e=page.util.isRTL()?1:-1;break;case (Event.KEY_RIGHT):e=page.util.isRTL()?-1:1;break;case (Event.KEY_UP):c=-1;break;case (Event.KEY_DOWN):c=1;break;case (33):if(!this.options.accessibleMode){c=-a}break;case (34):if(!this.options.accessibleMode){c=a}break;case (Event.KEY_TAB):if(!Gradebook.CellController.currentSelectedCell||!Element.descendantOf(b.element(),Gradebook.CellController.currentSelectedCell.controller.htmlCell)){break}if(b.shiftKey){if(!b.element().hasClassName("cmimg")&&!this.isFirstCell()){e=-1}break}else{if(!this.isLastCell()&&(b.element().hasClassName("cmimg")||this.isCurrentCellWithoutMenu())){e=1}}break}if(c==0&&e==0){return}else{Event.stop(b);this.selectRelativeCell(c,e);Gradebook.CellController.prototype.closePopups(b)}},isLastCell:function(){if(Gradebook.CellController.currentSelectedCell==null){return false}var b=Gradebook.CellController.currentSelectedCell.controller.col;var a=Gradebook.CellController.currentSelectedCell.controller.row+1;return(b>=this.viewPort.numVisibleCols)&&(a>=this.viewPort.numVisibleRows)&&((this.viewPort.lastRowPos+this.viewPort.numVisibleRows)==this.model.getNumRows())&&((this.viewPort.colOffset+this.viewPort.numVisibleCols)==this.model.getNumColDefs())},isFirstCell:function(){if(Gradebook.CellController.currentSelectedCell==null){return false}return(Gradebook.CellController.currentSelectedCell.controller.col==1&&Gradebook.CellController.currentSelectedCell.controller.row==0&&(!this.viewPort.scrollerDiv||this.viewPort.scrollerDiv.scrollTop==0))},isCurrentCellWithoutMenu:function(){if(Gradebook.CellController.currentSelectedCell==null){return false}var a=Gradebook.CellController.currentSelectedCell.controller.getGridCell();if(!a){return true}return a.isGrade()&&!a.canEdit()},selectRelativeCell:function(e,i){var b=this.viewPort.getNumVisibleRows();var a=this.viewPort.getNumVisibleCols();var g=this.model.getNumRows();var c=this.model.getNumColDefs();var h=this.currentCellController;if(Gradebook.CellController.currentSelectedCell!=null){h=Gradebook.CellController.currentSelectedCell.controller}var f=h.row;var j=h.col-1;var d=100;f+=e;if(f<0||f>=b){f-=e;d=500;if(this.viewPort.scrollRows(e)==false){if(e<0){if(j==0){return}e=g-b;f=b-1;j-=1}else{e=b-g;f=0;if(j<a-1){j+=1}else{this.viewPort.scrollCols(1)}}this.viewPort.scrollRows(e)}}j+=i;if((j<this.options.numFrozenColumns&&i<0)||j>=a){j-=i;d=500;if(this.viewPort.scrollCols(i)==false){if(i<0){if(j>0){j+=i}else{if(f==0){return}i=c-a;j=a-1;f-=1}}else{i=a-c;j=0;if(f<b-1){f+=1}else{this.viewPort.scrollRows(1)}}this.viewPort.scrollCols(i)}}this.currentCellController=this.table.rows[f].cells[j+1].controller;setTimeout(this.selectCell.bind(this),d)},selectCell:function(){this.currentCellController.selectCell()},sortColumn:function(b,a){if(b!=this.sortCell){this.sortDir="ASC";if(this.sortCell){this.sortCell.setSortImage("NO_SORT")}}else{this.sortDir=(this.sortDir=="ASC")?"DESC":"ASC"}if(a){this.sortDir=a}this.sortCell=b;this.sortCell.setSortImage(this.sortDir);this.modelSortIndex=this.viewPort.toModelIndex(this.sortCell.col-1);this.model.sort(this.modelSortIndex,this.sortDir);this.viewPort.moveScroll(0);this.viewPort.refreshContents(0)},updateSortImage:function(){if(!this.viewPort){return}if(this.sortCell){this.sortCell.setSortImage("NO_SORT")}var b=this.viewPort.toViewIndex(this.modelSortIndex);if(b<0){this.sortCell=null}else{var a=$(this.table.id+"_header");if(!a){return}this.sortCell=a.rows[0].cells[b+1].controller;this.sortCell.setSortImage(this.sortDir)}},restoreFocus:function(){if(!this.options||!this.options.accessibleMode||!Gradebook.getModel().lastFocusedRow||!Gradebook.getModel().lastFocusedCol){return}if(GradebookUtil.isIE()){setTimeout(this.doRestoreFocus.bind(this),0)}else{this.doRestoreFocus()}},doRestoreFocus:function(){var b=Gradebook.getModel().lastFocusedRow;var a=Gradebook.getModel().lastFocusedCol;this.table.rows[b].cells[a].controller.selectCell();Gradebook.getModel().lastFocusedRow=null;Gradebook.getModel().lastFocusedCell=null}};Gradebook.GridViewPort=Class.create();Gradebook.GridViewPort.prototype={initialize:function(d,b,a,c){this.isIE=GradebookUtil.isIE();this.isNS7=GradebookUtil.isNS7();this.table=d;this.model=b;this.options=a;this.grid=c;this.lastPixelOffset=0;this.colOffset=0;this.lastRowPos=0;this.startScrollLeft=0;this.headerTableId=this.table.id+"_header";this.headerTable=$(this.headerTableId);if(!this.headerTable){this.headerTable=this.table}this.numVisibleRows=this.table.rows.length;if(this.headerTable.rows[0]){this.numVisibleCols=this.headerTable.rows[0].cells.length-1}this.rowHeight=this.table.offsetHeight/this.numVisibleRows;this.div=this.table.parentNode;this.initScrollers()},unload:function(){this.grid=null;this.model=null;this.table=null;this.headerTable=null;this.div=null;this.scrollerDiv=null;this.heightDiv=null;this.scrollerDivH=null;this.widthDiv=null;this.options=null},modelChanged:function(){this.refreshContentsH()},getModelGridCell:function(c,a){if(this.options.accessibleMode&&c>0){c-=1}if(a>0){a-=1}if(a>=this.options.numFrozenColumns){a+=this.colOffset}var b=this.model.getRowIterators(c+this.lastRowPos,1,a);if(!b||b.length!=1||!b[0].hasNext()){GradebookUtil.error("getModelGridCell cannot get grid cell for row: "+c+" col: "+a)}return b[0].next()},getHeaderGridCell:function(a){if(a>0){a-=1}if(a>=this.options.numFrozenColumns){a+=this.colOffset}var b=this.model.getColDefIterator(a);if(!b||!b.hasNext()){GradebookUtil.error("getHeaderGridCell cannot get header cell for col: "+a)}return b.next()},getNumVisibleRows:function(){return this.numVisibleRows},getNumVisibleCols:function(){return this.numVisibleCols},populateRow:function(b,i,e){var h=this.options.numFrozenColumns;for(var c=0;c<(this.numVisibleCols);c++){var f=(c<h)?i:e;var a=f.next();var d=b.cells[c+1];if(c==0){var g=GradebookUtil.getChildElementByClassName(b.cells[0],"input","checkInput");g.checked=a.isRowChecked()}d.controller.renderHTML(a)}},refreshContents:function(c){if(this.model.getNumRows()==0){return}if(this.options.accessibleMode){this.refreshAccessibleContents();return}Gradebook.CellController.prototype.hideAllSavingDivs();var g=this.numVisibleRows;var a=this.model.getNumRows();if(c+g>a){c=a-g-1}var f=this.options.numFrozenColumns;var e=this.model.getRowIterators(c,g,0);var d=e;if(this.numVisibleCols>f){d=this.model.getRowIterators(c,g,f+this.colOffset)}for(var b=0;b<g;b++){this.populateRow(this.table.rows[b],e[b],d[b])}this.lastRowPos=c},refreshAccessibleContents:function(){var a=this.model.getNumRows();var m=this.model.getRowIterators();var d=this.table.rows[0].cells.length-1;var b=new Date().getTime();if(this.refreshRowCounter==undefined){this.refreshRowCounter=0}for(var h=this.refreshRowCounter;h<a;h++){var l=h+1;var e=this.table.rows[l];if(new Date().getTime()-b>3000){setTimeout(this.refreshAccessibleContents.bind(this),0);return}for(var f=0;f<d;f++){var c=m[h].next();var g=e.cells[f+1];if(g.controller==undefined){new Gradebook.CellController(g,this.grid,l,f+1,true)}g.controller.renderHTML(c);if(f==0){var g=e.cells[0];if(g.controller==undefined){new Gradebook.CellController(g,this.grid,l,f,true)}var k=$(g).down("input");k.checked=c.isRowChecked()}}var n=gradebook2Messages.selectUserMsg;this.grid.getAbbrColIndexs().each(function(j){var i=e.cells[j+1];n+=" "+i.controller.getGridCell().getValue()});e.cells[0].controller.checkInput.title=n;this.refreshRowCounter++}this.refreshRowCounter=null},refreshContentsH:function(){this.refreshContents(this.lastRowPos);var j=this.options.numFrozenColumns;var b=null;var h=$(this.table.id+"_header");if(h){b=h.rows[0].cells}else{b=this.table.rows[0].cells}if(!b){return}var g=this.model.getColDefIterator(0);var a=null;if(this.numVisibleCols>j){a=this.model.getColDefIterator(j+this.colOffset)}for(var c=0;c<this.numVisibleCols;c++){var e=(c<j)?g:a;var d=b[c+1];var f=e.next();if(d.controller==undefined){new Gradebook.CellController(d,this.grid,0,c+1,true)}d.controller.renderHeaderCellHTML(f)}if(!b[0].controller){new Gradebook.CellController(b[0],this.grid,0,0,true)}this.grid.updateSortImage()},visibleHeight:function(){return parseInt(GradebookUtil.getElementsComputedStyle(this.div,"height"))},toViewIndex:function(a){var b=this.options.numFrozenColumns;if(a<b){return a}var c=(a-this.colOffset);if(b<=c&&c<this.numVisibleCols){return c}else{return -1}},toModelIndex:function(c){if(c==-1){return -1}var b=this.options.numFrozenColumns;var a=(c<b)?c:(this.colOffset+c);return a},initScrollers:function(){this.createVScrollBar();this.createHScrollBar();this.lastVScrollPos=0;if(this.scrollerDivH!=null){this.lastHScrollPos=this.scrollerDivH.scrollLeft}else{this.lastHScrollPos=0}this.startScrollLeft=this.lastHScrollPos},createVScrollBar:function(){if(this.table.rows.length>=this.model.getNumRows()){return}var b=this.visibleHeight();var f=this.table.rows.length;this.rowHeight=parseInt(b/f,10);b=this.rowHeight*f;var d=this.rowHeight*this.model.getNumRows();this.scrollerDiv=document.createElement("div");var e=this.scrollerDiv.style;e.borderRight=this.options.scrollerBorderRight;e.position="absolute";var a=this.isIE?this.table.offsetWidth-2+"px":this.isNS7?this.table.offsetWidth-15+"px":this.table.offsetWidth-3+"px";if(document.documentElement.dir=="rtl"){e.right=a}else{e.left=a}e.top="0px";e.width=this.isNS7?"30px":"19px";e.height=b+"px";e.overflow="scroll";this.heightDiv=document.createElement("div");this.heightDiv.style.width="1px";this.heightDiv.style.height=parseInt(d)+"px";this.scrollerDiv.appendChild(this.heightDiv);Event.observe(this.scrollerDiv,"scroll",this.handleVScroll.bindAsEventListener(this));GradebookUtil.debug("createVScrollBar - this.rowHeight = "+this.rowHeight);GradebookUtil.debug("createVScrollBar - visibleHeight = "+b);GradebookUtil.debug("createVScrollBar - numVisibleRows = "+this.numVisibleRows);GradebookUtil.debug("createVScrollBar - this.model.getNumRows() = "+this.model.getNumRows());GradebookUtil.debug("createVScrollBar - this.heightDiv.style.height = "+this.heightDiv.style.height);this.table.parentNode.parentNode.insertBefore(this.scrollerDiv,this.table.parentNode.nextSibling);var c=this.isIE?"mousewheel":"DOMMouseScroll";Event.observe(this.table,c,function(g){if(g.wheelDelta>=0||g.detail<0){this.scrollerDiv.scrollTop-=(2*this.rowHeight)}else{this.scrollerDiv.scrollTop+=(2*this.rowHeight)}this.handleVScroll()}.bindAsEventListener(this),false)},createHScrollBar:function(){if(!this.headerTable.rows[0]||this.headerTable.rows[0].cells.length>this.model.getNumColDefs()){return}var a=this.model.getNumColDefs();var g=this.numVisibleCols;var e=this.options.numFrozenColumns;this.maxColOffset=a-(g-e)-1;var b=this.isIE?this.table.offsetHeight-23:this.isNS7?this.table.offsetHeight-16:this.table.offsetHeight-3;var f=this.headerTable.rows[0].cells[0].offsetWidth;this.avgColWidth=this.headerTable.rows[0].cells[1].offsetWidth;var d=(e*this.avgColWidth)+f;visibleWidth=(g-e)*this.avgColWidth;this.scrollerDivH=document.createElement("div");var c=this.scrollerDivH.style;c.position="absolute";if(document.documentElement.dir=="rtl"){c.right=d+"px"}else{c.left=d+"px"}c.top=b+"px";c.height=this.isIE?"40px":this.isNS7?"30px":"19px";c.width=visibleWidth+"px";c.overflow="auto";this.widthDiv=document.createElement("div");this.widthDiv.style.height="1px";this.widthDiv.style.direction="ltr";this.widthDiv.style.width=(this.avgColWidth*(a-e))+"px";this.scrollerDivH.appendChild(this.widthDiv);Event.observe(this.scrollerDivH,"scroll",this.handleHScroll.bindAsEventListener(this));if(this.scrollerDiv){this.table.parentNode.parentNode.insertBefore(this.scrollerDivH,this.scrollerDiv.nextSibling)}else{this.table.parentNode.parentNode.insertBefore(this.scrollerDivH,this.table.parentNode.nextSibling)}},rowToPixel:function(a){return(a/this.model.getNumRows())*this.heightDiv.offsetHeight},moveScroll:function(a){if(this.scrollerDiv){this.scrollerDiv.scrollTop=this.rowToPixel(a)}},scrollRows:function(a){if(!this.scrollerDiv){return false}if((a<0&&this.scrollerDiv.scrollTop==0)||(a>0&&this.lastRowPos==(this.model.getNumRows()-this.numVisibleRows))){return false}this.ignoreOnVscroll=true;this.scrollerDiv.scrollTop+=(a*this.rowHeight);setTimeout(this.doVScroll.bind(this),200)},handleVScroll:function(a){if(this.ignoreOnVscroll){return}this.ignoreOnVscroll=true;setTimeout(this.doVScroll.bind(this),200)},doVScroll:function(){Gradebook.CellController.prototype.onGridScroll();var a=this.scrollerDiv.scrollTop;var d=this.lastVScrollPos-this.scrollerDiv.scrollTop;if(d!=0){var c=this.scrollerDiv.scrollTop%this.rowHeight;if(c!=0){if(d<0){this.scrollerDiv.scrollTop+=(this.rowHeight-c)}else{this.scrollerDiv.scrollTop-=c}}var b=parseInt(this.scrollerDiv.scrollTop/parseInt(this.rowHeight));GradebookUtil.debug("doVScroll - incomingscrollTop = "+a+" r = "+c+" new scrollTop = "+this.scrollerDiv.scrollTop+" lastVScrollPos = "+this.lastVScrollPos+" contentOffset = "+b);this.refreshContents(b);this.lastVScrollPos=this.scrollerDiv.scrollTop}this.ignoreOnVscroll=false},handleHScroll:function(a){if(this.ignoreOnHscroll){return}this.ignoreOnHscroll=true;setTimeout(this.doHScroll.bind(this),200)},scrollCols:function(b){if(!this.scrollerDivH){return false}var a=this.model.getNumColDefs();if((b<0&&this.scrollerDivH.scrollLeft==0)||(b>0&&this.colOffset==(this.model.getNumColDefs()-this.numVisibleCols))){return false}this.ignoreOnHscroll=true;this.scrollerDivH.scrollLeft+=(b*this.avgColWidth*(page.util.isRTL()?-1:1));setTimeout(this.doHScroll.bind(this),200);return true},doHScroll:function(){Gradebook.CellController.prototype.onGridScroll();var b=this.lastHScrollPos-this.scrollerDivH.scrollLeft;if(b!=0){var a=this.scrollerDivH.scrollLeft%this.avgColWidth;if(a!=0){if(b<0){this.scrollerDivH.scrollLeft+=(this.avgColWidth-a)}else{this.scrollerDivH.scrollLeft-=a}}if(document.documentElement.dir=="rtl"){this.colOffset=parseInt((this.startScrollLeft-this.scrollerDivH.scrollLeft)/this.avgColWidth)}else{this.colOffset=parseInt(this.scrollerDivH.scrollLeft/this.avgColWidth)}this.colOffset=Math.min(this.colOffset,this.maxColOffset);this.refreshContentsH();this.lastHScrollPos=this.scrollerDivH.scrollLeft}this.ignoreOnHscroll=false}};Gradebook.CellController=Class.create();Gradebook.CellController.prototype={initialize:function(a,b,d,c,f){this.htmlCell=$(a);this.htmlCell.id=d+","+c;this.htmlCell.controller=this;this.grid=b;this.row=d;this.col=c;this.isHeaderTable=f;Gradebook.CellController.tableId=this.grid.table.id;var e=this.grid.options.accessibleMode;this.isTopLeft=(this.row==0&&this.col==0)&&f;if(e){this._accessibleInit()}else{this._nonAccessibleInit()}},_nonAccessibleInit:function(){this.viewDiv=GradebookUtil.getChildElementByClassName(this.htmlCell,"div","gbView");this.editDiv=GradebookUtil.getChildElementByClassName(this.htmlCell,"div","gbEdit");this.editInput=GradebookUtil.getChildElementByClassName(this.htmlCell,"input","editInput");this.textDiv=GradebookUtil.getChildElementByClassName(this.htmlCell,"div","gbText");this.dataDiv=GradebookUtil.getChildElementByClassName(this.htmlCell,"div","gbData");this.titleAnchor=GradebookUtil.getChildElementByClassName(this.htmlCell,"a","titleAnchor");this.contextMenuAnchor=GradebookUtil.getChildElementByClassName(this.htmlCell,"a","cmimg");this.checkInput=GradebookUtil.getChildElementByClassName(this.htmlCell,"input","checkInput");if(this.isTopLeft){Event.observe(this.checkInput,"click",this.toggleSelection.bindAsEventListener(this));GradebookViewSpreadsheet.grid.checkAllCellController=this;return}Event.observe(this.htmlCell,"mouseover",this.onMouseOver.bindAsEventListener(this));Event.observe(this.htmlCell,"mouseout",this.onMouseOut.bindAsEventListener(this));if(this.contextMenuAnchor){Event.observe(this.contextMenuAnchor,"click",this.onContextMenuClicked.bindAsEventListener(this))}if(this.row==0&&this.col!=0&&this.textDiv&&this.dataDiv){this.getGridCell=this.getHeaderGridCell;Event.observe(this.textDiv,"click",this.onHeaderClicked.bindAsEventListener(this));Event.observe(this.dataDiv,"focus",this.showHeaderInfoInTaskbar.bindAsEventListener(this));Event.observe(this.dataDiv,"mouseover",this.showHeaderInfoInTaskbar.bindAsEventListener(this));Event.observe(this.dataDiv,"mouseout",this.onHeaderMouseOut.bindAsEventListener(this));this.htmlCell.style.cursor="pointer"}else{this.getGridCell=this.getGradeGridCell;if(this.editInput){Event.observe(this.editInput,"keydown",this.onInputKeyDown.bindAsEventListener(this));Event.observe(this.editInput,"keyup",this.onInputKeyUp.bindAsEventListener(this))}if(this.checkInput){Event.observe(this.checkInput,"click",this.onCheckBoxClicked.bindAsEventListener(this))}else{Event.observe(this.htmlCell,"click",this.onClicked.bindAsEventListener(this))}if(this.titleAnchor){Event.observe(this.titleAnchor,"focus",this.onFocus.bindAsEventListener(this))}}},_accessibleInit:function(){this.checkInput=this.htmlCell.down("input");this.titleAnchor=this.htmlCell.down("a");this.contextMenuAnchor=(this.titleAnchor)?this.titleAnchor:this.htmlCell;if(this.isTopLeft){Event.observe(this.checkInput,"click",this.toggleSelection.bindAsEventListener(this));GradebookViewSpreadsheet.grid.checkAllCellController=this;return}if(this.row==0&&this.col!=0){this.dataDiv=this.titleAnchor;this.getGridCell=this.getHeaderGridCell;Event.observe(this.titleAnchor,"focus",this.showHeaderInfoInTaskbar.bindAsEventListener(this));Event.observe(this.htmlCell,"mouseover",this.showHeaderInfoInTaskbar.bindAsEventListener(this));Event.observe(this.htmlCell,"mouseout",this.onHeaderMouseOut.bindAsEventListener(this))}else{this.getGridCell=this.getGradeGridCell}if(this.checkInput){Event.observe(this.checkInput,"click",this.onCheckBoxClicked.bindAsEventListener(this))}else{if(this.getGridCell().getContextMenuInfo(this)){Event.observe(this.contextMenuAnchor,"click",this.onContextMenuClicked.bindAsEventListener(this))}else{this.titleAnchor.remove();this.titleAnchor=this.htmlCell}}},isHeaderCell:function(){return this.isHeaderTable},unload:function(){this.grid=null;this.htmlCell.controller=null;this.htmlCell=null;this.grid=null;this.viewDiv=null;this.editDiv=null;this.editInput=null;this.textDiv=null;this.dataDiv=null;this.titleAnchor=null;this.contextMenuAnchor=null;this.checkInput=null;this.getGridCell=null;this.editGridcell=null},onCheckBoxClicked:function(b){var a=this.getGridCell();a.setRowChecked(this.checkInput.checked);var c=a.userId;if(this.checkInput.checked){if(b.shiftKey&&Gradebook.CellController.prototype.lastCheckedUserId){this.grid.model.checkedRangeOfStudents(a.userId,Gradebook.CellController.prototype.lastCheckedUserId)}Gradebook.CellController.prototype.lastCheckedUserId=a.userId}else{Gradebook.CellController.prototype.lastCheckedUserId=null}this.updateNumSelectedIndicator()},toggleSelection:function(){if(this.checkInput.checked){this.onSelectAllStudents()}else{this.onSelectNoStudents()}},onSelectAllStudents:function(a){this.grid.model.checkedAllStudents();this.updateNumSelectedIndicator()},onSelectNoStudents:function(a){this.grid.model.checkedNoStudents();this.updateNumSelectedIndicator()},onSelectInvertStudents:function(a){this.grid.model.invertCheckedStudents();this.updateNumSelectedIndicator()},onSortCheckedStudents:function(a){this.grid.sortColumn(this,"DESC")},updateNumSelectedIndicator:function(){var a=this.grid.model.getCheckedStudentIds();$("rowindicator").update(a.length)},onHeaderClicked:function(a){this.grid.sortColumn(this)},setSortImage:function(a){this.htmlCell.removeClassName("sortedUp");this.htmlCell.removeClassName("sortedDown");if(a=="ASC"){this.htmlCell.addClassName("sortedUp")}else{if(a=="DESC"){this.htmlCell.addClassName("sortedDown")}}},onSortAscending:function(a){this.grid.sortColumn(this,"ASC");this.contextMenuDiv.hide()},onSortDescending:function(a){this.grid.sortColumn(this,"DESC");this.contextMenuDiv.hide()},onFocus:function(a){document.ignoreOnClick=true;window.setTimeout("document.ignoreOnClick = false",2000);this.onClicked(a)},onClicked:function(a){var b=a.target?a.target:a.srcElement;Gradebook.CellController.prototype.lastEventTarget=b;this.selectCell(b);Event.stop(a)},isSelected:function(){return(Gradebook.CellController.currentSelectedCell==this.htmlCell)},selectCell:function(b){Gradebook.CellController.prototype.tableHasFocus=true;if(this.isSelected()||this.checkInput){return}this.closePopups();this.unselectCurrentCell(true);GradebookUtil.debug("selectCell row = "+this.row+" col = "+this.col);var d=this.getGridCell();Gradebook.CellController.currentSelectedCell=this.htmlCell;var c=this.hasContextMenu();Element.addClassName(this.htmlCell,c?"cellClick":"cellClickNoCM");Element.addClassName(this.htmlCell.parentNode,"focusRowHigh");var a=$(Gradebook.CellController.tableId+"_header");if(a){Element.addClassName(a.rows[0].cells[this.col],"focusHeader")}if(!this.isEditing&&this.titleAnchor){if(!b||(b!=this.titleAnchor)){this.titleAnchor.focus()}}else{if(this.grid.options.accessibleMode){this.htmlCell.focus()}}this.setTaskbarInfo(d);if(!this.grid.options.accessibleMode){this.startEdit()}},showHeaderInfoInTaskbar:function(){var c=this.getGridCell();var b=c.getType();if(b=="student"){GradebookViewSpreadsheet.setMsgInTaskBar(c.getName())}else{var a="0";if(b=="grade"){a=NumberFormatter.getDisplayFloat(c.points)}else{a=GradebookUtil.getMessage("variesPerStudentMsg")}GradebookViewSpreadsheet.setHeaderInfoInTaskBar(c.getName(),GradebookUtil.getMessage(c.getType()+"Msg"),a)}},setTaskbarInfo:function(e){if(!e){GradebookViewSpreadsheet.clearTaskBar()}else{if(e.isGrade()){var c=e.colDef;var a="&nbsp;";var b="&nbsp;";var f="&nbsp;";var d="&nbsp;";try{if(e.canEdit()){a=GradebookUtil.getMessage((e.isOverride())?"overrideGradeMsg":"gradeMsg")}else{a=GradebookUtil.getMessage(c.getType()+"Msg")}f=c.primarySchema.name;b=NumberFormatter.getDisplayFloat(e.getPointsPossible());d=GradebookUtil.getMessage((c.vis)?"isMsg":"isNotMsg")}catch(g){}GradebookViewSpreadsheet.setTaskBar(a,b,f,d)}else{GradebookViewSpreadsheet.setTaskBar()}}},unselectCell:function(b){GradebookUtil.debug("unselectCell row = "+this.row+" col = "+this.col);Element.removeClassName(this.htmlCell,"cellClick");Element.removeClassName(this.htmlCell,"cellClickNoCM");Element.removeClassName(this.htmlCell.parentNode,"focusRowHigh");var a=$(Gradebook.CellController.tableId+"_header");if(a){Element.removeClassName(a.rows[0].cells[this.htmlCell.cellIndex],"focusHeader")}if(!b){this.setTaskbarInfo()}},unselectCurrentCell:function(c){var a=Gradebook.CellController.currentSelectedCell;if(a){var e=false;var b=a.controller;if(b){if(b.hasUncommittedChanges()){var d=b.editGridcell.validate(b.editInput.value);if(!d){e=confirm(GradebookUtil.getMessage("uncommitedchangeErrorMsg"))}else{alert(GradebookUtil.getMessage("uncommitedchangeNotSavedErrorMsg"))}}b.stopEdit(e,true);b.unselectCell(c)}Gradebook.CellController.currentSelectedCell=null}},startEdit:function(){try{this.editGridcell=this.getGridCell();if(!this.editGridcell.canEdit()||!this.isSelected()||!this.editInput){return}GradebookUtil.debug("startEdit row = "+this.row+" col = "+this.col);this.isEditing=true;this.editInput.value=this.editGridcell.getEditValue();this.viewDiv.style.display="none";this.editDiv.style.display="block";this.editInput.focus();this.editInput.select()}catch(a){}},onInputKeyDown:function(a){GradebookUtil.debug("onInputKeyDown row = "+this.row+" col = "+this.col+" keyCode = "+a.keyCode);switch(a.keyCode){case (Event.KEY_TAB):this.stopEdit(true,false);Event.stop(a);break}},onInputKeyUp:function(a){Event.stop(a);GradebookUtil.debug("onInputKeyUp row = "+this.row+" col = "+this.col+" keyCode = "+a.keyCode);switch(a.keyCode){case (Event.KEY_UP):case (Event.KEY_DOWN):case (Event.KEY_LEFT):case (Event.KEY_RIGHT):a.cancelBubble=false;break;case (Event.KEY_RETURN):try{Gradebook.noResize=true;if(this.hasUncommittedChanges()&&this.stopEdit(true)){this.grid.selectRelativeCell(1,0)}}finally{Gradebook.noResize=false}break;case (Event.KEY_ESC):this.stopEdit(false);break;default:var b=this.editGridcell.validate(this.editInput.value,true);if(b){this.showValidationError(b)}else{this.hideValidationError()}}},stopEdit:function(f,d){if(!this.isEditing){return}GradebookUtil.debug("stopEdit row = "+this.row+" col = "+this.col+" commit = "+f);if(f&&this.hasUncommittedChanges()){var a=this.editInput.value;var c=this.editGridcell.validate(a);if(c){this.showValidationError(c);this.editInput.select();this.editInput.focus();return false}var b=true;if(a==""){a="-"}if(a=="-"){if(this.editGridcell.v=="-"){b=false}else{var e=(this.editGridcell.isOverride()?"confirmRevertMsg":"confirmNullMsg");b=confirm(GradebookUtil.getMessage(e))}}if(b){this.editGridcell.update(a);this.addSavingDiv()}}this.hideValidationError();this.isEditing=false;this.editGridcell=null;this.viewDiv.style.display="block";if(!d){this.titleAnchor.focus()}this.editDiv.style.display="none";return true},hasUncommittedChanges:function(a){return(this.isEditing&&this.editInput.value!=this.editGridcell.getEditValue())},renderHTML:function(d){var b;var a;var c=d.getCellValue();if(d.savingDiv){this.showSavingDiv(d.savingDiv);d.savingDiv.htmlCell=this.htmlCell}else{if(d.isExempt()){b=gridImages.exemptGrade;a=d.getAltValue()}else{if(d.needsGrading()){b=gridImages.needsGrading;if(d.isOverride()&&c&&c!="-"){b=c+"&nbsp;"+b}}else{if(d.attemptInProgress()){b=gridImages.attemptInProgress;if(d.isOverride()&&c&&c!="-"){b=c+"&nbsp;"+b}}else{if(d.isComplete()){b=d.getCellValue();a=GradebookUtil.getMessage("completedMsg")}else{if(this.grid.options.accessibleMode&&d.isGrade()&&!d.isGraded()){b=gridImages.noGrade;a=d.getAltValue()}else{b=d.getCellValue();a=d.getAltValue()}}}}}}if(b!=undefined){if(this.col==1&&!d.isAvailable()){b=gridImages.studentUnavailable+" "+b}if(d.isModified()){b=gridImages.gradeModified+" "+b}if(b.blank()){b="&nbsp;"}if(this.titleAnchor){this.titleAnchor.innerHTML=b;this.titleAnchor.title=a}}},renderHeaderCellHTML:function(b){var a="";var c=b.name.unescapeHTML();this.dataDiv.innerHTML=c;this.dataDiv.title=this.dataDiv.innerHTML;if(!b.isVisibleToStudents()){a+=gridImages.itemNotVisible}if(b.isPublic()){a+=gridImages.externalGrade}if(b.hasError()){a+=gridImages.gradingError}a+=c;this.dataDiv.innerHTML=a},addSavingDiv:function(){var a=$("saveDiv").cloneNode(true);document.body.appendChild(a);var b=this.editGridcell;if(!b){b=this.getGridCell()}b.savingDiv=a;a.gridCell=b;a.htmlCell=this.htmlCell;if(!Gradebook.CellController.prototype.savingDivs){Gradebook.CellController.prototype.savingDivs=new Array()}Gradebook.CellController.prototype.savingDivs.push(a);this.showSavingDiv(a);setTimeout(function(){var c=a.gridCell;if(c.isUncommitted){a.timerExpired=true}else{a.style.display="none";a.parentNode.removeChild(a);c.savingDiv=null;a.htmlCell.controller.renderHTML(c)}},1000)},showSavingDiv:function(a){var b=Element.cumulativeOffset(this.htmlCell);a.style.top=b.top+"px";a.style.left=b.left+"px";if(!this.htmlCell){return}a.style.minWidth=this.htmlCell.offsetWidth+"px";a.style.minHeight=this.htmlCell.offsetHeight+"px";a.style.display="block"},hideAllSavingDivs:function(){var a=Gradebook.CellController.prototype.savingDivs;if(!a){return}for(var b=a.length-1;b>=0;b--){if(!a[b].parentNode){a.splice(b,1)}else{a[b].style.display="none"}}},removeAllSavingDivs:function(){var b=Gradebook.CellController.prototype.savingDivs;if(!b){return}for(var c=b.length-1;c>=0;c--){var a=b[c];if(a.gridCell){a.gridCell.savingDiv=null;a.gridCell=null;a.htmlCell=null}if(!b[c].parentNode){b.splice(c,1)}else{b[c].style.display="none"}}},showValidationError:function(a){var b=$("errorDiv");var c=GradebookUtil.getChildElementByClassName(b,"p","errorDiv2");c.innerHTML=a;b.style.display="block";var d=GradebookUtil._toAbsolute(this.htmlCell,false,b.offsetParent);b.style.top=d.y+this.htmlCell.offsetHeight+"px";b.style.left=d.x-1+"px";Element.addClassName(this.htmlCell,"cellError")},hideValidationError:function(){var a=$("errorDiv");a.style.display="none";Element.removeClassName(this.htmlCell,"cellError")},hasContextMenu:function(){if(this.isTopLeft){return true}else{return(this.getGridCell().getContextMenuInfo(this)!=null)}},onMouseOver:function(a){if(!this.htmlCell||this.htmlCell.className=="cellClick"){return}var b=this.hasContextMenu();Element.addClassName(this.htmlCell,b?"cellhigh":"cellhighNoCM");var c=this.htmlCell.parentNode;if(c.className!="focusRowHigh"){Element.addClassName(c,"rowhigh")}},onMouseOut:function(a){if(!this.htmlCell||this.htmlCell.className=="cellClick"){return}Element.removeClassName(this.htmlCell,"cellhigh");Element.removeClassName(this.htmlCell,"cellhighNoCM");var b=this.htmlCell.parentNode;if(b.className!="focusRowHigh"){Element.removeClassName(b,"rowhigh")}},onHeaderMouseOut:function(b){if(Gradebook.CellController.currentSelectedCell){var a=Gradebook.CellController.currentSelectedCell.controller;a.setTaskbarInfo(a.getGridCell())}else{GradebookViewSpreadsheet.clearTaskBar()}},onContextMenuClicked:function(a){GradebookUtil.debug("onContextMenuClicked");Gradebook.CellController.prototype.closePopups(a);var c=this.getGridCell();var b=c.getContextMenuInfo(this);if(b){this.setContextMenuInfo(b)}Event.stop(a)},onCloseContextMenu:function(a){Event.stop(a);if(GradebookUtil.isIE()){if(!this.isHeaderCell()){this.selectCell()}else{this.contextMenuAnchor.focus()}}else{this.contextMenuAnchor.focus()}this.contextMenuDiv.hide();$("shimDiv").hide()},onContextMenuTabPress:function(a,b){var c=a.keyCode||a.which;if((c==Event.KEY_TAB)&&(b==a.shiftKey)){this.onCloseContextMenu(a);Event.stop(a)}},onContextMenuKeyDown:function(a){var c=a.keyCode||a.which;if(c==Event.KEY_UP){var d=Event.element(a);var b=this.menuItemLinks.indexOf(d);if(b>0){this.menuItemLinks[b-1].focus()}Event.stop(a)}else{if(c==Event.KEY_DOWN){var d=Event.element(a);var b=this.menuItemLinks.indexOf(d);if(b<(this.menuItemLinks.length-1)){this.menuItemLinks[b+1].focus()}Event.stop(a)}else{if(c==Event.KEY_ESC){this.onCloseContextMenu(a);Event.stop(a)}}}},setContextMenuInfo:function(d){this.contextMenuId=d.id;var c=$(this.contextMenuId);this.contextMenuDiv=c;var i=null;var j=null;if(c.onkeydownHandler){Event.stopObserving(c,"keydown",c.onkeydownHandler)}c.onkeydownHandler=this.onContextMenuKeyDown.bindAsEventListener(this);Event.observe(c,"keydown",c.onkeydownHandler);this.menuItemLinks=new Array();var f=this.onCloseContextMenu.bindAsEventListener(this);d.items.push({id:"close_"+d.id,visible:true,onclick:f});d.items.each(function(m){var n=$(m.id);n.parentNode.style.display=(m.visible)?"block":"none";if(m.visible){this.menuItemLinks.push(n)}if(n.onclickHandler){Event.stopObserving(m.id,"click",n.onclickHandler);n.onclickHandler=null}if(m.onclick&&m.visible){n.onclickHandler=function(o){f(o);m.onclick(o);if(m.receipt){GradebookUtil.showInlineReceipt(gradebook2Messages[m.receipt])}};Event.observe(m.id,"click",n.onclickHandler)}if(!i){i=n}j=n}.bind(this));if(j.previousTABListener){Event.stopObserving(j.id,"keydown",j.previousTABListener)}var l=this.onContextMenuTabPress.bindAsEventListener(this,false);j.previousTABListener=l;Event.observe(j.id,"keydown",l);if(i.previousTABListener){Event.stopObserving(i.id,"keydown",j.previousTABListener)}var g=this.onContextMenuTabPress.bindAsEventListener(this,true);i.previousTABListener=g;Event.observe(i.id,"keydown",g);var e=Position.cumulativeOffset(this.contextMenuAnchor);if(this.grid.options.accessibleMode){var k=$("table1_accessible_container");e[0]-=k.scrollLeft;e[1]-=k.scrollTop}c.setStyle({display:"block"});var a=c.getWidth();var h=$(document.body).getWidth();if(page.util.isRTL()){e[0]=e[0]+this.contextMenuAnchor.getWidth()-a;if(e[0]<0){e[0]=0}}if(e[0]+a>h){e[0]=e[0]-a+this.contextMenuAnchor.getWidth()}var b=e[1]+this.contextMenuAnchor.getHeight();c.setStyle({left:e[0]+"px",top:b+"px"});if(GradebookUtil.isFFonMac()){GradebookUtil.shimDiv(c)}(function(){i.focus()}).defer()},addGradeComment:function(i,h){Event.stop(i);this.closePopups();GradebookViewSpreadsheet.instructorCommentsResize._reset();GradebookViewSpreadsheet.studentCommentsResize._reset();var f=GradebookUtil._toAbsolute(this.htmlCell);var e=$("submitCommentsButton");if(e.onclickHandler){Event.stopObserving(e,"click",e.onclickHandler)}e.onclickHandler=this.onSubmitComments.bindAsEventListener(this);Event.observe(e,"click",e.onclickHandler);var g=$("commentsDiv");if(g.onclickHandler){Event.stopObserving(g,"click",g.onclickHandler)}g.onclickHandler=this.onClickCommentsDiv.bindAsEventListener(this);Event.observe(g,"click",g.onclickHandler);var a=GradebookUtil.isIE();var c=a?document.body.clientWidth:window.innerWidth;var b=a?document.body.clientHeight:window.innerHeight;var d=false;var j=false;if(f.y+g.offsetHeight>b){j=true}if(f.y-g.offsetHeight<0){j=false}if(f.x+g.offsetWidth>c-20){d=true}if(j){$("commentArrowUp").style.display="none";$("commentArrowDown").style.display="block";$("commentArrowDown").className="bubArrowBot";f.y=f.y-g.offsetHeight}else{$("commentArrowUp").style.display="block";$("commentArrowDown").style.display="none";$("commentArrowUp").className="bubArrowTop"}if(d){$("commentArrowDown").className="bubArrowBot2";$("commentArrowUp").className="bubArrowTop2";f.x=f.x-200}g.style.top=(f.y-this.htmlCell.offsetHeight)+"px";g.style.left=f.x+"px";g.style.display="block";if(GradebookUtil.isFFonMac()){GradebookUtil.shimDiv(g)}},onSubmitComments:function(){this.getGridCell().setComments($("studentComments").value,$("instructorComments").value);this.addSavingDiv();this.closeComments()},onClickCommentsDiv:function(a){var b=a.target?a.target:a.srcElement;Gradebook.CellController.prototype.lastCommentsEventTarget=b},testCommentsOpen:function(a){if(!a){return}var b=Gradebook.CellController.prototype;var c=a.target?a.target:a.srcElement;if(parseInt($("commentsDiv").style.display!="none")&&b.lastCommentsEventTarget!=c){if(confirm(GradebookUtil.getMessage("uncommitedCommentChangeErrorMsg"))){$("submitCommentsButton").onclick()}else{b.closeComments()}}},closeComments:function(){$("commentsDiv").style.display="none";var b=$("submitCommentsButton");if(b.onclickHandler){Event.stopObserving(b,"click",b.onclickHandler);b.onclickHandler=null}var a=$("commentsDiv");if(a.onclickHandler){Event.stopObserving(a,"click",a.onclickHandler);a.onclickHandler=null}$("shimDiv").style.display="none"},closePopups:function(a){$("gradeHeaderCM").style.display="none";$("studentInfoHeaderCM").style.display="none";$("gradeCM").style.display="none";$("studentInfoCM").style.display="none";$("infodiv").style.display="none";$("icondiv_up").style.display="none";$("icondiv_down").style.display="none";$("shadow").style.display="none";if(Gradebook.doNotCloseAttemptsForm){Gradebook.doNotCloseAttemptsForm=false}else{$("clearAttemptsFlyOut").style.display="none"}Gradebook.CellController.prototype.testCommentsOpen(a);$("shimDiv").style.display="none"},getGradeGridCell:function(){return this.grid.viewPort.getModelGridCell(this.row,this.col)},getHeaderGridCell:function(){return this.grid.viewPort.getHeaderGridCell(this.col)},closePopupsAndRestoreFocus:function(a){var b=Gradebook.CellController.prototype;b.closePopups(a);var c=a.target?a.target:a.srcElement;if(b.lastEventTarget==c){b.tableHasFocus=true}else{if(b.tableHasFocus){b.unselectCurrentCell();b.tableHasFocus=false}}},showClearAttemptsFlyOut:function(f,e){var b=$("gh_clearAllAttempts");var g=Position.cumulativeOffset(b);var c=$("clearAttemptsFlyOut");var d=c.getWidth();var a=$(document.body).getWidth();if(g[0]+d>a){g[0]=(g[0]+b.getWidth())-d}c.setStyle({left:g[0]+"px",top:(g[1]-Gradebook.Grid.pageHeightOffset)+"px",display:"block"});$("gradeHeaderCM").hide();if(Gradebook.clearAttemptsFormDefault){$("selectOption").value=Gradebook.clearAttemptsFormDefault.defaultSelect;$("dp_bbDateTimePicker_start_date").value=Gradebook.clearAttemptsFormDefault.defaultStartDate;$("dp_bbDateTimePicker_end_date").value=Gradebook.clearAttemptsFormDefault.defaultEndDate;$("bbDateTimePickerstart").value=Gradebook.clearAttemptsFormDefault.defaultStartDateHidden;$("bbDateTimePickerend").value=Gradebook.clearAttemptsFormDefault.defaultEndDateHidden}$("clearAttemptsOptionSelect").checked=true;$("clearAttemptsFlyOutSubmit").onclick=this.onSubmitClearAttempts.bindAsEventListener(this);Event.stop(f)},onSubmitClearAttempts:function(b){Event.stop(b);if(!confirm(gradebook2Messages.clearAttemptConfirmMsg)){return false}if($("clearAttemptsOptionSelect").checked){this.getGridCell().clearAttempts($("selectOption").value)}else{var a=$("bbDateTimePickerstart").value;var c=$("bbDateTimePickerend").value;this.getGridCell().clearAttemptsByDate(a,c)}return false},viewColumnInfo:function(b,d){Event.stop(b);this.closePopups(b);var e=d.getInfo();e.each(function(h){$(h.id).innerHTML=" "+h.value});var g=GradebookUtil._toAbsolute(this.htmlCell);var a=$("infodiv");var f=GradebookUtil.isIE();var c=f?document.body.clientWidth:window.innerWidth;if(g.x+a.offsetWidth>c-20){g.x=g.x-a.offsetWidth+50;$("bubbleArrowTop").className="bubArrowTop2"}else{$("bubbleArrowTop").className="bubArrowTop"}a.style.top=(g.y-this.htmlCell.offsetHeight)+"px";a.style.left=g.x+"px";a.style.display="block";if(GradebookUtil.isFFonMac()){GradebookUtil.shimDiv(a)}},sendEmail:function(b,a){var c=this.grid.options.sendEmailFunc;if(c){c(b,a)}},onGridScroll:function(){this.closePopups();this.unselectCurrentCell()}};var GradebookUtil={parseLocaleFloat:function(a){GradebookUtil.parseLocaleFloat=Gradebook.getModel().getNumberFormatter().parseLocaleFloat;return GradebookUtil.parseLocaleFloat(a)},toLocaleFloat:function(a){GradebookUtil.toLocaleFloat=Gradebook.getModel().getNumberFormatter().getDisplayFloat;return GradebookUtil.toLocaleFloat(a)},round:function(a){return Math.round(a*100)/100},isValidFloat:function(f){f=""+f;var d=f.strip();var a=null;var b=Gradebook.getModel();if(b&&b.getFloatLocaleFormat()){a=b.getFloatLocaleFormat()}else{a=getFloatLocaleFormatFromWindow()}if(d.endsWith(a.separator)){d+="0"}var c=new RegExp(a.format);var e=d.search(c)===0;return e},getFloatLocaleFormatFromWindow:function(){var a={separator:".",format:"^[0-9]*(\\.[0-9]+)?$"};if(window.LOCALE_SETTINGS){a.separator=LOCALE_SETTINGS.getString("number_format.decimal_point")}else{a.separator=page.bundle.getString("number_format.decimal_point")}a.format=LOCALE_SETTINGS.getString("float.format");return a},showInlineReceipt:function(a){window.location.href=viewSpreadsheetURL+"&inline_receipt_message="+a},formatStudentName:function(a){var c=new Template(GradebookUtil.getMessage("userNameTemplate"));var b={first:a.first,last:a.last,user:a.user};return c.evaluate(b)},isIE:function(){return navigator.userAgent.toLowerCase().indexOf("msie")>=0},isNS7:function(){return navigator.userAgent.toLowerCase().indexOf("netscape/7")>=0},isFFonMac:function(){return GradebookUtil.isMac()&&GradebookUtil.isFirefox()},isFirefox:function(){return(navigator.userAgent.toLowerCase().indexOf("firefox")!=-1)},isMac:function(){return(navigator.userAgent.toLowerCase().indexOf("mac")!=-1)},trimId:function(a){if(a.charAt(0)!="_"){return a}return a.slice(1,a.lastIndexOf("_"))},getMessage:function(a){if(Gradebook.getModel()){return Gradebook.getModel().getMessage(a)}else{if(gradebook2Messages&&gradebook2Messages[a]){return gradebook2Messages[a]}return a}},getElementsComputedStyle:function(d,a,b){if(arguments.length==2){b=a}var c=$(d);if(c.currentStyle){return c.currentStyle[a]}else{return document.defaultView.getComputedStyle(c,null).getPropertyValue(b)}},toViewportPosition:function(a){return this._toAbsolute(a,true)},_toAbsolute:function(b,c,a){return this._toAbsoluteMozilla(b,c,a)},_toAbsoluteMozilla:function(c,e,b){var a=0;var f=0;var d=c;while(d&&(!b||d!=b)){a+=d.offsetLeft;f+=d.offsetTop;d=d.offsetParent}d=c;while(d&&d!=document.body&&d!=document.documentElement&&(!b||d!=b)){if(d.scrollLeft){a-=d.scrollLeft}if(d.scrollTop){f-=d.scrollTop}d=d.parentNode}if(e){a-=this.docScrollLeft();f-=this.docScrollTop()}return{x:a,y:f}},docScrollLeft:function(){if(window.pageXOffset){return window.pageXOffset}else{if(document.documentElement&&document.documentElement.scrollLeft){return document.documentElement.scrollLeft}else{if(document.body){return document.body.scrollLeft}else{return 0}}}},docScrollTop:function(){if(window.pageYOffset){return window.pageYOffset}else{if(document.documentElement&&document.documentElement.scrollTop){return document.documentElement.scrollTop}else{if(document.body){return document.body.scrollTop}else{return 0}}}},getChildElementByClassName:function(e,a,d){var c=e.getElementsByTagName(a);if(!c||c.length==0){return null}for(var b=0;b<c.length;b++){if(c[b].className.indexOf(d)>=0){return c[b]}}return null},setChildElementTextByClassName:function(c,a,b,d){var e=GradebookUtil.getChildElementByClassName(c,a,b);if(e==null){return}e.innerHTML=d},getLogger:function(){if(window.gbModel){return gbModel.getLogger()}if(parent.gbModel){return parent.gbModel.getLogger()}},debug:function(b){try{var a=this.getLogger();if(a){a.debug(b)}}catch(c){}},error:function(b){var a=this.getLogger();if(a){a.error(b)}},shimDiv:function(c){var b=$("shimDiv");if(!b){return}b.style.width=c.offsetWidth;b.style.height=c.offsetHeight;var a=Position.page(c);b.style.top=a[1];b.style.left=a[0];b.style.zIndex=2;b.style.display="block"},clearShim:function(){if($("shimDiv")){$("shimDiv").style.display="none"}}};
