/* WebGUI Asset Manager Table based upon the sortable table by Matt Kruse http://www.mattkruse.com/ */ var sort_object; var sort_column; var reverse=0; // Constructor for AssetManager object function AssetManager() { // Properties this.name = 'assetManager'; this.sortcolumn=""; this.dosort=true; this.tablecontainsforms=false; // Methods this.AddLine = AssetManager_AddLine; this.AddColumn = AssetManager_AddColumn; this.AddButton = AssetManager_AddButton; this.Write = AssetManager_Write; this.SortRows = AssetManager_SortRows; this.AddLineSortData = AssetManager_AddLineSortData; this.AddFormHidden = AssetManager_AddFormHidden; // Structure this.Columns = new Array(); this.Lines = new Array(); this.Buttons = new Array(); this.FormHidden = new Array(); //***************Properties used for dragging this.dom=document.getElementById&&!document.all; this.documentElement = document.documentElement; if (document.compatMode == "BackCompat") { this.documentElement = document.body; } this.focusObject = null; this.overObject = null; //this.topLevelElement=this.dom? "HTML" : "BODY" this.topLevelElement="HTML"; this.scrollJump = 25; this.dragEnabled = false; this.x = 0; this.y = 0; this.lastZIndex = 1000; this.draggableObjects = new Array(); this.metaData = new Array(); this.select = AssetManager_select; this.clear = AssetManager_clear; this.addAssetMetaData = AssetManager_addAssetMetaData; this.initializeDragEventHandlers = AssetManager_initializeDragEventHandlers; this.dragStart = AssetManager_dragStart; this.adjustScrollBars = AssetManager_adjustScrollBars; this.dragStop = AssetManager_dragStop; this.spy = AssetManager_spy; this.move = AssetManager_move; this.bringToFront = AssetManager_bringToFront; //*****************End Properties used for dragging } // Add a hidden input field to the form function AssetManager_AddFormHidden( hiddenObj ) { var index = this.FormHidden.length; this.FormHidden[index] = hiddenObj; } // Add a line to the grid function AssetManager_AddLine() { var index = this.Lines.length; this.Lines[index] = new Array(); for (var i=0; i tag for this column (ex: BGCOLOR="red") // align= Alignment of data in cells // type = type of data in this column (numeric, money, etc) - default alphanumeric function AssetManager_AddColumn(name,td,align,type) { var index = this.Columns.length; this.Columns[index] = new Object; this.Columns[index].name = name; this.Columns[index].td = td; this.Columns[index].align=align; this.Columns[index].type = type; if (type == "form") { this.tablecontainsforms=true; } } // Print out the table function AssetManager_Write() { var open_div = ""; var close_div = ""; //added drag image document.write('
'); document.write('
'); document.write(''); document.write(''); for (var i=0; i'+this.Columns[i].name+''; document.write(''); } document.write(''); for (var i=0; i'); for (var j=0; j"; close_div= ""; document.write(""); //added for dragging to map draggable objects and meta data objects if (j==1) { this.draggableObjects[i] = document.getElementById(div_name); if (this.metaData && this.metaData[i]) { this.draggableObjects[i].metaData = this.metaData[i]; } } //end added for dragging } document.write(""); } document.write('
'+title+'
"+open_div+this.Lines[i][j].text+close_div+"
'); for (var j=0; j'); } for (var j=0; j < this.FormHidden.length; j++) { var myHidden = this.FormHidden[j]; document.write(''); } document.write(''); } // Sort the table and re-write the results to the existing table function AssetManager_SortRows(table,column) { sort_object = table; if (!sort_object.dosort) { return; } if (sort_column == column) { reverse=1-reverse; } else { reverse=0; } sort_column = column; // Save all form column contents into a temporary object // This is a nasty hack to keep the current values of form elements intact if (table.tablecontainsforms) { var iname="1"; var tempcolumns = new Object(); var tempcheckboxes = new Object(); for (var i=0; i parseFloat(b[column].data) ) { return 1; } return 0; } ); } else if (table.Columns[column].type == "money") { // Sort by Money table.Lines.sort( function by_name(a,b) { if (parseFloat(a[column].data.substring(1)) < parseFloat(b[column].data.substring(1)) ) { return -1; } if (parseFloat(a[column].data.substring(1)) > parseFloat(b[column].data.substring(1)) ) { return 1; } return 0; } ); } else if (table.Columns[column].type == "date") { // Sort by Date table.Lines.sort( function by_name(a,b) { if (Date.parse(a[column].data) < Date.parse(b[column].data) ) { return -1; } if (Date.parse(a[column].data) > Date.parse(b[column].data) ) { return 1; } return 0; } ); } else { // Sort by alphanumeric table.Lines.sort( function by_name(a,b) { if (a[column].data+"" < b[column].data+"") { return -1; } if (a[column].data+"" > b[column].data+"") { return 1; } return 0; } ); } if (reverse) { table.Lines.reverse(); } for (var i=0; i(x1 + fudge) && x < (x1 + obj.offsetWidth + fudge)) { //add 13 pixels for ie since border widths are included in calculation //var fudge = this.dom? 0:13; var fudge = 13; if (y> (y1 + fudge) && y< (y1 + obj.offsetHeight + fudge)) { return obj; } } } return returnObj; } //checks to see if the scroll bars need to be adjusted. Called durring dragging function AssetManager_adjustScrollBars(e) { var scrY=0; var scrX=0; if (!this.documentElement) return; var topScroll = this.documentElement.scrollTop; var leftScroll = this.documentElement.scrollLeft; var innerHeight = this.documentElement.clientHeight; var innerWidth = this.documentElement.clientWidth; if (e.clientY > innerHeight-this.scrollJump) { if (e.clientY + topScroll < this.pageHeight - (this.scrollJump + 40)) { scrY=this.scrollJump; window.scroll(leftScroll,topScroll + scrY); this.y-=scrY; } }else if (e.clientY < this.scrollJump) { if (topScroll < this.scrollJump) { scrY = topScroll; }else { scrY=this.scrollJump; } window.scroll(leftScroll,topScroll - scrY); this.y+=scrY; } if (e.clientX > innerWidth-this.scrollJump) { if (e.clientX + leftScroll < this.pageWidth - (this.scrollJump + 40)) { scrX=this.scrollJump; window.scroll(leftScroll + scrX,topScroll); this.x-=scrX; } }else if (e.clientX < this.scrollJump) { if (leftScroll < this.scrollJump) { scrX = leftScroll; }else { scrX=this.scrollJump; } window.scroll(leftScroll - scrX,topScroll); this.x+=scrX; } } //adds the asset meta data to an array. When the write method is called, the meta //data is appended to the draggable divs as a meta data property function AssetManager_addAssetMetaData(url, rank,title) { var obj = new Object(); obj.url = url; obj.rank = rank; obj.title = title; //this.metaData[rank-1] = obj; this.metaData[this.metaData.length] = obj; } //********Event Handlers*********** function AssetManager_initializeDragEventHandlers() { document.onmousedown=AssetManager_documentMouseDown; document.onmouseup=AssetManager_documentMouseUp; document.onmousemove=AssetManager_documentMouseMove; /* // Failed attempt at making it more compatible. var oldOnMouseDown = (document.onmousedown) ? document.onmousedown : function () {}; document.onmousedown= function () {oldOnMouseDown();AssetManager_documentMouseDown();}; var oldOnMouseUp = (document.onmouseup) ? document.onmouseup : function () {}; document.onmouseup= function () { oldOnMouseUp();AssetManager_documentMouseUp();}; var oldOnMouseMove= (document.onmousemove) ? document.onmousemove : function () {}; document.onmousemove= function () { oldOnMouseMove();AssetManager_documentMouseMove();}; */ } /* called on document mouse down. Gets a reference to the asset manager and passes in event*/ function AssetManager_documentMouseDown(e) { var dom = document.getElementById&&!document.all; e=dom? e : event; obj =dom? e.target : e.srcElement if (e.button != 2) { assetManager.dragStart(obj,e.clientX,e.clientY); } return false; } /* called on document mouse up. Gets a reference to the asset manager and passes in event*/ function AssetManager_documentMouseUp(e) { var dom = document.getElementById&&!document.all; e=dom? e : event; obj =dom? e.target : e.srcElement assetManager.dragStop(); return false; } /* called on document mouse move. Gets a reference to the asset manager and passes in event*/ function AssetManager_documentMouseMove(e) { var dom = document.getElementById&&!document.all; e=dom? e : event; assetManager.move(e); return false; } //******End Event Handlers***********