﻿
var List = function(refData, Parent) { var refThis = this; refThis.refData = refData; var refDoc = new $doc(Parent.document); if(refData.vStyle == null) refData.vStyle = "sList"; var selectedItem = null; this.Init = function() { var divList = refDoc.newElement("div", refData.vStyle); refThis.eList = divList; Parent.appendChild(divList); if(refThis.refData.cntr) { Container(divList); refThis.refData.cntr.push(divList); } divList.insertItem = function(item) { function createItemText(text) { var acronym = refDoc.newElement("acronym"); acronym.setAttribute("title", text); var itemText = refDoc.newElement("span", "Text"); itemText.appendChild(refDoc.newText(text)); acronym.appendChild(itemText); return acronym; } function ToBeItem(element) { element.item = item; element.className = "Item"; element.onmouseover = function() { if(this.className != "Focus") this.className = "Over"; }; element.onmouseout = function() { if(this.className != "Focus") this.className = "Item"; }; element.onclick = function(event) { if(this != selectedItem) { if(selectedItem) { selectedItem.className = "Item"; } if(refThis.refData.callback) { var data = this.item.data; if(data == null) data = this.item.text; refThis.refData.callback('listItem', data, event); } } selectedItem = this; this.className = "Focus"; }; if(refThis.refData.cntr) { element.cntr = refThis.refData.cntr; DragDrop.Enable(element); } } function insertLargeIconItem(item) { var divItem = refDoc.newElement("div", "Item"); divItem.item = item; var eParent = divItem; if(item.tips) { var tip = refDoc.newElement("acronym"); tip.title = item.tips; divItem.appendChild(tip); eParent = tip; } if(item.licon) { var imgIcon = refDoc.newElement("img", "Icon"); imgIcon.setAttribute("src", item.licon); eParent.appendChild(imgIcon); } if(item.text) { var itemText = createItemText(item.text); eParent.appendChild(itemText); } ToBeItem(divItem); refThis.eList.appendChild(divItem); } function insertSmallIconItem(item) { var divItem = refDoc.newElement("div", "Item"); divItem.item = item; if(item.icon) { var imgIcon = refDoc.newElement("img", "Icon"); imgIcon.setAttribute("src", item.icon); divItem.appendChild(imgIcon); } if(item.text) { var itemText = createItemText(item.text); divItem.appendChild(itemText); } ToBeItem(divItem); refThis.eList.appendChild(divItem); } function insertReportListItem(item) { var row = refThis.eTable.insertRow(-1); var cellIcon = row.insertCell(0); if(item.icon) { var imgIcon = refDoc.newElement("img", "Icon"); imgIcon.setAttribute("src", item.icon); cellIcon.appendChild(imgIcon); } var cellText = row.insertCell(1); if(item.text) { var itemText = createItemText(item.text); cellText.appendChild(itemText); cellText.description = item.description; } ToBeItem(row); } switch(refData.vStyle) { case 'lList': insertLargeIconItem(item); break; case 'sList': insertSmallIconItem(item); break; case 'rList': var table = refDoc.newElement("table", "rList"); refThis.eTable = table; refThis.eList.appendChild(table); insertReportListItem(item); break; } }; if(refData.items) { for(var i=0; i<refData.items.length; i++) { divList.insertItem(refData.items[i]); } } if(refData.callback) { refData.callback('list', refThis); } }; this.Empty = function() { var element = refThis.eList; while(element.firstChild) { _removeNode(element.firstChild); } refThis.eList.className = refData.vStyle; refThis.eTable = null; }; this.Load = function(url) { function onLoad(response) { if(response) { var rootNode = response.responseXML.documentElement; var root = rootNode.getElementsByTagName("list")[0]; if(root) { var items = root.getElementsByTagName("item"); if(items) { if(refData.items) { refData.items.length = 0; } else { refData.items = []; } for(var i=0; i<items.length; i++) { var name = items[i].getAttribute("name"); var lid = items[i].getAttribute("lid"); var size = items[i].getAttribute("size"); var url = items[i].getAttribute("url"); var wtime = items[i].getAttribute("wtime"); var flag = items[i].getAttribute("flag"); var type = items[i].getAttribute("type"); var opts = items[i].getAttribute("opts"); var icon = items[i].getAttribute("icon"); var licon = items[i].getAttribute("licon"); if(icon == null) icon = "/img/item.gif"; if(licon == null) licon = "/img/litem.jpg"; var data = null; if(url != null || lid != null) { data = {lid:lid, name:name, size:size, opts:opts, url:url, wtime:wtime, flag:flag, type:type}; } var item = {icon:icon, licon:licon, text:name, data:data}; refData.items.push(item); refThis.eList.insertItem(item); } } } } } this.Empty(); if(url) { Request.GET(url, onLoad); } else if(refData.items) { for(var i=0; i<refData.items.length; i++) { refThis.eList.insertItem(refData.items[i]); } } }; this.vStyle = function(vs) { if(vs != refData.vStyle) { switch(vs) { case "lList": case "sList": case "rList": refData.vStyle = vs; refThis.Load(); break; } } }; this.Move = function(lid, up) { var index = -1; var items = refData.items; for(var i=0; i<items.length; i++) { if(items[i].data.lid == lid) { index = i; break; } } if(index > -1) { var f = index; var t = index; if(up == true && index > 0) { f = f - 1; } else if(up == false && index < items.length-1) { t = t + 1; } if(f < t) { var lids = ''; for(var i=0; i<items.length; i++) { if(i == f) { lids += items[t].data.lid; } else if(i == t) { lids += items[f].data.lid; } else { lids += items[i].data.lid; } lids += ','; } return lids; } } return null; }; this.Free = function() { _removeNode(refThis.eList); delete refDoc; delete refThis; }; this.Init(); }; 
