if(jQuery) (function($){ $.extend($.fn, { violetGrid : function (o) { if( !o ) var o = {}; if( o.data == undefined ) o.data = null; if( o.draggable == undefined ) o.draggable = false; if( o.manager == undefined) o.manager = null; var oContainer = this; var createNode = function (node) { if( !node ) var node = {}; if( node.item == undefined ) node.item = null; //item.id, item.name, item.parentID if( node.isDirectory == undefined ) node.isDirectory = false; if( node.showContextMenu == undefined ) node.showContextMenu = true; var icon = (node.item.minetype != undefined) ? 'icon-' + node.item.minetype: 'icon-directory'; var type = (node.item.minetype != undefined) ? node.item.minetype: 'directory'; var div = $('
',{'class':icon}); var inputID = $('',{'class':'id', type:'hidden',value:node.item.id}); var inputName = $('',{'class':'name',type:'hidden',value:node.item.name}); var inputType = $('',{'class':'type',type:'hidden',value:type}); var a = $('',{id: node.item.id,href: '#',rel: node.item.name,text: node.item.name}); var divLink = $('',{'class':'file-name'}).append(a,inputID,inputName,inputType); var li = $('',{'class':'vscell'}).append(div, divLink); bindNodeEvents(li); return li; } var bindNodeEvents = function (node) { $(node).bind("click", function (e){ if(e.button == 0)nodeClick(this,e);return false;}); } var nodeClick = function (node, event) { if (event.ctrlKey) { if (!isHightLight(node)) hightlightNode(node); else clearHightLightNode(node); } else if (event.shiftKey) { var firstItem = $(oContainer).find('> UL > LI > DIV[class^="icon-"][class$="selected"]:first-child').parent(); var aryNode = $(oContainer).find('> UL > LI > DIV[class^="icon-"]').parent(); var start = aryNode.index(firstItem); var finish = aryNode.index(node); aryNode.slice(Math.min(start, finish), Math.max(start, finish) + 1).each( function (i,o){hightlightNode(o);}); } else { clearAllHightLightNode(node); hightlightNode(node); } } var nodeDblClick = function (node) { } var hightlightNode = function (node) { $(node).find('> DIV').addClass('selected'); } var isHightLight = function (node) { return $(node).find('> DIV').hasClass('selected'); } var clearAllHightLightNode = function () { $(oContainer).find('> UL > LI > DIV').removeClass('selected'); } var clearHightLightNode = function (node) { $(node).find('> DIV').removeClass('selected'); } var initGrid = function () { var ul = $('