movtableInc.js
Summary
No overview generated for 'movtableInc.js'
var selectedText;
var targetElm;
var myTable;
var hiddenCols;
var activeHeaders= null;
var moveColumn=null;
var dragHeaderDiv=null;
var topElement=null;
var topElementByTag=null;
var originalOnSelect;
var eventProcessed=false;
function sortableInit()
{
initjsDOMenu();
myTable=new table(tableClass);
document.onmousedown=mouseDown;
}
function getPopUpMenuObj(e)
{
targetElm = (e.target) ? e.target : e.srcElement;
if (targetElm.parentNode.tagName=='TH') targetElm=targetElm.parentNode;
if (targetElm.tagName=='TD' || targetElm.tagName=='TH') {
selectedText=selectElement(targetElm);
cursorMenu1 = new jsDOMenu(210);
var colID=getColID(targetElm);
filterurl=baseurl+'&filterByIndexCol='+myTable.columns.getColByID(colID).index+"&filterByIndexRow="+ (getRow(targetElm)-1);
removeFilter=baseurl+"&removefilter";
sorturl=baseurl+'&sortByIndexCol='+myTable.columns.getColByID(colID).index;
if (targetElm.tagName=='TH') {
hiddenCols=myTable.columns.listInvisible();
if (JScolhide==1)
if ((myTable.columns.item.length-hiddenCols.length)==1)
cursorMenu1.addMenuItem(new menuItem(getText("Nascondi Colonna"), "", "",false));
else
cursorMenu1.addMenuItem(new menuItem(getText("Nascondi Colonna"), "", "code:myTable.columns.getColByID('"+colID+"').hideColumn()"));
if (myTable.columns.hidden()) {
cursorMenu1.addMenuItem(new menuItem(getText("Mostra Colonne"), "mColonne", "code:myTable.columns.listInvisible()"));
columnsMenu= new jsDOMenu(210);
for (var x=0;x<hiddenCols.length;x++) {
columnsMenu.addMenuItem(new menuItem(hiddenCols[x].displayName,"","code:hiddenCols["+x+"].showColumn()"));
}
if (hiddenCols.length > 1) {
columnsMenu.addMenuItem(new menuItem("-"));
columnsMenu.addMenuItem(new menuItem(getText("Tutte"),"","code:myTable.columns.show()"));
}
cursorMenu1.items["mColonne"].setSubMenu(columnsMenu);
}
else
cursorMenu1.addMenuItem(new menuItem(getText("Mostra Colonne"), "mColonne", "code:myTable.columns.listInvisible()",false));
}
if (targetElm.tagName=='TD') {
if (myTable.columns.getColByID(colID).filterable)
{
cursorMenu1.addMenuItem(new menuItem(getText("Filtro in base a selezione"), "", filterurl));
cursorMenu1.addMenuItem(new menuItem(getText("Filtro ad esclusione selezione"), "", filterurl+'&filteroption=notEqual'));
}
else
{
cursorMenu1.addMenuItem(new menuItem(getText("Filtro in base a selezione"), "", "",false));
cursorMenu1.addMenuItem(new menuItem(getText("Filtro ad esclusione selezione"), "", "",false));
}
if (filtered)
cursorMenu1.addMenuItem(new menuItem(getText("Rimuovi filtro"), "", removeFilter));
else
cursorMenu1.addMenuItem(new menuItem(getText("Rimuovi filtro"), "", removeFilter,false));
cursorMenu1.addMenuItem(new menuItem("-"));
}
if (myTable.columns.getColByID(colID).sortable) {
cursorMenu1.addMenuItem(new menuItem(getText("Ordinamento crescente"), "", sorturl+'&direction=ASC'));
cursorMenu1.addMenuItem(new menuItem(getText("Ordinamento decrescente"), "", sorturl+'&direction=DESC'));
}
else
{
cursorMenu1.addMenuItem(new menuItem(getText("Ordinamento crescente"), "", "",false));
cursorMenu1.addMenuItem(new menuItem(getText("Ordinamento decrescente"), "", "",false));
}
cursorMenu1.addMenuItem(new menuItem(getText("Copia"), "", "code:copyElement(selectedText)"));
return cursorMenu1;
}
else
return null;
}
function debug()
{
var colOrder='';
var rows=myTable.table.getElementsByTagName('TBODY')[0].getElementsByTagName('TR');
var cols=rows[0].getElementsByTagName('TH');
for (var x=0;x<cols.length;x++)
{
window.alert(myTable.columns.getColByID(cols[x].id).index);
}
}
function createjsDOMenu() {
activatePopUpMenuBy(1, 2);
}
function getRow(element) {
return element.parentNode.rowIndex;
}
function selectElement(element) {
if (isIE()) {
var oRange=document.body.createTextRange();
oRange.moveToElementText(element);
oRange.select();
return oRange.text;
}
else {
var oRange=document.createRange();
oRange.selectNodeContents(element);
var oSelection=window.getSelection();
oSelection.removeAllRanges();
oSelection.addRange(oRange);
return oSelection.toString();
}
}
function copyElement (copyText) {
if (isIE()) {
if (window.clipboardData) { // IE send-to-clipboard method.
window.clipboardData.setData('Text', copyText);
}
}
else {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
if (!str) return false;
str.data=copyText;
var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
if (!trans) return false;
trans.addDataFlavor("text/unicode");
trans.setTransferData("text/unicode",str,copyText.length*2);
var clipid=Components.interfaces.nsIClipboard;
var clip = Components.classes["@mozilla.org/widget/clipboard;1"].getService(clipid);
if (!clip) return false;
clip.setData(trans,null,clipid.kGlobalClipboard);
}
}
function columnGetName (element)
{
var anchors=element.getElementsByTagName("A");
if (anchors.length > 0)
element=anchors[0];
return element.innerHTML;
}
function column (th,parent)
{
this.displayName=columnGetName(th);
this.element=th;
this.fieldName=this.element.id.slice(9);
this.index=getCellIndex(th);
this.parent=parent;
this.table=this.parent.parent;
this.sortable=sortable[this.index];
this.filterable=filterable[this.index];
this.visible=true;
this.hideColumn=column_hideColumn;
this.showColumn=column_showColumn;
this.setVisible=column_setVisible;
this.setWidth=column_setWidth;
this.retrieveStatus=column_retrieveStatus;
this.getAbsoluteIndx=column_getAbsoluteIndx;
this.getRelativeIndx=column_getRelativeIndx;
this.retrieveStatus();
}
function column_getAbsoluteIndx()
{
if (isIE()) {
var x=0;
while (this.table.rows[0].getElementsByTagName('TH')[x].id != this.element.id)
x++;
return x;
}
else
return this.element.cellIndex;
}
function column_getRelativeIndx()
{
if (isIE())
return this.element.cellIndex;
else
{
var colIndx=this.element.cellIndex;
for (var x=0;x<this.element.cellIndex;x++) {
if (this.table.rows[0].getElementsByTagName('TH')[x].style.display=='none')
colIndx=colIndx-1;
}
return colIndx;
}
}
function column_retrieveStatus()
{
var status=getCookie(tableClass+"."+this.fieldName);
if (status=='true' || status==null)
this.visible=true;
else
{
this.visible=false;
this.hideColumn();
}
var width=getCookie(tableClass+"."+this.fieldName+".width");
if (width != null)
{
this.element.style.width=width;
this.table.table.getElementsByTagName('colgroup')[0].getElementsByTagName('col')[this.getRelativeIndx()].width=width;
}
}
function column_setVisible(state) {
this.visible=state;
if (state)
document.cookie= tableClass+"."+this.fieldName+"=true";
else
document.cookie= tableClass+"."+this.fieldName+"=false";
}
function column_setWidth(width) {
document.cookie= tableClass+"."+this.fieldName+".width="+width;
}
function column_hideColumn () {
var toBeRemoved=this.table.table.getElementsByTagName('colgroup')[0].getElementsByTagName('col')[0];
this.table.table.getElementsByTagName('colgroup')[0].removeChild(toBeRemoved);
var col=document.getElementById('movTable_'+this.fieldName);
var displayIndex= (col != null) ? getCellIndex(col) : this.index;
var rows=this.table.rows;
for (var x=0;x<rows.length;x++) {
if (x>0)
var cols=rows[x].getElementsByTagName('TD');
else
var cols=rows[x].getElementsByTagName('TH');
cols[displayIndex].style.display='none';
}
this.setVisible(false);
}
function column_showColumn() {
var rows=this.table.rows;
var displayIndex= this.getAbsoluteIndx();
for (var x=0;x<rows.length;x++) {
if (x>0)
var cols=rows[x].getElementsByTagName('TD');
else
var cols=rows[x].getElementsByTagName('TH');
cols[displayIndex].removeAttribute('style');
}
this.setVisible(true);
var colEl= document.createElement("COL");
this.table.table.getElementsByTagName('colgroup')[0].appendChild(colEl);
}
function columns (tr,parent)
{
this.item= new Array();
this.parent= parent;
this.listInvisible=columns_listInvisible;
this.hidden=columns_hidden;
this.show=columns_show;
this.getColByID=columns_getColByID;
this.recol=columns_recol;
this.setOrder=columns_setOrder;
var cols=tr.getElementsByTagName('TH');
for (var x=0;x<cols.length;x++) {
this.item[x]=new column(cols[x],this);
}
if (this.listInvisible().length==this.item.length)
{
this.item[0].showColumn();
}
}
function columns_getColByID(id)
{
for (var x=0;x<this.item.length;x++)
if (this.item[x].element.id==id)
return this.item[x];
return null;
}
function columns_listInvisible ()
{
var hiddenColumns=new Array();
for (var x=0;x<this.item.length;x++)
{
if (this.item[x].visible==false)
hiddenColumns[hiddenColumns.length]=this.item[x];
}
return hiddenColumns;
}
function columns_hidden ()
{
var status=false;
for (var x=0;x<this.item.length;x++)
{
if (this.item[x].visible==false)
status=true;
}
return status;
}
function columns_show ()
{
var invisible=this.listInvisible();
var x;
for (var x=0;x<invisible.length;x++)
{
invisible[x].showColumn();
}
}
function columns_setOrder ()
{
var colOrder='';
rows=this.parent.table.getElementsByTagName('TBODY')[0].getElementsByTagName('TR');
var cols=rows[0].getElementsByTagName('TH');
for (var x=0;x<cols.length;x++)
{
colOrder+=this.getColByID(cols[x].id).fieldName;
if (x<(cols.length-1))
colOrder+=':';
}
document.cookie= tableClass+"."+"colOrder="+colOrder;
}
function columns_recol(ncol, tocol) {
var itocol = parseInt(tocol) ;
var incol = parseInt(ncol) ;
if (itocol==incol)
return 0;
var oTable = this.parent.table;
var nbRows = oTable.getElementsByTagName('TR').length;
var cols;
for (var i=1; i<nbRows+1; i++) {
var curNode = oTable.getElementsByTagName('TR')[i-1];
if (i==1)
cols=curNode.getElementsByTagName('TH');
else
cols=curNode.getElementsByTagName('TD');
var numTDs=cols.length;
var fstTDNode = cols[itocol];
var curTDNode = cols[incol];
if(itocol<incol)
curNode.insertBefore(curTDNode, fstTDNode);
else {
var fstTDNode = cols[itocol];
var curTDNode = cols[incol];
DOMNode_insertAfter(curTDNode, fstTDNode);
}
}
this.setOrder();
}
function table (tableName)
{
this.table=document.getElementById(tableName);
this.rows=this.table.getElementsByTagName('TBODY')[0].getElementsByTagName('TR');
this.columns=new columns(this.rows[0],this);
}
function getCookieVal (offset) {
var endstr = document.cookie.indexOf (';', offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function getCookie (name) {
var arg = name + '=';
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(' ', i) + 1;
if (i == 0) break;
}
return null;
}
function mouseDown(e)
{
if (isIE())
e=window.event;
var el = (e.target) ? e.target : e.srcElement;
var x = (e.target) ? e.pageX : (window.event.clientX)+document.body.scrollLeft;
checkHeaderResize(el, x);
if ((activeHeaders) && (el.tagName == 'TH') && JScolresize) {
activeHeaders[0] = true;
}
else if (el.tagName == 'TH' && JScolmove) {
moveColumn=el;
originalOnSelect=document.onselectstart;
document.onselectstart=new Function ("return false");
return false;
}
};
function mouseUp (e) {
var el = (e.target) ? e.target : e.srcElement;
var x = (e.target) ? e.pageX : (window.event.clientX)+document.body.scrollLeft;
var y = (e.target) ? e.pageY : (window.event.clientY)+document.body.scrollTop;
if (activeHeaders) {
if (activeHeaders[0]) {
myTable.columns.item[activeHeaders[1].cellIndex].setWidth(myTable.columns.item[activeHeaders[1].cellIndex].element.style.width);
checkHeaderResize(el, x);
}
activeHeaders = null;
}
if (moveColumn && dragHeaderDiv) {
efpi(document.body,x,y,'TH');
document.body.removeChild(dragHeaderDiv);
dragHeaderDiv=null;
if (topElementByTag != null)
{
myTable.columns.recol(getCellIndex(moveColumn),getCellIndex(topElementByTag));
topElementByTag=null;
}
moveColumn = null;
document.onselectstart=originalOnSelect;
}
else if (moveColumn) //Click su colonna
{
moveColumn = null;
document.onselectstart=originalOnSelect;
}
}
function mouseMove(e)
{
var el = (e.target) ? e.target : e.srcElement;
var x = (e.target) ? e.pageX : (window.event.clientX)+document.body.scrollLeft;
if ((activeHeaders) && (activeHeaders[0])) {
var w = activeHeaders[2] + x - activeHeaders[3];
var tw = ((w - activeHeaders[2]) + activeHeaders[4]) + 1;
myTable.table.style.width = tw + 'px';
if (w > 5) {
activeHeaders[1].style.width = w + 'px';
myTable.table.style.width = tw + 'px';
var colIndx=myTable.columns.getColByID(activeHeaders[1].id).getRelativeIndx();
myTable.table.getElementsByTagName('colgroup')[0].getElementsByTagName('col')[colIndx].style.width = w + 'px';
}
}
else if (moveColumn)
{
var y = (e.target) ? e.pageY : (window.event.clientY)+document.body.scrollTop;
if(dragHeaderDiv)
{
dragHeaderDiv.style.left = x+'px';
}
else
{
var debug=moveColumn;
dragHeaderDiv = document.createElement("DIV");
dragHeaderDiv.id = "dragHeaderDiv";
dragHeaderDiv.className = "thDrag";
dragHeaderDiv.style.position = "absolute";
dragHeaderDiv.style.left = x+'px';
dragHeaderDiv.style.top = getTopPos(moveColumn)+'px';
dragHeaderDiv.style.width = moveColumn.offsetWidth+'px';
dragHeaderDiv.style.height = moveColumn.offsetHeight+'px';
dragHeaderDiv.innerHTML=moveColumn.innerHTML;
dragHeaderDiv.style.zIndex = 10000;
dragHeaderDiv.style.MozOpacity = 0.7;
dragHeaderDiv.style.filter = "alpha(opacity=70)";
dragHeaderDiv.style.backgroundColor ="white";
document.body.appendChild(dragHeaderDiv);
}
}
else if (el.tagName == 'TH') {
checkHeaderResize(el, x);
}
};
function checkHeaderResize(el, x) {
if (el.tagName != 'TH' || !JScolresize)
return;
if (el.tagName == 'IMG') { el = el.parentNode; }
window.status=el.id;
var prev = getPreviosSiblingByTagName(el,'TH')
var next = el.nextSibling;
var left = getLeftPos(el);
var right = left + el.offsetWidth;
var l = (x - 5) - left;
var r = right - x;
if ((l < 5) && (prev)) {
el.style.cursor = 'e-resize';
activeHeaders = [false, prev, prev.offsetWidth - 5, x, myTable.table.offsetWidth];
}
else if (r < 5) {
el.style.cursor = 'e-resize';
activeHeaders = [false, el, el.offsetWidth - 5, x, myTable.table.offsetWidth];
}
else if (activeHeaders) {
activeHeaders = null;
el.style.cursor = 'default';
el.style.backgroundColor = '';
}
};
function getLeftPos(_el) {
var x = 0;
for (var el = _el; el; el = el.offsetParent) {
x += el.offsetLeft;
}
return x;
}
function getTopPos(_el) {
var y= 0;
for (var el = _el; el; el = el.offsetParent) {
y += el.offsetTop;
}
return y;
}
function getPreviosSiblingByTagName(el,tagName) {
var sib=el.previousSibling;
while (sib) {
if ((sib.tagName==tagName) && (sib.style.display!='none')) return sib;
sib=sib.previousSibling;
}
return null;
}
function getParentByTagName(el,tagName) {
var par=el.parentNode;
while (par) {
if (par.tagName==tagName) return par;
par=par.parentNode;
}
return null;
}
function efpi(from, x,y, tag)
{
var n,i;
for(i=0;i<from.childNodes.length;i++)
{
n=from.childNodes[i];
if( n.nodeType != 3 && n.style.display != 'none' )
{
var sx = getLeftPos(n);
var sy = getTopPos(n);
var ex = sx + n.offsetWidth;
var ey = sy + n.offsetHeight;
if ( x > sx && x < ex && y > sy && y < ey)
{
topElement=n;
if (n.tagName==tag)
{
topElementByTag=n;
}
efpi(n,x,y,tag);
}
}
}
}
function DOMNode_insertAfter(newChild,refChild)
{
var parentx=refChild.parentNode;
if(parentx.lastChild==refChild) { return parentx.appendChild(newChild);}
else {return parentx.insertBefore(newChild,refChild.nextSibling);}
}
function getCellIndex(el)
{
if (isIE()) {
var table=getParentByTagName(el,'TABLE');
var temp=getAbsoluteIndex(table.rows(0),el.cellIndex);
return temp;
}
else
return el.cellIndex;
}
function getAbsoluteIndex(t,relIndex)
{
var countnotvisible=0;
var countvisible=0;
for (var i=0;i<t.cells.length;i++) {
var cell=t.cells(i);
if (cell.style.display=='none') countnotvisible++; else countvisible++;
if (countvisible>relIndex)
{
return i;
}
}
return i;
}
function getColID(el)
{
if (el.tagName=='TH')
return el.id;
else
var table=getParentByTagName(el,'TABLE');
var realIndex=getCellIndex(el);
return table.getElementsByTagName('TBODY')[0].getElementsByTagName('TR')[0].getElementsByTagName('TH')[realIndex].id;
}
allExceptFilter = new Array( "BUTTON.*",
"IMG.*",
"INPUT.*",
"OBJECT.*",
"OPTION.*",
"SELECT.*",
"TEXTAREA.*");
function getText(stringa)
{
if (typeof (getTextStrings) == "undefined")
return stringa;
var translated= getTextStrings[stringa] != '' ? getTextStrings[stringa] : stringa;
return translated;
}
Documentation generated by
JSDoc on Tue Apr 26 20:20:26 2005