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 += '
' + filelabels[language_id].fname + ': ' + '' + fname + '
'; 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);