var filelabels = Array();
var fileinfo = Array();
/* Default settings */
var language_id = "default";
var commasep = ",";
/* Sets default labels: */
filelabels["default"] = new createFileLabels("Fil","Størrelse","Type","Kræver");
/* Default: Danish */
fileinfo["default"] = Array();
fileinfo["default"]["PDF"] = new createFileDesc("PDF dokument", "Adobe Acrobat Reader", "http://www.adobe.com/products/acrobat/readstep2.html");
fileinfo["default"]["PPT"] = new createFileDesc("Power Point præsentation", "Microsoft Power Point", "http://www.microsoft.com/office/000/viewers.asp");
fileinfo["default"]["DOC"] = new createFileDesc("Word dokument", "Microsoft Word", "http://www.microsoft.com/office/000/viewers.asp");
fileinfo["default"]["BMP"] = new createFileDesc("Bitmap grafikfil","","");
fileinfo["default"]["EPS"] = new createFileDesc("EPS grafikfil","","");
fileinfo["default"]["JPG"] = new createFileDesc("JPG grafikfil","","");
fileinfo["default"]["GIF"] = new createFileDesc("GIF grafikfil","","");
fileinfo["default"]["PSD"] = new createFileDesc("Photoshop grafikfil", "Adobe Photoshop", "http://www.adobe.com/products/photoshop/main.html");
fileinfo["default"]["RTF"] = new createFileDesc("RTF dokument","","");
fileinfo["default"]["TIF"] = new createFileDesc("TIFF grafikfil", "", "");
fileinfo["default"]["XLS"] = new createFileDesc("Excel regneark", "Microsoft Excel", "http://www.microsoft.com/office/000/viewers.asp");
fileinfo["default"]["ZIP"] = new createFileDesc("ZIP arkiveringsfil", "", "");
fileinfo["default"]["CSS"] = new createFileDesc("Stylesheet", "", "");
fileinfo["default"]["EXE"] = new createFileDesc("Eksekverbar fil", "", "");
function createFileDesc(description, requires, resource) {
this.description = description;
this.requires = requires;
this.resource = resource;
}
function createFileLabels(fname, fsize, ftype, freqs) {
this.fname = fname;
this.fsize = fsize;
this.ftype = ftype;
this.freqs = freqs;
}
/* Given a full path to a file, return the filename: */
function getFileName(fpath) {
re = /(.+\/)?([^\/]+)$/;
return fpath.replace(re,"$2");
}
/* Given a full path or singular file name, return the extension: */
function getFileExtension(fname) {
re = /.+\.([^\.]+)$/;
ext = fname.replace(re,"$1").toUpperCase();
switch (ext) {
case "JPEG" : ext = "JPG"; break;
case "TIFF" : ext = "TIF"; break;
}
return ext;
}
function getFileDescription(ext) {
if (fileinfo[language_id][ext] != null) {
return fileinfo[language_id][ext].description;
}
else if (fileinfo["default"][ext] != null) {
return fileinfo["default"][ext].description;
}
return "";
}
function getFileReqs(ext) {
if (fileinfo[language_id][ext] != null) {
return fileinfo[language_id][ext].requires;
}
else if (fileinfo["default"][ext] != null) {
return fileinfo["default"][ext].requires;
}
return "";
}
function getFileResource(ext) {
if (fileinfo[language_id][ext] != null) {
return fileinfo[language_id][ext].resource;
}
else if (fileinfo["default"][ext] != null) {
return fileinfo["default"][ext].resource;
}
return "";
}
/* Given a size in bytes, display it with more suitable units */
function formatSize(size) {
range = Array('B','KB','MB','GB');
for (i=0; size >= 1024 && i < range.length; i++) {
size /= 1024;
}
res = ""
if (size > -1) {
res = Math.round(size*100)/100 + ' ' + range[i];
res = res.replace(".",commasep);
}
return res;
}
function filepop(e, fpath, fsize) {
if (ua["dom"]) {
if (language_id != "default" && filelabels[language_id] == null) {
language_id = "default"
}
str = "";
ext = getFileExtension(fpath);
fsize = formatSize(fsize);
fname = getFileName(fpath);
window.status = fname + ' ('+fsize+')';
if (filelabels[language_id]) {
str += '
';
str += '' + filelabels[language_id].fsize + ': ' + fsize + '
';
resource = getFileResource(ext);
desc = getFileDescription(ext);
reqs = getFileReqs(ext);
if (desc != "") {
str += '' + filelabels[language_id].ftype + ': ' + desc + '
';
}
if (reqs != "") {
str += '' + filelabels[language_id].freqs + ': ';
str += (resource != "" ? '
'+reqs+'' : reqs);
str += '
';
}
}
// Clear window.status upon mouseout:
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) targ = targ.parentNode;
// elm = ((e.target) ? e.target : e.srcElement);
elm = targ;
elm.onmouseout = function() {
window.status = "";
return true;
}
showfilepop(e, str);
return true;
}
}
function showfilepop(e, str) {
if (!ua["ie"] && !ua["dom"]) {
return
}
clearhidemenu()
menuobj = document.getElementById("popmenu");
menuobj.thestyle = menuobj.style;
menuobj.innerHTML = '';
menuobj.contentwidth = menuobj.offsetWidth;
menuobj.contentheight = menuobj.offsetHeight;
eventX = ua["ie"] ? event.clientX : ua["moz"] ? e.clientX : e.x;
eventY = ua["ie"] ? event.clientY : ua["moz"] ? e.clientY : e.y;
var rightedge = ua["ie"] ? document.body.clientWidth - eventX : window.innerWidth - eventX;
var bottomedge = ua["ie"] ? document.body.clientHeight - eventY : window.innerHeight - eventY;
if (rightedge < menuobj.contentwidth) {
menuobj.thestyle.left = (ua["iemac"]
? document.body.scrollLeft+eventX-menuobj.contentwidth
: ua["safari"]
? eventX - menuobj.contentwidth
: getPageScroll().x+eventX-menuobj.contentwidth)+"px";
}
else {
menuobj.thestyle.left = (ua["iemac"]
? document.body.scrollLeft+eventX
: ua["safari"]
? eventX
: getPageScroll().x+eventX)+"px";
}
if (bottomedge < menuobj.contentheight) {
menuobj.thestyle.top = (ua["iemac"]
? document.body.scrollTop+eventY-menuobj.contentheight
: ua["safari"]
? eventY
: getPageScroll().y+eventY)+"px";
}
else {
menuobj.thestyle.top = (ua["iemac"]
? document.body.scrollTop+eventY
: ua["safari"]
? eventY
: getPageScroll().y+eventY)+"px";
}
menuobj.thestyle.visibility="visible";
}
/* Old filepop function: parse string and pass on to new function: */
function showmenu(e,str){
var aStr = str.split(": ");
fpath = "";
fname = "";
fsize = "";
freq = "";
fres = "";
fname = (aStr[1] != null ? aStr[1] : "");
fsize = (aStr[2] != null ? aStr[2] : "");
//Get path and file name:
re = /^ ]+)[^<>]*>[^<>]+<\/a>(.+)?$/i;
if (re.test(fname)) {
//Full path:
fpath = fname.replace(re, "$1");
}
else {
re = /^([^\.]+\.([a-z]{2,4}|[A-Z]{2,4})).*$/;
if (re.test(fname)) {
fpath = fname.replace(re,"$1");
}
}
//File name:
fname = getFileName(fpath);
if (fname == fpath) {
fpath = "";
}
//Extension:
ext = getFileExtension(fname);
//Get file size indication:
re = /^(\d+([,\.]\d+)?) (b|kb|mb).*$/i
if (re.test(fsize)) {
units = RegExp.$3.toUpperCase();
fsize = fsize.replace(re, "$1 "+units);
}
else {
re = /^(\d+([,\.]\d+)?).*$/i;
if (re.test(fsize)) {
fsize = fsize.replace(re, formatSize(RegExp.$1));
}
}
fsize = fsize.replace(",", commasep);
window.status = fname + ' ('+fsize+')';
str = "";
if (filelabels[language_id]) {
str += '' + filelabels[language_id].fname + ': '
str += (fpath != "" ? '
'+fname+'' : fname);
str += '
';
str += '' + filelabels[language_id].fsize + ': ' + fsize + '
';
resource = getFileResource(ext);
desc = getFileDescription(ext);
reqs = getFileReqs(ext);
if (desc != "") {
str += '' + filelabels[language_id].ftype + ': ' + desc + '
'
}
if (reqs != "") {
str += '' + filelabels[language_id].freqs + ': ';
str += (resource != "" ? '
'+reqs+'' : reqs);
str += '
';
}
}
// Clear window.status upon mouseout:
elm = ((e.target) ? e.target : e.srcElement);
elm.onmouseout = function() {
window.status = "";
return true;
}
//Show filepop-menu:
showfilepop(e, str);
return true;
}
function dom_contains(a, b) {
while (b.parentNode) {
if ((b = b.parentNode) == a) {
return true;
}
}
return false;
}
function hidemenu(){
if (window.menuobj) {
menuobj.thestyle.visibility = "hidden";
}
}
function dynamichide(e){
if (ua["ie"] && !menuobj.contains(e.toElement)) {
hidemenu()
}
else if (ua["dom"] && e.currentTarget != e.relatedTarget && !dom_contains(e.currentTarget, e.relatedTarget)) {
hidemenu()
}
}
function delayhidemenu(){
if (ua["dom"]) {
delayhide = setTimeout("hidemenu()", 500)
}
}
function clearhidemenu(){
if (window.delayhide)
clearTimeout(delayhide)
}
function highlightmenu(e, state){
if (ua["ie"]) {
src_elm = event.srcElement
}
else if (ua["dom"]) {
src_elm = e.target;
}
if (src_elm.className=="menuitems") {
src_elm.id = (state=="on") ? "mouseoverstyle" : ""
}
else {
while(src_elm.id != "popmenu") {
src_elm = document.getElementById ? src_elm.parentNode : src_elm.parentElement
if (src_elm.className == "menuitems") {
src_elm.id = (state == "on") ? "mouseoverstyle" : "";
}
}
}
}
if (ua["dom"]) {
document.onclick = hidemenu
}
function createFilePop() {
if (ua["dom"]) {
var filediv = document.createElement("DIV");
filediv.setAttribute("id","popmenu");
filediv.className = "menuskin";
filediv.onmouseover = function(e) {
if (!e) var e = window.event;
clearhidemenu();
highlightmenu(e, 'on');
}
filediv.onmouseout = function(e) {
if (!e) var e = window.event;
highlightmenu(e, 'off');
dynamichide(e);
}
document.body.insertBefore(filediv, document.body.lastChild);
}
}
addLoadEvent(createFilePop);