From bcbf441e09fb502cf64924ff2530fa144bdf52c5 Mon Sep 17 00:00:00 2001 From: Andreas Brachold Date: Mon, 13 Aug 2007 18:41:27 +0000 Subject: * Move files to trunk --- html/javascript/XHConn.js | 41 ++++ html/javascript/coolmenus4.js | 427 +++++++++++++++++++++++++++++++++ html/javascript/global.js | 174 ++++++++++++++ html/javascript/helptip.js | 240 +++++++++++++++++++ html/javascript/records.js | 26 ++ html/javascript/tabpane.js | 368 ++++++++++++++++++++++++++++ html/javascript/tooltip.js | 101 ++++++++ html/javascript/xtree.js | 541 ++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 1918 insertions(+) create mode 100644 html/javascript/XHConn.js create mode 100644 html/javascript/coolmenus4.js create mode 100644 html/javascript/global.js create mode 100644 html/javascript/helptip.js create mode 100644 html/javascript/records.js create mode 100644 html/javascript/tabpane.js create mode 100644 html/javascript/tooltip.js create mode 100644 html/javascript/xtree.js (limited to 'html/javascript') diff --git a/html/javascript/XHConn.js b/html/javascript/XHConn.js new file mode 100644 index 0000000..537b555 --- /dev/null +++ b/html/javascript/XHConn.js @@ -0,0 +1,41 @@ +/** XHRequest based on ** + ** XHConn - Simple XMLHTTP Interface - bfults@gmail.com - 2005-04-08 ** + ** Code licensed under Creative Commons Attribution-ShareAlike License ** + ** http://creativecommons.org/licenses/by-sa/2.0/ **/ + +function XHRequest() +{ + var xmlhttp, bComplete = false; + try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } + catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } + catch (e) { try { xmlhttp = new XMLHttpRequest(); } + catch (e) { xmlhttp = false; }}} + if (!xmlhttp) + return null; + + this.connect = function(sRequest, fnDone, sData) + { + if (!xmlhttp) return false; + bComplete = false; + + try { + xmlhttp.open("GET", sRequest, true); + xmlhttp.onreadystatechange = function() + { + if (xmlhttp.readyState == 4 && !bComplete) + { + bComplete = true; + fnDone(xmlhttp, sData); + } + }; + xmlhttp.send(null); + } catch(z) { alert(z); return false; } + return true; + }; + return this; +} + +var ajaxconn = new XHRequest(); + +if (!ajaxconn) + alert("XMLHTTP not available. Try a newer/better browser."); diff --git a/html/javascript/coolmenus4.js b/html/javascript/coolmenus4.js new file mode 100644 index 0000000..a8692fc --- /dev/null +++ b/html/javascript/coolmenus4.js @@ -0,0 +1,427 @@ +/************************************************************ +Coolmenus Beta 4.06 - Copyright Thomas Brattli - www.dhtmlcentral.com +Last updated: 11.13.02 + +v4.06 - with basic frame support +*************************************************************/ +/*Browsercheck object*/ +function cm_bwcheck(){ + //In theory we should use object detection, but this script needs work-arounds for almost every browser... + this.ver=navigator.appVersion + this.agent=navigator.userAgent.toLowerCase() + this.dom=document.getElementById?1:0 + this.ns4=(!this.dom && document.layers)?1:0; + this.op=window.opera + this.moz=(this.agent.indexOf("gecko")>-1 || window.sidebar) + this.ie=this.agent.indexOf("msie")>-1 && !this.op + if(this.op){ + this.op5=(this.agent.indexOf("opera 5")>-1 || this.agent.indexOf("opera/5")>-1) + this.op6=(this.agent.indexOf("opera 6")>-1 || this.agent.indexOf("opera/6")>-1) + this.op7=this.dom&&!this.op5&&!this.op6 //So all higher opera versions will use it + }else if(this.moz) this.ns6 = 1 + else if(this.ie){ + this.ie4 = !this.dom && document.all + this.ie5 = (this.agent.indexOf("msie 5")>-1) + this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1) + this.ie6 = this.dom && !this.ie4 && !this.ie5 && ! this.ie55 + } + this.mac=(this.agent.indexOf("mac")>-1) + this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6 || this.op7) + this.usedom= this.ns6||this.op7//Use dom creation + this.reuse = this.ie||this.op7||this.usedom //Reuse layers + this.px=this.dom&&!this.op5?"px":"" + return this +} +var bw=new cm_bwcheck() +/*Variable declaration*/ +var cmpage +/*Crossbrowser objects functions*/ +function cm_message(txt){alert(txt); return false} +function cm_makeObj(obj,nest,o,doc){ //Changed in v4.05 + if(!doc) doc=document + if(bw.usedom&&o) this.evnt=o + else{nest=(!nest) ? "doc.":'doc.layers.'+nest+'.' + this.evnt=bw.dom? doc.getElementById(obj): + bw.ie4?doc.all[obj]:bw.ns4?eval(nest+"layers." +obj):0; + } + if(!this.evnt) return cm_message('The layer does not exist ('+obj+')' + +'- \nIf your using Netscape please check the nesting of your tags (on the entire page)\nNest:'+nest) + this.css=bw.dom||bw.ie4?this.evnt.style:this.evnt; this.ok=0 + this.ref=bw.dom||bw.ie4?doc:this.css.document; + this.obj = obj + "Object"; eval(this.obj + "=this"); + this.x=0; this.y=0; this.w=0; this.h=0; this.vis=0; return this +} +cm_makeObj.prototype.moveIt = function(x,y){this.x=x;this.y=y; this.css.left=x+bw.px;this.css.top=y+bw.px} +cm_makeObj.prototype.showIt = function(o){this.css.visibility="visible"; this.vis=1; if(bw.op5&&this.arr){ this.arr.showIt(); }}//alert('showing arrow')}} +cm_makeObj.prototype.hideIt = function(no){this.css.visibility="hidden"; this.vis=0;} +cm_makeObj.prototype.clipTo = function(t,r,b,l,setwidth){ +this.w=r; this.h=b; if(bw.ns4){this.css.clip.top=t;this.css.clip.right=r; this.css.clip.bottom=b;this.css.clip.left=l +}else{if(t<0)t=0;if(r<0)r=0;if(b<0)b=0;if(b<0)b=0; this.css.clip="rect("+t+bw.px+","+r+bw.px+","+b+bw.px+","+l+bw.px+")"; +if(setwidth){if(bw.op5||bw.op6){this.css.pixelWidth=r; this.css.pixelHeight=b;}else{this.css.width=r+bw.px; this.css.height=b+bw.px;}}}} +function cm_active(on,h){ + if(this.o.arr) on?this.o.arr.hideIt():bw.op5?this.o.arr.showIt():this.o.arr.css.visibility="inherit" + if(bw.reuse||bw.usedom){ + if(!this.img2) this.o.evnt.className=on?this.cl2:this.cl + else this.o.ref.images["img"+this.name].src=on?this.img2.src:this.img1.src; //Changed v4.05 + if(on && bw.ns6){this.o.hideIt(); this.o.css.visibility='inherit' }; //netscape 6 bug fix + }else{ + if(!this.img2){ if(on) this.o.over.showIt(); else this.o.over.hideIt(); + }else this.o.ref.images["img"+this.name].src=on?this.img2.src:this.img1.src; + }this.isactive=on?1:0 +} +/***Pageobject **/ +function cm_page(frame){ //Changed v4.05 + if(!frame) frame = self + this.x=0; this.x2 =(!bw.ie)?frame.innerWidth:frame.document.body.offsetWidth-20; + this.y=0; this.orgy=this.y2= (!bw.ie)?frame.innerHeight:frame.document.body.offsetHeight-6; + this.x50=this.x2/2; this.y50=this.y2/2; return this +} +/***check positions**/ +function cm_cp(num,w,minus){ + if(num){if(num.toString().indexOf("%")!=-1){var t = w?cmpage.x2:cmpage.y2; num=parseInt((t*parseFloat(num)/100)) + if(minus) num-=minus }else num=eval(num);} else num=0; return num +} +/**Level object**/ +function cm_makeLevel(){//changed 4.06 + var c=this, a=arguments; c.width=a[0]||null; c.height=a[1]||null; + c.regClass=a[2]||null; c.overClass=a[3]||null; c.borderX=a[4]>-1?a[4]:null; + c.borderY=a[5]>-1?a[5]:null; c.borderClass=a[6]||null; c.rows=a[7]>-1?a[7]:null; + c.align=a[8]||null; c.offsetX=a[9]||null; c.offsetY=a[10]||null; c.arrow=a[11]||null; + c.arrowWidth=a[12]||null; c.arrowHeight=a[13]||null; c.roundBorder=a[14]||null; return c +} +/***Making the main menu object**/ +function makeCM(name){ //Changed v4.06 + var c=this; c.mc=0; c.name = name; c.m=new Array(); c.scrollY=-1; c.level=new Array(); c.l=new Array(); c.tim=100; c.isresized=0; + c.isover=0; c.zIndex=100; c.frameStartLevel=1; c.bar=0; c.z=0; c.totw=0; c.toth=0; c.maxw=0; c.maxh=0; cmpage = new cm_page(); c.constructed = 0; + return this +}//events +makeCM.prototype.onshow=""; makeCM.prototype.onhide=""; makeCM.prototype.onconstruct=""; +/***Creating layers**/ +function cm_divCreate(id,cl,txt,w,c,app,ex,txt2){ + if(bw.usedom){var div=document.createElement("DIV"); div.className=cl; div.id=id; + if(txt) div.innerHTML=txt; if(app){app.appendChild(div); return div} + if(w) document.body.appendChild(div); return div + }else{var dstr='
',0,1) + }str+='
'; + if(l==0){if(arrow)str+=m.d3=cm_divCreate(id+'_a','clCMAbs','',0,1,d1); str+=""} + str+="\n"; if(!bw.reuse){m.txt=null; m.d2=null; m.d3=null;} + if(bw.usedom){ if(l==0) document.body.appendChild(d1); str=''} + return str +} +/***get align num from text (better to evaluate numbers later)**/ +function cm_checkalign(a){ + switch(a){ + case "right": return 1; break; case "left": return 2; break; + case "bottom": return 3; break; case "top": return 4; break; + case "righttop": return 5; break; case "lefttop": return 6; break; + case "bottomleft": return 7; break; case "topleft": return 8; break; + }return null +} +/**Making each individual menu **/ +makeCM.prototype.makeMenu=function(name,parent,txt,lnk,targ,w,h,img1,img2,cl,cl2,align,rows,nolink,onclick,onmouseover,onmouseout){ + var c = this; if(!name) name = c.name+""+c.mc; var p = parent!=""&&parent&&c.m[parent]?parent:0; + if(c.mc==0){ + //Added 4.07 - bug(?) in opera 7 - you cannot dom-add layers created in one document to another one (or so it seems) - so turn of usedom + if(bw.op7 && this.frames) bw.usedom=0 + var tmp=location.href; + if(tmp.indexOf('file:')>-1||tmp.charAt(1)==':') c.root=c.offlineRoot; else c.root=c.onlineRoot + if(c.useBar){if(!c.barBorderClass) c.barBorderClass=c.barClass; c.bar1 = cm_divCreate(c.name+'bbar_0',c.barClass,'',0,1); + c.bar = cm_divCreate(c.name+'bbar',c.barBorderClass,'',1,1,0,0,c.bar1); if(bw.usedom) c.bar.appendChild(c.bar1); + }}var create=1,img,arrow; var m = c.m[name] = new Object(); m.name=name; m.subs=new Array(); m.parent=p; m.arnum=0; m.arr=0 + var l = m.lev = p?c.m[p].lev+1:0; c.mc++; m.hide=0; + if(l>=c.l.length){ + var p1,p2=0; if(l>=c.level.length) p1=c.l[c.level.length-1]; + else p1=c.level[l]; c.l[l]=new Array(); if(!p2) p2=c.l[l-1] + if(l!=0){ if(isNaN(p1.align)) p1["align"]=cm_checkalign(p1.align) + for(var i in p1){if(i!="str"&&i!="m"){if(p1[i]==null) c.l[l][i]=p2[i]; else c.l[l][i]=p1[i] }} + }else{c.l[l]=c.level[0]; c.l[l].align=cm_checkalign(c.l[l].align)} + c.l[l]["str"]=''; c.l[l].m=new Array(); if(!c.l[l].borderClass) c.l[l].borderClass=c.l[l].regClass + c.l[l].app=0; c.l[l].max=0; c.l[l].arnum=0; c.l[l].o=new Array(); c.l[l].arr=new Array() + c.level[l]=p1=p2=null + if(l!=0) c.l[l].str=c.l[l].app=cm_divCreate(c.name+ '_' +l+'_0',c.l[l].borderClass,'') + }if(p){p = c.m[p]; p.subs[p.subs.length]=name; + if(p.subs.length==1&&c.l[l-1].arrow){ p.arr=1; + if(p.parent){c.m[p.parent].arnum++ + if(c.m[p.parent].arnum>c.l[l-1].arnum){ + c.l[l-1].str+=c.l[l-1].arr[c.l[l-1].arnum]=cm_divCreate(c.name+ '_a' +(l-1)+'_'+c.l[l-1].arnum,'clCMAbs','',0,1,c.l[l-1].app); c.l[l-1].arnum++ + }}}if(bw.reuse) if(p.subs.length>c.l[l].max) c.l[l].max = p.subs.length; else create=0 + }m.rows=rows>-1?rows:c.l[l].rows; m.w=cm_cp(w||c.l[l].width,1); m.h=cm_cp(h||c.l[l].height,0); m.txt=txt; m.lnk=lnk; + if(align) align=cm_checkalign(align); m.align=align||c.l[l].align; m.cl=cl=cl||c.l[l].regClass; + m.targ=targ; m.cl2=cl2||c.l[l].overClass; m.create=create; m.mover=onmouseover; m.mout=onmouseout; + m.onclck=onclick; m.active = cm_active; m.isactive=0; m.nolink=nolink + if(create) c.l[l].m[c.l[l].m.length]=name + if(img1){m.img1 = new Image(); m.img1.src=c.root+img1; if(!img2) img2=img1; m.img2 = new Image(); m.img2.src=c.root+img2; + m.cl="clCMAbs"; m.txt=''; if(!bw.reuse&&!nolink) m.txt = '';; + m.txt+='c.maxw) c.maxw=m.w; if(m.h>c.maxh) c.maxh=m.h; c.totw+=c.pxBetween+m.w+c.l[0].borderX;c.toth+=c.pxBetween+m.h+c.l[0].borderY} + if(lnk && !onmouseover){ + var path=lnk.indexOf("mailto:")>-1||lnk.indexOf("http://")>-1?"":c.root + m.mover="self.status='"+path+m.lnk+"'" + if(!m.mout) m.mout=""; m.mout+=";self.status='';" + } +} +/**Getting x/y coords for subs **/ +makeCM.prototype.getcoords=function(m,bx,by,x,y,maxw,maxh,ox,oy){ + var a=m.align; x+=m.o.x; y+=m.o.y + switch(a){ + case 1: x+=m.w+bx; break; case 2: x-=maxw+bx; break; + case 3: y+=m.h+by; break; case 4: y-=maxh+by; break; + case 5: x-=maxw+bx; y-=maxh-m.h; break; + case 6: x+=m.w+bx; y-=maxh-m.h; break; + case 7: y+=m.h+by; x-=maxw-m.w; break; + case 8: y-=maxh+by; x-=maxw-m.w+bx; break; + }//Added v4.05 + if(m.lev==this.frameStartLevel-1 && this.frames){ + switch(a){ + case 1: x=0; break; + case 2: x=this.cmpage.x2-maxw; break; + case 3: y=0; break; + case 4: y-=maxh+by; break; + case 5: x-=maxw+bx; y-=maxh-m.h; break; + case 6: x+=m.w+bx; y-=maxh-m.h; break; + case 7: y+=m.h+by; x-=maxw-m.w; break; + case 8: y-=maxh+by; x-=maxw-m.w+bx; break; + } + } + m.subx=x + ox; m.suby=y + oy +} +/**Showing sub elements**/ +makeCM.prototype.showsub=function(el){ //Changed v4.06 + var c=this,pm=c.m[el],m,o,nl + if(!pm.b||(c.isresized&&pm.lev>0)) pm.b=c.l[pm.lev].b; c.isover=1 + clearTimeout(c.tim); + var ln=pm.subs.length,l=pm.lev+1 + if(c.l[pm.lev].a==el&&l!=c.l.length && !c.openOnClick){if(c.l[pm.lev+1].a) c.hidesub(l+1,el); return} + c.hidesub(l,el); if(pm.mover) eval(pm.mover); if(!pm.isactive) pm.active(1); + c.l[pm.lev].a = el; if(ln==0) return; + if(c.openOnClick && !c.clicked) return//Added v4.06 + if(!c.l[l].b) return //Added v4.05 + var b = c.l[l].b, bx=c.l[l].borderX, by=c.l[l].borderY, rows=pm.rows + var rb=c.l[l].roundBorder;//added 4.06 + var x=bx+rb,y=by+rb,maxw=0,maxh=0,cn=0; b.hideIt() + for(var i=0;imaxw) maxw=m.w; maxh=y} + else{x+=m.w+bx; if(m.h>maxh) maxh=m.h; maxw=x;} + o.css.visibility="inherit"; if(bw.op5||bw.op6) o.showIt() + }else{o = c.m[c.l[l].m[i]].o; o.hideIt();} } + if(!rows) maxw+=bx*2+rb; else maxh+=by*2+rb; //changed 4.06 + if(rb){maxw+=rb; maxh+=rb}//added 4.06 + b.clipTo(0,maxw,maxh,0,1) + //Check frame scroll + if(c.chkscroll) c.chkscroll() //Added v4.05 - not the best solution + if(c.chkscroll||!pm.subx||!pm.suby||c.scrollY>-1||c.isresized) c.getcoords(pm,c.l[l-1].borderX,c.l[l-1].borderY,pm.b.x,pm.b.y,maxw,maxh,c.l[l-1].offsetX,c.l[l-1].offsetY) //Changed 4.06 + x=pm.subx; if(c.chkscroll&&l==c.frameStartLevel) pm.suby+=c.scrollY; y=pm.suby; b.moveIt(x,y); if(c.onshow) eval(c.onshow); b.showIt() +} +/**Hide sub elements **/ +makeCM.prototype.hidesub=function(l,el){ //Changed v4.05 + var c = this,tmp,m,i,j,hide + if(!l) {l=1; hide=1; c.clicked=0} + for(i=l-1;i0&&i>l-1) if(c.l[i].b) c.l[i].b.hideIt()//Changed v4.05 + if(c.l[i].a&&c.l[i].a!=el){ + m=c.m[c.l[i].a]; m.active(0,1); if(m.mout) eval(m.mout); c.l[i].a=0 + if(i>0&&i>l-1) if(bw.op5||bw.op6) for(j=0;jl){for(j=0;j0) this.body.appendChild(c.l[i].app) + if(!this.frames) c.l[i].str=null + }}c.z=c.zIndex+2 + for(i=st;i0){m.b = bobj; nest=i} + else{m.b = new cm_makeObj(c.name + "_"+name+"_0","",m.d1,this.doc); m.b.css.zIndex=c.z; m.b.clipTo(0,w+bx*2,h+by*2,0,1); nest=name} + id = c.name + "_"+name; nest=c.name + "_"+nest; + if(m.create){ + o=m.o=new cm_makeObj(id,nest+"_0",m.d2,this.doc); o.z=o.css.zIndex=c.z+1; if(bw.reuse){c.l[l].o[oc]=o; oc++}; + if(l==0&&m.img1) o.css.visibility='inherit'; if(bw.op5) o.showIt(); o.arr=0; + }if(!bw.reuse||l==0) o.clipTo(0,w,h,0,1); o.moveIt(bx,by); o.z=o.css.zIndex=c.z+2 + if(j"}} //Added 4.06 + c.makeObjects(nowrite); cmpage = new cm_page(); + var mpa,o,maxw=c.maxw,maxh=c.maxh,i,totw=c.totw,toth=c.toth,m,px=c.pxBetween + var bx=c.l[0].borderX,by=c.l[0].borderY,x=c.fromLeft,y=c.fromTop,mp=c.menuPlacement,rows=c.rows + if(rows){toth=maxh+by*2; totw=totw-px+bx;}else{totw=maxw+bx*2; toth=toth-px+by;} + switch(mp){ + case "center": x=cmpage.x2/2-totw/2; if(bw.ns4) x-=9; break; + case "right": x=cmpage.x2-totw; break; + case "bottom": case "bottomcenter": y=cmpage.y2-toth; if(mp=="bottomcenter") x=cmpage.x2/2-totw/2; break; + default: if(mp.toString().indexOf(",")>-1) mpa=1; break; + }for(var i=0;icmpage.x2+off || page2.y2>cmpage.orgy+off){ + if(bw.ie||bw.ns6||bw.op7||bw.ns4){ + cmpage=page2; this.isresized=1; + if(this.onresize) eval(this.onresize); this.construct(1); + if(this.onafterresize) eval(this.onafterresize); + }else{cm_inresize=1; location.reload()} + } +} +/**Onclick of an item**/ +makeCM.prototype.onclck=function(m){ //Changed v4.06 + m = this.m[m] + if(m.onclck) eval(m.onclck); + if(this.openOnClick && m.subs.length>0){ + this.clicked = 1; this.showsub(m.name); return + } + var lnk=m.lnk, targ=m.targ + if(lnk){ + if(lnk.indexOf("mailto")!=0 && lnk.indexOf("http")!=0) lnk=this.root+lnk + if(String(targ)=="undefined" || targ=="" || targ==0 || targ=="_self"){ + if(this.frames){ //Turning of all level 1 + vars + if(this.l[0].a){ + this.m[this.l[0].a].active(0,1) + this.l[0].a =0 + } + for(i=this.frameStartLevel;i 0) { + if(confirm(question + '\n' + txt.join("\n"))) { + tostatus('?cmd=' + cmd + '&data=' + ok.join('_')); + } + } else { + alert(warn); + } +} + +function Toggle(warn,form) { +// test on checked Boxes + ok = new Array; + txt = new Array; + x = 0; + for(var i=0;i 0) { + tostatus('?cmd=ttoggle&data=' + ok.join('_')); + } else { + alert(warn); + } +} + +function selAll(form, type) { +// check all Boxes + for(var i=0;i 0) { + var url = ""; + if(proxy != "") + url = proxy; + url = url + '?cmd=mplaylist&data=' + ok.join('_') + '&binary=1'; + location.href = url; + } else { + alert(warnmsg); + } +} + +/* -------------------- Widget Routines --------------- */ + +/* +- An AjaxCall to check for right values in HTML Widget +checkValue(inputObject, msgId, perlCall, wrongMessage, goodMessage); +checkValue(this, 'id', 'getip', 'host: %s is not exists!', 'ip address is %s') +*/ +function checkValue (valobj, msgname, cmd, wrongMsg, goodMsg) { + + var fnWhenDone = function (oXML, sData) { + var val = sData[0]; + var msg = sData[1]; + var wrongMsg = sData[2]; + var goodMsg = sData[3]; + + if(oXML.responseText.search('ERROR') > -1) { + msg.className = 'error'; + msg.innerHTML = wrongMsg.replace('%s', oXML.responseText); + } else { + msg.className = 'good'; + msg.innerHTML = goodMsg.replace('%s', oXML.responseText); + } + }; + + var inputvalue = valobj.value; + var msgobj = document.getElementById(msgname); + msgobj.innerHTML = 'Check value ...'; + + if(inputvalue) { + var url = "?cmd=checkvalue&data=" + cmd + ":" + inputvalue + "&ajax=text"; + var aconn = new XHRequest(); + if(!aconn) + return false; + return aconn.connect(url, fnWhenDone, [valobj, msgobj, wrongMsg, goodMsg]); + } +} diff --git a/html/javascript/helptip.js b/html/javascript/helptip.js new file mode 100644 index 0000000..6c129d4 --- /dev/null +++ b/html/javascript/helptip.js @@ -0,0 +1,240 @@ +/*----------------------------------------------------------------------------\ +| Help Tip 1.12 | +|-----------------------------------------------------------------------------| +| Created by Erik Arvidsson | +| (http://webfx.eae.net/contact.html#erik) | +| For WebFX (http://webfx.eae.net/) | +|-----------------------------------------------------------------------------| +| A tool tip like script that can be used for context help | +|-----------------------------------------------------------------------------| +| Copyright (c) 1999 - 2002 Erik Arvidsson | +|-----------------------------------------------------------------------------| +| This software is provided "as is", without warranty of any kind, express or | +| implied, including but not limited to the warranties of merchantability, | +| fitness for a particular purpose and noninfringement. In no event shall the | +| authors or copyright holders be liable for any claim, damages or other | +| liability, whether in an action of contract, tort or otherwise, arising | +| from, out of or in connection with the software or the use or other | +| dealings in the software. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| This software is available under the three different licenses mentioned | +| below. To use this software you must chose, and qualify, for one of those. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| The WebFX Non-Commercial License http://webfx.eae.net/license.html | +| Permits anyone the right to use the software in a non-commercial context | +| free of charge. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| The WebFX Commercial license http://webfx.eae.net/commercial.html | +| Permits the license holder the right to use the software in a commercial | +| context. Such license must be specifically obtained, however it's valid for | +| any number of implementations of the licensed software. | +| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | +| GPL - The GNU General Public License http://www.gnu.org/licenses/gpl.txt | +| Permits anyone the right to use and modify the software without limitations | +| as long as proper credits are given and the original and modified source | +| code are included. Requires that the final product, software derivate from | +| the original source or any software utilizing a GPL component, such as | +| this, is also licensed under the GPL license. | +|-----------------------------------------------------------------------------| +| 2002-09-27 | | +| 2001-11-25 | Added a resize to the tooltip if the document width is too | +| | small. | +| 2002-05-19 | IE50 did not recognise the JS keyword undefined so the test | +| | for scroll support was updated to be IE50 friendly. | +| 2002-07-06 | Added flag to hide selects for IE | +| 2002-10-04 | (1.1) Restructured and made code more IE garbage collector | +| | friendly. This solved the most nasty memory leaks. Also added | +| | support for hiding the tooltip if ESC is pressed. | +| 2002-10-18 | Fixed verrical position in case of scrolled document. | +| 2002-12-02 | Mozilla bug workaround related to mousedown and move. | +|-----------------------------------------------------------------------------| +| Dependencies: helptip.css (To set up the CSS of the help-tooltip class) | +|-----------------------------------------------------------------------------| +| Usage: | +| | +|