//Copyright (c) 2001-2016 Aspose Pty Ltd. All Rights Reserved. /*********************************************************************************************** * Aspose.Cells.GridWeb Component Script File * Copyright 2003-2011, All Rights Reserverd. ************************************************************************************************/ var _oFindWhat = null; // The controll that be input what finding var _oReplaceWith = null; // The controll that be input what replacing whith var _oCase = null; // The check box to determine whether macthing case var _oWord = null; // The check box to determine whether macthing whole word var _oDirection = null; // The check box to determine searching direction. search down and search up. var _oRegular = null; // The check box to determine whether the seaching string is a regular expression. var _oFindIn = null; // The drop down list to indicate target is formulas or values. var _oBtnFind = null; // The find next button. var _oBtnReplace = null; // The replace button. var _oBtnReplaceAll = null; // The replace all button. var _oBtnClose = null; // The close button. var _parentWindow = null; // The parent window var _element = null; // The GridWeb object. var _viewTable = null; // One of the ViewTable objects. var _viewTable00 = null; // One of the ViewTable objects. var _viewTable01 = null; // One of the ViewTable objects. var _viewTable10 = null; // One of the ViewTable objects. var _activeCell = null; // The active cell. var _startSearchCell = null; // The first cell in a searching process. var _callType = 0; // 0 Find; 1 Replace var _dialogEdgeLeftWidth = 0; // The left edge width of the find/replace dialog window var _dialogEdgeTopHeight = 0; // The top edge width of the find/replace dialog window, i.e. The title bar width. var _cidReg = new RegExp("^\\d+#\\d+$"); var _findReg = null; var _findWhat = null; var _regexOptions = null; var _freeze = null; var _arrCells = new Array(); var _cellIndex = 0; var _currentViewTable = null; var _currentCellIndex = 0; var _currentRowIndex = 0; var _currentRows = null; var _currentCells = null; var _currentRowsLength = 0; var _currentCellsLength = 0; //---------------------------------------------------------------------------------------------------- // Initializes variants, gets parameters from parent window after window on load. //---------------------------------------------------------------------------------------------------- window.onload = function(){ _oFindWhat = document.getElementById("txtFindWhat"); _oReplaceWith = document.getElementById("txtReplaceWith"); _oCase = document.getElementById("ckbCase"); _oWord = document.getElementById("ckbWord"); _oDirection = document.getElementById("ckbDirection"); _oRegular = document.getElementById("ckbRegular"); _oFindIn = document.getElementById("ddlFindIn"); _oBtnFind = document.getElementById("btnFind"); _oBtnReplace = document.getElementById("btnReplace"); _oBtnReplaceAll = document.getElementById("btnReplaceAll"); _oBtnClose = document.getElementById("btnClose"); if(!window.showModelessDialog) // Is not IE { _parentWindow = window.opener; _element = _parentWindow.acwFindReplaceDialog_Element; _activeCell = _parentWindow.acwFindReplaceDialog_StartCell; _oBtnFind.style.width = "100px"; _oBtnReplace.style.width = "100px"; _oBtnReplaceAll.style.width = "100px"; _oBtnClose.style.width = "100px"; _dialogEdgeLeftWidth = (window.outerWidth - innerWidth)/2; _dialogEdgeTopHeight = parseInt((window.outerHeight - innerHeight)/2+1); } else{ //IE _parentWindow = window.dialogArguments[0]; _arrCells = window.dialogArguments[1]; _cellIndex = window.dialogArguments[2]; _element = _parentWindow.acwFindReplaceDialog_Element; _activeCell = _parentWindow.acwFindReplaceDialog_StartCell; _dialogEdgeLeftWidth = window.screenLeft - parseFloat(window.dialogLeft); _dialogEdgeTopHeight = window.screenTop - parseFloat(window.dialogTop); } _callType = getUrlParameter("callType"); _freeze = _element.freeze; init(); } //---------------------------------------------------------------------------------------------------- // Sets the variants about this window when the window be closed. //---------------------------------------------------------------------------------------------------- window.onunload = function(){ if(typeof _parentWindow == "undefined" || typeof _parentWindow.acwFindReplaceDialog == "undefined"){ return false; } _parentWindow.acwFindReplaceDialog_Element = null; _parentWindow.acwFindReplaceDialog_StartCell = null; _parentWindow.acwFindReplaceDialog = null; } //---------------------------------------------------------------------------------------------------- // If reload window opener, closes FindReplace Dialog. //---------------------------------------------------------------------------------------------------- window.onfocus = function(){ if(typeof _parentWindow == "undefined" || typeof _parentWindow.acwFindReplaceDialog == "undefined" || (_activeCell != null && _activeCell.parentNode == null)){ window.close(); } } //---------------------------------------------------------------------------------------------------- // Handles onkeyown events //---------------------------------------------------------------------------------------------------- document.onkeydown = function(evt){ if(evt == null) evt = event; if(evt.keyCode == 27){ // Esc window.close(); return false; } else if(evt.keyCode == 13){ //enter _oBtnFind.click(); return false; } } //---------------------------------------------------------------------------------------------------- // Initializes variants, determines how to lay out page. //---------------------------------------------------------------------------------------------------- function init(){ _viewTable = _element.ownerDocument.getElementById(_element.id + "_viewTable"); if (_freeze) { _viewTable00 = _element.ownerDocument.getElementById(_element.id + "_viewTable00"); _viewTable01 = _element.ownerDocument.getElementById(_element.id + "_viewTable01"); _viewTable10 = _element.ownerDocument.getElementById(_element.id + "_viewTable10"); } if(_activeCell == null){ if(_freeze){ if(_viewTable00.rows.length != 0 && _viewTable00.rows[0].cells.length != 0){ _activeCell = _viewTable00.rows[0].cells[0]; } else if(_viewTable01.rows.length != 0 && _viewTable01.rows[0].cells.length != 0){ _activeCell = _viewTable01.rows[0].cells[0]; } else if(_viewTable10.rows.length != 0 && _viewTable10.rows[0].cells.length != 0){ _activeCell = _viewTable10.rows[0].cells[0]; } else if(_viewTable.rows.length != 0 && _viewTable.rows[0].cells.length != 0){ _activeCell = _viewTable.rows[0].cells[0]; } else{ // No cell provide for searching window.close(); return; } } else { if(_viewTable.rows.length == 0 || _viewTable.rows[0].cells.length == 0){ // No cell provide for searching window.close(); return; } else{ _activeCell = _viewTable.rows[0].cells[0]; } } setActiveCell(_activeCell); } validateInitArguments(); showElmentByCallType(_callType); //FillCellsToArray(_activeCell); if(navigator.appName.indexOf("Microsoft") == -1){ // Is not IE _currentViewTable = _activeCell.offsetParent; _currentCellIndex = _activeCell.cellIndex; _currentRowIndex = _activeCell.parentNode.rowIndex; _currentRows = _currentViewTable.rows; _currentRowsLength = _currentRows.length; _currentCells = _currentRows[_currentRowIndex].cells; _currentCellsLength = _currentCells.length; } } //---------------------------------------------------------------------------------------------------- // Determines whether can call the Find/Replace feature. //---------------------------------------------------------------------------------------------------- function validateInitArguments(){ if(_element == null || _activeCell == null || _callType == null){ alert("Arguments are null. Can't call Find/Replace feature!"); window.close(); } } //---------------------------------------------------------------------------------------------------- // Determines how to lay out page according to call type(find or replace) // Arguments: // callType: o indicates find, 1 indicates replace //---------------------------------------------------------------------------------------------------- function showElmentByCallType(callType){ if(callType == 0){ // Find document.getElementById("trReplaceWhat").style.display = "none"; document.getElementById("trReplaceAll").style.display = "none"; } else if(callType == 1){ // Replace document.getElementById("trReplaceWhat").style.display = ""; document.getElementById("trReplaceAll").style.display = ""; } if (!_element.editmode) { document.getElementById("trReplace").style.display = "none"; } } //---------------------------------------------------------------------------------------------------- // Determines whether continueing to execute when executor clicks find next, replace or replace all button // Arguments: // obj: The button object. // Return: Allows to execute return true, otherwise return false. //---------------------------------------------------------------------------------------------------- function isEnableGo(obj){ if((obj == _oBtnReplace || obj == _oBtnReplaceAll) && !_element.editmode) return false; if(obj == _oBtnReplace && _callType == 0){ _callType = 1; showElmentByCallType(1); return false; } if((obj == _oBtnReplace || obj == _oBtnReplaceAll) && _oFindIn.value == 2){ if(window.confirm("Findin must be set to Formulas. Now, set it to Formulas and continue?")){ _oFindIn.value = 1; } else{ return false; } } _findWhat = _oFindWhat.value; if(_findWhat == ""){ alert("Please input what will be searched!"); return false; } _regexOptions = getRegExpOptions(); if(!_oRegular.checked){ // RegularExpression checkbox is false _findWhat = escapeMetacharacters(_findWhat); // Escapes meta characters. E.g. "\w" to "\\w" } if(_oWord.checked){ _findWhat = "(\\W|^)" + _findWhat + "(\\W|$)"; } try{ _findReg = new RegExp(_findWhat, _regexOptions); } catch(e){//Regular Expression is error alert(e.name + ": " + e.message); return false; } _startSearchCell = _activeCell; return true; } //---------------------------------------------------------------------------------------------------- // Find next cell //---------------------------------------------------------------------------------------------------- function find_Next() { var findCell = _startSearchCell; do{ findCell = moveToNextCell3(); var sourceString; sourceString = getInnerText(findCell); // Determines the findCell whether contains the spiciel string. if(sourceString != null && sourceString != ""){ //_findReg = new RegExp(_findWhat, _regexOptions); if(_oFindIn.value == 1){ // Find in values or formulas. If cell is set value by formulas, find in formula, but don't find in value. // otherwise, find in values var bHadFound = false; if(getAttribute(findCell,"formula") != null ){ if(_findReg.exec(getAttribute(findCell, "formula"))){ bHadFound = true; } } else if(getAttribute(findCell, "ufv") != null){ if(_findReg.exec(getAttribute(findCell, "ufv"))){ bHadFound = true; } } else if(_findReg.exec(sourceString)){ bHadFound = true; } if(bHadFound){ setActiveCell(findCell); // Had found _activeCell = findCell; return true; } } else if(_oFindIn.value == 2){ //Only Find values in all cells. if(_findReg.exec(sourceString)){ setActiveCell(findCell); // Had found _activeCell = findCell; return true; } } } if(findCell == _startSearchCell){ alert("The specified text was not found!"); return false; } } while(true); } //---------------------------------------------------------------------------------------------------- // Replaces with the specified string and find next cell //---------------------------------------------------------------------------------------------------- function replace() { var replaceCell = _startSearchCell; var replaceCount = 0; do{ var sourceString; sourceString = getInnerText(replaceCell); if(replaceCount == 0){// Replace if(isCanReplaced(replaceCell) && sourceString != null && sourceString != ""){ _findReg = new RegExp(_findWhat, _regexOptions); var txt; if(getAttribute(replaceCell, "formula") != null ){ // Is Formula if(_findReg.exec(getAttribute(replaceCell, "formula"))){ if(_oWord.checked){ txt = getAttribute(replaceCell, "formula").replace(_findReg,"$1" + _oReplaceWith.value + "$2"); setCellValue(replaceCell,txt); } else{ txt = getAttribute(replaceCell, "formula").replace(_findReg,_oReplaceWith.value); setCellValue(replaceCell,txt); } replaceCount++; } } else if(getAttribute(replaceCell, "ufv") != null){ // Is Data Format if(_findReg.exec(getAttribute(replaceCell, "ufv"))){ if(_oWord.checked){ txt = getAttribute(replaceCell, "ufv").replace(_findReg,"$1" + _oReplaceWith.value + "$2"); setCellValue(replaceCell,txt); } else{ txt = getAttribute(replaceCell, "ufv").replace(_findReg,_oReplaceWith.value); setCellValue(replaceCell,txt); } replaceCount++; } } else if(_findReg.exec(sourceString)){ if(_oWord.checked){ txt = sourceString.replace(_findReg,"$1" + _oReplaceWith.value + "$2"); setCellValue(replaceCell,txt); } else{ txt = sourceString.replace(_findReg,_oReplaceWith.value); setCellValue(replaceCell,txt); } replaceCount++; } } } else{ //Had replaced. Finds next and set it active. if(isCanReplaced(replaceCell) && sourceString != null && sourceString != ""){ _findReg = new RegExp(_findWhat, _regexOptions); var bHadFound = false; if(getAttribute(replaceCell,"formula") != null ){ if(_findReg.exec(getAttribute(replaceCell, "formula"))){ bHadFound = true; } } else if(getAttribute(replaceCell, "ufv") != null){ if(_findReg.exec(getAttribute(replaceCell, "ufv"))){ bHadFound = true; } } else if(_findReg.exec(sourceString)){ bHadFound = true; } if(bHadFound){ setActiveCell(replaceCell); // Had found _activeCell = replaceCell; return true; } } } replaceCell = moveToNextCell3(); if(replaceCell == _startSearchCell){ if(replaceCount == 0){ alert("The specified text was not found or the cell is read only!"); } return false; } } while(true); } //---------------------------------------------------------------------------------------------------- // Replaces with the specified string in all cells. //---------------------------------------------------------------------------------------------------- function replaceAll() { var replaceCell = _startSearchCell; var replaceCount = 0; do{ var sourceString; sourceString = getInnerText(replaceCell); if(isCanReplaced(replaceCell) && sourceString != null && sourceString != ""){ _findReg = new RegExp(_findWhat, _regexOptions); var txt; if(getAttribute(replaceCell, "formula") != null ){ // Is Formula if(_findReg.exec(getAttribute(replaceCell, "formula"))){ if(_oWord.checked){ txt = getAttribute(replaceCell, "formula").replace(_findReg,"$1" + _oReplaceWith.value + "$2"); setCellValue(replaceCell,txt); } else{ txt = getAttribute(replaceCell, "formula").replace(_findReg,_oReplaceWith.value); setCellValue(replaceCell,txt); } _replaceAllCount++; } } else if(getAttribute(replaceCell, "ufv") != null){ // Is Data Format if(_findReg.exec(getAttribute(replaceCell, "ufv"))){ if(_oWord.checked){ txt = getAttribute(replaceCell, "ufv").replace(_findReg,"$1" + _oReplaceWith.value + "$2"); setCellValue(replaceCell,txt); } else{ txt = getAttribute(replaceCell, "ufv").replace(_findReg,_oReplaceWith.value); setCellValue(replaceCell,txt); } replaceCount++; } } else if(_findReg.exec(sourceString)){ if(_oWord.checked){ txt = sourceString.replace(_findReg,"$1" + _oReplaceWith.value + "$2"); setCellValue(replaceCell,txt); } else{ txt = sourceString.replace(_findReg,_oReplaceWith.value); setCellValue(replaceCell,txt); } replaceCount++; } } replaceCell = moveToNextCell3(); if(replaceCell == _startSearchCell){ if(replaceCount > 0){ alert(replaceCount + " occurrence(s) replaced."); } else{ alert("The specified text was not found or the cell is read only!"); } _startSearchCell = null; return false; } } while(true); } //---------------------------------------------------------------------------------------------------- // Indicates whether the cell can execute replacing featrue. //---------------------------------------------------------------------------------------------------- function isCanReplaced(cell){ var r = false; if (getAttribute(cell, "protected") != "1" // Is not Read Only && getAttribute(cell, "vtype") != "dlist"){ // Is not DropDownList r = true; } return r; } //---------------------------------------------------------------------------------------------------- // Gets regular expression options //---------------------------------------------------------------------------------------------------- function getRegExpOptions(){ var r = "gi"; if(_oCase.checked){ r = r.replace("i",""); } return r; } //---------------------------------------------------------------------------------------------------- // Escapes the meta characters in the specified string. //---------------------------------------------------------------------------------------------------- function escapeMetacharacters(s){ var syntax = "\\^$*+?{}.()|[]"; // meta characters for(var i=0; i= window.screenX && x < window.screenX + window.outerWidth; condition2 = x + cell.offsetWidth > window.screenX && x + cell.offsetWidth <= window.screenX + window.outerWidth; condition3 = y >= window.screenY && y < window.screenY + window.outerHeight; condition4 = y + cell.offsetHeight > window.screenY && y + cell.offsetHeight <= window.screenY + window.outerHeight; if((condition1 || condition2) && (condition3 || condition4)){ window.moveTo(x + cell.offsetWidth,y + cell.offsetHeight); } } else{ // IE offsetLeftToBody = offsetLeftToBody - panel.scrollLeft - _parentWindow.document.body.scrollLeft; offsetTopToBody = offsetTopToBody - panel.scrollTop - _parentWindow.document.body.scrollTop; x = offsetLeftToBody + _parentWindow.screenLeft; y = offsetTopToBody + _parentWindow.screenTop; condition1 = x >= window.screenLeft - _dialogEdgeLeftWidth && x < window.screenLeft - _dialogEdgeLeftWidth + parseFloat(dialogWidth); condition2 = x + cell.offsetWidth > window.screenLeft - _dialogEdgeLeftWidth && x + cell.offsetWidth <= window.screenLeft - _dialogEdgeLeftWidth + parseFloat(dialogWidth); condition3 = y >= window.screenTop - _dialogEdgeTopHeight && y < window.screenTop - _dialogEdgeTopHeight + parseFloat(dialogHeight); condition4 = y + cell.offsetHeight > window.screenTop - _dialogEdgeTopHeight && y + cell.offsetHeight <= window.screenTop - _dialogEdgeTopHeight + parseFloat(dialogHeight); if((condition1 || condition2) && (condition3 || condition4)){ dialogLeft = x + cell.offsetWidth; dialogTop = y + cell.offsetHeight; } } } //---------------------------------------------------------------------------------------------------- // Sets cell value to txt. //---------------------------------------------------------------------------------------------------- function setCellValue(cell,txt){ var index = cell.id.lastIndexOf("_"); var xy = cell.id.substr(index+1,cell.id.length - index + 1).split("#"); _element.setCellValue(xy[1], xy[0],txt); } //---------------------------------------------------------------------------------------------------- // Gets the specified name parameter in url string. //---------------------------------------------------------------------------------------------------- function getUrlParameter(name) { var url = window.location.search; var reg = new RegExp("(^|\\?|&)"+ name +"=([^&]*)(\\s|&|$)", "i"); if (reg.exec(url)) return RegExp.$2; else return ""; } function getTimeDistance(a,b){ return b.getMilliseconds() - a.getMilliseconds() + 1000*(b.getSeconds() - a.getSeconds()); } //---------------------------------------------------------------------------------------------------- // Determines whether the specified object is valid cell. //---------------------------------------------------------------------------------------------------- function isValidCell(o){ if (o.tagName == "TD" && o.id != null && o.id.indexOf(_element.id) == 0 && _cidReg.exec(o.id.substring(_element.id.length+1,o.id.length))) return true; else return false; } //---------------------------------------------------------------------------------------------------- // Obsolete. Gets the next cell. //---------------------------------------------------------------------------------------------------- function moveToNextCell(cell){ var currentViewTable = cell.offsetParent; var cellIndex = cell.cellIndex; var rowIndex = cell.parentNode.rowIndex; if(_freeze){ if(_oDirection.checked){ // Search up if(cellIndex == 0 || currentViewTable.rows.length == 0 || currentViewTable.rows[rowIndex].cells.length == 0){ if(rowIndex == 0){ if(currentViewTable == _viewTable00){ currentViewTable = _viewTable; if(currentViewTable.rows.length > 0) rowIndex = currentViewTable.rows.length - 1; } else if(currentViewTable == _viewTable01){ currentViewTable = _viewTable00; } else if(currentViewTable == _viewTable10){ currentViewTable = _viewTable01; if(currentViewTable.rows.length > 0) rowIndex = currentViewTable.rows.length - 1; } else if(currentViewTable == _viewTable){ currentViewTable = _viewTable10; } } else{ if(currentViewTable == _viewTable00){ currentViewTable = _viewTable01; rowIndex--; } else if(currentViewTable == _viewTable01){ currentViewTable = _viewTable00; } else if(currentViewTable == _viewTable10){ currentViewTable = _viewTable; rowIndex--; } else if(currentViewTable == _viewTable){ currentViewTable = _viewTable10; } } if(currentViewTable.rows.length > 0 && currentViewTable.rows[rowIndex].cells.length > 0) cellIndex = currentViewTable.rows[rowIndex].cells.length -1; } else{ // Is not first cell in the row. Reduces cellIndex to 1 for move to next cell. cellIndex--; } } else{ // Search down if(currentViewTable.rows.length == 0 ||currentViewTable.rows[rowIndex].cells.length == 0 || cellIndex == currentViewTable.rows[rowIndex].cells.length - 1 ){ cellIndex = 0; if(rowIndex == currentViewTable.rows.length - 1 || ((currentViewTable == _viewTable00 || currentViewTable == _viewTable01) && _viewTable00.rows.length == 0 && _viewTable01.rows.length == 0) || ((currentViewTable == _viewTable10 || currentViewTable == _viewTable) && _viewTable10.rows.length == 0 && _viewTable.rows.length == 0)){ if(currentViewTable == _viewTable00){ currentViewTable = _viewTable01; } else if(currentViewTable == _viewTable01){ currentViewTable = _viewTable10; rowIndex = 0; } else if(currentViewTable == _viewTable10){ currentViewTable = _viewTable; } else if(currentViewTable == _viewTable){ currentViewTable = _viewTable00; rowIndex = 0; } } else{ if(currentViewTable == _viewTable00){ currentViewTable = _viewTable01; } else if(currentViewTable == _viewTable01){ currentViewTable = _viewTable00; rowIndex++; } else if(currentViewTable == _viewTable10){ currentViewTable = _viewTable; } else if(currentViewTable == _viewTable){ currentViewTable = _viewTable10; rowIndex++; } } } else{ // Is not last cell in the row. Adds cellIndex to 1 for move to next cell. cellIndex++; } } } else{ if(_oDirection.checked){ // Search up if(cellIndex == 0){ // Is the first cell in the row. // The row move to next row and cellIndex is evaluated to the last cell index of next row. if(rowIndex == 0){ rowIndex = currentViewTable.rows.length - 1; } else{ rowIndex--; } cellIndex = currentViewTable.rows[rowIndex].cells.length -1; } else{ // Is not first cell in the row. Reduces cellIndex to 1 for move to next cell. cellIndex--; } } else{ // Search down if(cellIndex == currentViewTable.rows[rowIndex].cells.length -1){ // Is the last cell in the row. // The row move to next row and cellIndex is evaluated to the first cell index of next row. if(rowIndex == currentViewTable.rows.length - 1){ rowIndex = 0; } else{ rowIndex++; } cellIndex = 0; } else{ // Is not last cell in the row. Adds cellIndex to 1 for move to next cell. cellIndex++; } } } var cell = null; if(currentViewTable.rows.length > 0 && currentViewTable.rows[rowIndex].cells.length > 0){ cell = currentViewTable.rows[rowIndex].cells[cellIndex]; } if(cell != null && isValidCell(cell)) return cell; else return moveToNextCell(cell); } //---------------------------------------------------------------------------------------------------- // Obsolete. Gets the next cell that is valid cell. //---------------------------------------------------------------------------------------------------- function moveToNextCell2(cell){ if(_freeze){ var currentViewTable = cell.offsetParent; var rowIndex; if(_oDirection.checked){ // Search up if(cell.previousSibling != null){ cell = cell.previousSibling; } else if(cell.parentElement.previousSibling != null){ rowIndex = cell.parentElement.rowIndex; if(currentViewTable == _viewTable00){ cell = _viewTable01.rows[rowIndex - 1].lastChild; } else if(currentViewTable == _viewTable01){ cell = _viewTable00.rows[rowIndex].lastChild; } else if(currentViewTable == _viewTable10){ cell = _viewTable.rows[rowIndex - 1].lastChild; } else if(currentViewTable == _viewTable){ cell = _viewTable10.rows[rowIndex].lastChild; } } else{ if(currentViewTable == _viewTable00){ cell = _viewTable.rows[_viewTable.rows.length - 1].lastChild; } else if(currentViewTable == _viewTable01){ cell = _viewTable00.rows[0].lastChild; } else if(currentViewTable == _viewTable10){ cell = _viewTable01.rows[_viewTable01.rows.length - 1].lastChild; } else if(currentViewTable == _viewTable){ cell = _viewTable10.rows[0].lastChild; } } } else{ if(cell.nextSibling != null){ cell = cell.nextSibling; } else if(cell.parentElement.nextSibling != null){ rowIndex = cell.parentElement.rowIndex; if(currentViewTable == _viewTable00){ cell = _viewTable01.rows[rowIndex].firstChild; } else if(currentViewTable == _viewTable01){ cell = _viewTable00.rows[rowIndex + 1].firstChild; } else if(currentViewTable == _viewTable10){ cell = _viewTable.rows[rowIndex].firstChild; } else if(currentViewTable == _viewTable){ cell = _viewTable10.rows[rowIndex + 1].firstChild; } } else{ if(currentViewTable == _viewTable00){ cell = _viewTable01.rows[_viewTable01.rows.length - 1].firstChild; } else if(currentViewTable == _viewTable01){ cell = _viewTable10.rows[0].firstChild; } else if(currentViewTable == _viewTable10){ cell = _viewTable.rows[_viewTable.rows.length - 1].firstChild; } else if(currentViewTable == _viewTable){ cell = _viewTable00.rows[0].firstChild; } } } } else{ if(_oDirection.checked){ // Search up if(cell.previousSibling != null){ cell = cell.previousSibling; } else if(cell.parentNode.previousSibling != null){ cell = cell.parentNode.previousSibling.lastChild; } else{ cell = cell.parentNode.parentNode.rows[cell.offsetParent.rows.length - 1].lastChild; } } else{ if(cell.nextSibling != null){ cell = cell.nextSibling; } else if(cell.parentNode.nextSibling != null && cell.parentNode.nextSibling.nodeType == 1){ cell = cell.parentNode.nextSibling.firstChild; } else{ cell = cell.parentNode.parentNode.rows[0].firstChild; } } } if(isValidCell(cell)) return cell; else return moveToNextCell2(cell); } //---------------------------------------------------------------------------------------------------- // Gets the next cell that is valid cell. //---------------------------------------------------------------------------------------------------- function moveToNextCell3(){ if(navigator.appName.indexOf("Microsoft") == -1) {// Is not IE if(_oDirection.checked){ // Search up if(_currentCellIndex == 0){ // Is the first cell in the row. // The row move to next row and cellIndex is evaluated to the last cell index of next row. if(_currentRowIndex == 0){ _currentRowIndex = _currentRowsLength - 1; } else{ _currentRowIndex--; } _currentCells = _currentRows[_currentRowIndex].cells; _currentCellsLength = _currentCells.length; _currentCellIndex = _currentCellsLength -1; } else{ // Is not first cell in the row. Reduces cellIndex to 1 for move to next cell. _currentCellIndex--; } } else{ // Search down if(_currentCellIndex == _currentCellsLength -1){ // Is the last cell in the row. // The row move to next row and cellIndex is evaluated to the first cell index of next row. if(_currentRowIndex == _currentRowsLength - 1){ _currentRowIndex = 0; } else{ _currentRowIndex++; } _currentCells = _currentRows[_currentRowIndex].cells; _currentCellsLength = _currentCells.length; _currentCellIndex = 0; } else{ // Is not last cell in the row. Adds cellIndex to 1 for move to next cell. _currentCellIndex++; } } var cell = null; if(_currentRowsLength > 0 && _currentCellsLength > 0){ cell = _currentCells[_currentCellIndex]; } if(cell != null && isValidCell(cell)) return cell; else return moveToNextCell3(); } else{ //IE if(_oDirection.checked){ // Search up if(_cellIndex == 0){ _cellIndex = _arrCells.length; } return _arrCells[--_cellIndex]; } else{ // Search down if(_cellIndex == _arrCells.length - 1){ _cellIndex = -1; } return _arrCells[++_cellIndex]; } } } //---------------------------------------------------------------------------------------------------- // Obsolete. Fills the cells to a array //---------------------------------------------------------------------------------------------------- function FillCellsToArray(startCell){ //var a = new Date(); var k = 0; var i = 0; _arrCells[i] = startCell; _cellIndex = startCell.cellIndex; var rows = _viewTable.rows; var rowslen = rows.length; var i; for (i=0; i