var deleteIcon = new Image(); deleteIcon.src = "images/del.gif";
var restoreIcon = new Image(); restoreIcon.src = "images/undo.gif";
function eg_getNextCell(cell, step){
var row = cell.parentElement;
var table = row.parentElement;
var ci, ri;
ci = cell.cellIndex + step;
ri = row.rowIndex;
if(ci >= row.cells.length) {ci = 0; ri++; }
if(ci < 0) { ci = row.cells.length - 1; ri--; }
if(ri >= table.rows.length) { ri = table.rows.length - 1; }
if(ri < 0) { ri = 0; }
return table.rows(ri).cells(ci);
}
function eg_getCellInNextRow(cell, step){
var row = cell.parentElement;
var table = row.parentElement;
var ci, ri;
ci = cell.cellIndex;
ri = row.rowIndex + step;
if(ri >= table.rows.length) { ri = table.rows.length - 1; }
if(ri < 0) { ri = 0; }
return table.rows(ri).cells(ci);
}
function eg_changeHandler(event){
if(!event)event = window.event;
srcElement = event.srcElement ? event.srcElement : event.target;
try{
var cell = srcElement.parentNode;
var row = cell.parentNode;
var table = row.parentNode;
var newRow = "";
var tplRow = null;
if(table.all)
tplRow = table.all['emptyRowTemplate'];
else
tplRow = table.rows['emptyRowTemplate'];
if(row.rowIndex == (table.rows.length - 1)){
newRow = tplRow.cloneNode(true);
newRow.style.display = '';//newRow.style.display = 'block';
newRow.id = '';
// в измененную строку вставляем кнопку удаления
row.cells[row.cells.length - 1].innerHTML = "
";
var rowItemsCnt;
var rowItems;
var newRowItems;
var tplRowItems;
if(row.all){
rowItemsCnt = row.all.length;
rowItems = row.all;
newRowItems = newRow.all;
tplRowItems = tplRow.all;
}else{
newRowItems = _getAll(newRow);
tplRowItems = _getAll(tplRow);
rowItems = _getAll(row);
rowItemsCnt = rowItems.length;
}
for(var i =0; i /, table.rows.length);
rowItems[i].id = rowItems[i].name;
var isMSIE = /*@cc_on!@*/false;
if (!isMSIE) {
if (!rowItems[i].value.length) {
rowItems[i].value = tplRowItems[i].value;
}
newRowItems[i].value = '';
}
cloneEvents(tplRowItems[i], newRowItems[i]);
if(rowItems[i].tagName != 'SELECT') rowItems[i].onpropertychange = null;
}
}
if(row.className.indexOf('dark') == -1){ AddClass(newRow,'dark'); }else{ RemoveClass(newRow,'dark'); }
if(row.insertAdjacentElement)
row.insertAdjacentElement("afterEnd", newRow);
else{
row.parentNode.insertBefore(newRow, _getNextTr(row));
}
}
return true;
}catch(e){/*alert('eg_changeHandler: '+e.message);*/}
}
function cloneEvents(tplRowElement, rowElement){
rowElement.evt = tplRowElement.evt;
for(var i in tplRowElement.evt){
_attachEvent(rowElement, i, InvokeEvent);
}
}
function eg_onPropertyChange(event){
if(!event)event=window.event;
srcElement = event.srcElement ? event.srcElement : event.target;
try{
if(isIE){
if((event.propertyName == 'value' || event.propertyName == 'checked') && srcElement && srcElement.value && srcElement.value.length>0) eg_changeHandler(event);
}else{
eg_changeHandler(event);
}
}catch(e){}
}
function eg_onFocus(event){
if(!event)event=window.event;
srcElement = event.srcElement ? event.srcElement : event.target;
try{
srcElement.select();
}catch(e){}
}
function eg_setEventHandlers(){
var tables = document.getElementsByTagName("TABLE");
for(var i = 0; i < tables.length; i++){
if(tables[i].className == "listtable editable"){
var inputs = tables[i].getElementsByTagName("INPUT");
for(var j = 0; j < inputs.length; j++){
if(inputs[j].egEventAttached)continue;
AddEvent(inputs[j], 'onpropertychange', eg_onPropertyChange);
AddEvent(inputs[j], 'onchange', eg_onPropertyChange);
AddEvent(inputs[j], 'onfocus', eg_onFocus);
inputs[j].egEventAttached = true;
}
inputs = tables[i].getElementsByTagName("TEXTAREA");
for(var j = 0; j < inputs.length; j++){
if(inputs[j].egEventAttached)continue;
AddEvent(inputs[j], 'onpropertychange', eg_onPropertyChange);
AddEvent(inputs[j], 'onchange', eg_onPropertyChange);
AddEvent(inputs[j], 'onfocus', eg_onFocus);
inputs[j].egEventAttached = true;
}
inputs = tables[i].getElementsByTagName("SELECT");
for(var j = 0; j < inputs.length; j++){
if(inputs[j].egEventAttached)continue;
AddEvent(inputs[j], 'onpropertychange', eg_onPropertyChange);
AddEvent(inputs[j], 'onchange', eg_onPropertyChange);
AddEvent(inputs[j], 'onfocus', eg_onFocus);
inputs[j].egEventAttached = true;
}
/*for(var j = 0; j < tables[i].all.length; j++){
if((tables[i].all[j].tagName == "INPUT" || tables[i].all[j].tagName == "TEXTAREA" || tables[i].all[j].tagName == "SELECT") && !tables[i].all[j].egEventAttached){
AddEvent(tables[i].all[j], 'onpropertychange', eg_onPropertyChange);
AddEvent(tables[i].all[j], 'onfocus', eg_onFocus);
tables[i].all[j].egEventAttached = true;
}
}*/
}
}
}
function eg_getElementInCell(cell){
var element = null;
if(cell.getElementsByTagName("INPUT").length > 0) element = cell.getElementsByTagName("INPUT")[0];
else if(cell.getElementsByTagName("TEXTAREA").length > 0) element = cell.getElementsByTagName("TEXTAREA")[0];
else if(cell.getElementsByTagName("SELECT").length > 0) element = cell.getElementsByTagName("SELECT")[0];
return element;
}
function eg_kbdHandler(){
return true;
var table, nextCell, nextElement;
if(!event.shiftKey && !event.altKey && !event.ctrlKey){
switch(event.keyCode){
case 37: //left
nextCell = eg_getNextCell(event.srcElement.offsetParent, -1);
nextElement = eg_getElementInCell(nextCell);
if(nextElement) nextElement.focus();
break;
case 38: //up
if(event.srcElement.tagName == "SELECT") break;
nextCell = eg_getCellInNextRow(event.srcElement.offsetParent, -1);
nextElement = eg_getElementInCell(nextCell);
event.cancelBubble = true;
if(nextElement) nextElement.focus();
break;
case 39: // right
nextCell = eg_getNextCell(event.srcElement.offsetParent, 1);
nextElement = eg_getElementInCell(nextCell);
if(nextElement) nextElement.focus();
break;
case 40: //down
event.cancelBubble = true;
if(event.srcElement.tagName == "SELECT") break;
nextCell = eg_getCellInNextRow(event.srcElement.offsetParent, 1);
nextElement = eg_getElementInCell(nextCell);
if(nextElement) nextElement.focus();
break;
case 9:
event.cancelBubble = true;
ActivateNextObject(1);
break;
case 27: //esc
var td = event.srcElement.parentElement;
break;
}
}
}
function eg_deleteRow(a){
obj = a.parentNode;
var table,row;
while(obj){
if(obj.tagName == "TR") row = obj;
if(obj.tagName == "TABLE" && obj.className == "listtable editable"){
table = obj;
break;
}
obj = obj.parentNode;
}
if(row.className.indexOf('deletedRow') == -1){
// зачеркиваем удаленную строку
AddClass(row,'deletedRow');
inputs = _getAll(row);
for(var i=0; i