// This file was generated by ScriptServer.class.php at 2008-09-14 21:35:12
// Source file's mtime was 2008-09-14 21:33:42

function FileBrowser(fbWorkspace) {
this.imgExpanded = '';
this.imgCollapsed = '';
this.imgNoChildern = '';
this.imgAlfaPixel = '';
this.pxIndent = 20;
this.pxImgPreview = 320;
this.styleImgPreview = '';
this.pxImgPreviewMargin = 20;
if (null==fbWorkspace)
fbWorkspace = 'fbWorkspace';
 this.canvas = document.getElementById(fbWorkspace);
 this.xmlHttp = null;
FileBrowser.prototype.init = function() {
patchInnerText();
this.xmlHttp = createXmlHttp();
if (null==this.xmlHttp)
return;
var rowEnumerator = new ChildElementsEnumerator(this.canvas, 'tr');
var row;
while (null!= (row = rowEnumerator.next()))
this.initNode(row, 0);
}
FileBrowser.prototype.updateVisual = function() {
var rowEnumerator = new ChildElementsEnumerator(this.canvas, 'tr');
var row;
var rowNumber = 0;
while (null!= (row = rowEnumerator.next()))
if (row.style.display!='none')
row.className = rowNumber++%2?'odd':'even';
}
FileBrowser.prototype.collapse = function() {
var stack = this.fb_row.fb_childList.concat();
while (0!=stack.length) {
var current = stack.pop();
stack = stack.concat(current.fb_childList);
current.style.display = 'none';
}
this.src = this.fb.imgCollapsed;
this.alt = '+';
this.fb_row.fb_isExpanded = false;
}
FileBrowser.prototype.expand = function() {
var list = this.fb_row.fb_childList;
for (i in list) {
var current = list[i]
current.style.display = '';
if (current.fb_isExpanded) {
var td = (new ChildElementsEnumerator(current, 'td')).next();
var img = (new ChildElementsEnumerator(td, 'img')).next();
this.fb.expand.call(img);
}
}
this.src = this.fb.imgExpanded;
this.alt = '-';
this.fb_row.fb_isExpanded = true;
}
FileBrowser.prototype.onAsyncResponse = function() {
var xmlHttp = this.fb.xmlHttp;
if (xmlHttp.readyState!=4)
return;
var asyncResponse;
try {
if (xmlHttp.status!=200)
throw new Error('Negative server response');
var doc = document.createElement('response');
if (-1==navigator.userAgent.search(/konqueror/i))
doc.innerHTML = xmlHttp.responseText;
else
doc = document.importNode(xmlHttp.responseXML.documentElement, true);
var list = doc.getElementsByTagName('tbody');
if (list.length!=1)
throw new Error('Corrupted data');
asyncResponse = list[0];
}
catch (e) {
var jsLog = document.getElementById('jsLog');
if (null==jsLog)
return;
var p = document.createElement('p');
p.innerHTML = '<b>Exception caught:</b> ' + e.message;
jsLog.appendChild(p);
return;
}
this.fb_row.fb_isDownloaded = true;
this.fb_row.fb_isExpanded = true;
this.src = this.fb.imgExpanded;
this.alt = '-';
if (0==asyncResponse.getElementsByTagName('tr').length) {
this.onclick = null;
return;
}
var rowEnumerator = new ChildElementsEnumerator(this.fb.canvas, 'tr');
if (null==this.fb_row)
return;
var rowAfter;
while (this.fb_row!= (rowAfter = rowEnumerator.next()));
rowAfter = rowEnumerator.next();
var rowEnumerator = new ChildElementsEnumerator(asyncResponse, 'tr');
var row;
while (null!= (row = rowEnumerator.next())) {
var toAppend = row.cloneNode(true);
this.fb.initNode(toAppend, this.fb_row.fb_depth+1);
this.fb.canvas.insertBefore(toAppend, rowAfter);
this.fb_row.fb_childList.push(toAppend);
}
this.fb.updateVisual.call(this.fb);
}
FileBrowser.prototype.initNode = function(row, nodeDepth) {
row.fb_depth = nodeDepth;
row.fb_isDirectory = false;
row.fb_isDownloaded = false;
row.fb_isExpanded = false;
row.fb_childList = new Array();
var cellEnumerator = new ChildElementsEnumerator(row, 'td');
var imgList = cellEnumerator.next().getElementsByTagName('img');
if (imgList.length==0)
return;
var img = imgList[0];
var textCell = cellEnumerator.next()
var linkList = textCell.getElementsByTagName('a');
if (0==linkList.length)
return;
var fileLink = linkList[0];
fileLink.onmouseover = function(e) {
try {
var text = this.innerText;
if (
-1==text.search(/\.png/i) &&
-1==text.search(/\.jpe?g/i) &&
-1==text.search(/\.gif/i))
return;
var imgPreview = document.getElementById('fbImgPreview');
var imgSrc = this.getAttribute('href') + '?action=thumbnail' + this.fb.pxImgPreview;
imgPreview.innerHTML = 
'<img src="' + imgSrc + '" alt="' + text + '" ' +
'style="' + this.fb.styleImgPreview + '"/>';
var bKonqueror = (-1!=navigator.appName.search(/konqueror/i));
var bFirefox = (-1!=navigator.appName.search(/netscape/i));
var bExplorer = (-1!=navigator.appName.search(/explorer/i));
if (-1!=navigator.userAgent.search(/opera/i))
bKonqueror = bFirefox = bExplorer = false;
 if (bExplorer) {
var img = imgPreview.getElementsByTagName('img')[0];
img.style.position = 'absolute';
var version = parseFloat(navigator.appVersion.split("MSIE")[1])
if (version < 5.5) {
img.style.display='none';
return;
}
var page = (version<7)?
document.body:              // IE6, IE5.5
document.documentElement;   // IE7
img.style.top = event.clientY + 20 + page.scrollTop + 'px';
img.style.left = event.clientX + 20 + page.scrollLeft + 'px';
}
}
catch (e) {
return;
}
}
fileLink.onmouseout = function() {
var imgPreview = document.getElementById('fbImgPreview');
if (-1==navigator.userAgent.search(/opera/i))
imgPreview.innerHTML = '';
else {
var boxSize = this.fb.pxImgPreview + this.fb.pxImgPreviewMargin;
imgPreview.innerHTML = 
'<img src="' + this.fb.imgAlfaPixel +
'" alt="" width="' + boxSize + '" height="' + boxSize + '"/>';
var img = imgPreview.getElementsByTagName('img')[0];
img.style.zIndex = '-2';
}
}
fileLink.fb = this;
var visualDepth = nodeDepth*this.pxIndent + 'px';
textCell.style.paddingLeft = visualDepth;
img.style.left = visualDepth;
if (img.className == 'imgCollapsed')
row.fb_isDirectory = true;
else
return;
var asyncLink = fileLink.getAttribute('href') + '?action=asyncDispatch';
img.onclick = function() {
try {
var cbInternal = function() {
FileBrowser.prototype.onAsyncResponse.call(arguments.callee.img);
}
cbInternal.img = this;
if (this.fb_row.fb_isExpanded)
this.fb.collapse.call(this);
else if (this.fb_row.fb_isDownloaded)
this.fb.expand.call(this);
else {
var xmlHttp = this.fb.xmlHttp;
xmlHttp.open('GET', arguments.callee.fbAsyncLink, true);
xmlHttp.onreadystatechange = cbInternal;
xmlHttp.send(null);
}
this.fb.updateVisual.call(this.fb);
}
catch (e) {
var jsLog = document.getElementById('jsLog');
if (null==jsLog)
return;
var p = document.createElement('p');
p.innerHTML = '<b>Exception caught:</b> ' + e.message;
jsLog.appendChild(p);
}
}
img.onclick.fbAsyncLink = asyncLink;
img.fb = this;
img.fb_row = row;
}
}
// File generated in 0.027 s
