Files @ 7ec91347b83f
Branch filter:

Location: hot67beta/components/com_morfeoshow/tpl/resources/boxover/boxover.js - annotation

root@protofusion.org
there we go
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
7ec91347b83f
/* --- BoxOver ---
/* --- v 2.1 17th June 2006
By Oliver Bryant with help of Matthew Tagg
http://boxover.swazz.org */

if (typeof document.attachEvent!='undefined') {
   window.attachEvent('onload',init);
   document.attachEvent('onmousemove',moveMouse);
   document.attachEvent('onclick',checkMove); }
else {
   window.addEventListener('load',init,false);
   document.addEventListener('mousemove',moveMouse,false);
   document.addEventListener('click',checkMove,false);
}

var oDv=document.createElement("div");
var dvHdr=document.createElement("div");
var dvBdy=document.createElement("div");
var windowlock,boxMove,fixposx,fixposy,lockX,lockY,fixx,fixy,ox,oy,boxLeft,boxRight,boxTop,boxBottom,evt,mouseX,mouseY,boxOpen,totalScrollTop,totalScrollLeft;
boxOpen=false;
ox=10;
oy=10;
lockX=0;
lockY=0;

function init() {
	oDv.appendChild(dvHdr);
	oDv.appendChild(dvBdy);
	oDv.style.position="absolute";
	oDv.style.visibility='hidden';
	document.body.appendChild(oDv);	
}

function defHdrStyle() {
	dvHdr.innerHTML='<img  style="vertical-align:middle"  src="info.gif">&nbsp;&nbsp;'+dvHdr.innerHTML;
	dvHdr.style.fontWeight='bold';
	dvHdr.style.width='150px';
	dvHdr.style.fontFamily='arial';
	dvHdr.style.borderBottom='1px solid #cccccc';
	dvHdr.style.borderTop='1px solid #000000';	
	dvHdr.style.borderLeft='1px solid #000000';
	dvHdr.style.borderRight='1px solid #000000';	
	dvHdr.style.padding='6px';
	dvHdr.style.fontSize='11px';
	dvHdr.style.color='#ffff00';
	dvHdr.style.background='#1a1a1a';
	dvHdr.style.filter='alpha(opacity=85)'; // IE
	dvHdr.style.opacity='0.85'; // FF
}

function defBdyStyle() {
	dvBdy.style.borderBottom='1px solid #000000';
	dvBdy.style.borderLeft='1px solid #000000';
	dvBdy.style.borderRight='1px solid #000000';
	dvBdy.style.width='150px';
	dvBdy.style.fontFamily='arial';
	dvBdy.style.fontSize='9px';
	dvBdy.style.padding='6px';
	dvBdy.style.color='#ffffff';
	dvBdy.style.background='#1a1a1a';
	dvBdy.style.filter='alpha(opacity=85)'; // IE
	dvBdy.style.opacity='0.85'; // FF
}

function checkElemBO(txt) {
if (!txt || typeof(txt) != 'string') return false;
if ((txt.indexOf('header')>-1)&&(txt.indexOf('body')>-1)&&(txt.indexOf('[')>-1)&&(txt.indexOf('[')>-1)) 
   return true;
else
   return false;
}

function scanBO(curNode) {
	  if (checkElemBO(curNode.title)) {
         curNode.boHDR=getParam('header',curNode.title);
         curNode.boBDY=getParam('body',curNode.title);
			curNode.boCSSBDY=getParam('cssbody',curNode.title);			
			curNode.boCSSHDR=getParam('cssheader',curNode.title);
			curNode.IEbugfix=(getParam('hideselects',curNode.title)=='on')?true:false;
			curNode.fixX=parseInt(getParam('fixedrelx',curNode.title));
			curNode.fixY=parseInt(getParam('fixedrely',curNode.title));
			curNode.absX=parseInt(getParam('fixedabsx',curNode.title));
			curNode.absY=parseInt(getParam('fixedabsy',curNode.title));
			curNode.offY=(getParam('offsety',curNode.title)!='')?parseInt(getParam('offsety',curNode.title)):10;
			curNode.offX=(getParam('offsetx',curNode.title)!='')?parseInt(getParam('offsetx',curNode.title)):10;
			curNode.fade=(getParam('fade',curNode.title)=='on')?true:false;
			curNode.fadespeed=(getParam('fadespeed',curNode.title)!='')?getParam('fadespeed',curNode.title):0.04;
			curNode.delay=(getParam('delay',curNode.title)!='')?parseInt(getParam('delay',curNode.title)):0;
			if (getParam('requireclick',curNode.title)=='on') {
				curNode.requireclick=true;
				document.all?curNode.attachEvent('onclick',showHideBox):curNode.addEventListener('click',showHideBox,false);
				document.all?curNode.attachEvent('onmouseover',hideBox):curNode.addEventListener('mouseover',hideBox,false);
			}
			else {// Note : if requireclick is on the stop clicks are ignored   			
   			if (getParam('doubleclickstop',curNode.title)!='off') {
   				document.all?curNode.attachEvent('ondblclick',pauseBox):curNode.addEventListener('dblclick',pauseBox,false);
   			}	
   			if (getParam('singleclickstop',curNode.title)=='on') {
   				document.all?curNode.attachEvent('onclick',pauseBox):curNode.addEventListener('click',pauseBox,false);
   			}
   		}
			curNode.windowLock=getParam('windowlock',curNode.title).toLowerCase()=='off'?false:true;
			curNode.title='';
			curNode.hasbox=1;
	   }
	   else
	      curNode.hasbox=2;   
}


function getParam(param,list) {
	var reg = new RegExp('([^a-zA-Z]' + param + '|^' + param + ')\\s*=\\s*\\[\\s*(((\\[\\[)|(\\]\\])|([^\\]\\[]))*)\\s*\\]');
	var res = reg.exec(list);
	var returnvar;
	if(res)
		return res[2].replace('[[','[').replace(']]',']');
	else
		return '';
}

function Left(elem){	
	var x=0;
	if (elem.calcLeft)
		return elem.calcLeft;
	var oElem=elem;
	while(elem){
		 if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderLeftWidth)))&&(x!=0))
		 	x+=parseInt(elem.currentStyle.borderLeftWidth);
		 x+=elem.offsetLeft;
		 elem=elem.offsetParent;
	  } 
	oElem.calcLeft=x;
	return x;
	}

function Top(elem){
	 var x=0;
	 if (elem.calcTop)
	 	return elem.calcTop;
	 var oElem=elem;
	 while(elem){		
	 	 if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderTopWidth)))&&(x!=0))
		 	x+=parseInt(elem.currentStyle.borderTopWidth); 
		 x+=elem.offsetTop;
	         elem=elem.offsetParent;
 	 } 
 	 oElem.calcTop=x;
 	 return x;
 	 
}

var ah,ab;
function applyStyles() {
	if(ab)
		oDv.removeChild(dvBdy);
	if (ah)
		oDv.removeChild(dvHdr);
	dvHdr=document.createElement("div");
	dvBdy=document.createElement("div");
	CBE.boCSSBDY?dvBdy.className=CBE.boCSSBDY:defBdyStyle();
	CBE.boCSSHDR?dvHdr.className=CBE.boCSSHDR:defHdrStyle();
	dvHdr.innerHTML=CBE.boHDR;
	dvBdy.innerHTML=CBE.boBDY;
	ah=false;
	ab=false;
	if (CBE.boHDR!='') {		
		oDv.appendChild(dvHdr);
		ah=true;
	}	
	if (CBE.boBDY!=''){
		oDv.appendChild(dvBdy);
		ab=true;
	}	
}

var CSE,iterElem,LSE,CBE,LBE, totalScrollLeft, totalScrollTop, width, height ;
var ini=false;

// Customised function for inner window dimension
function SHW() {
   if (document.body && (document.body.clientWidth !=0)) {
      width=document.body.clientWidth;
      height=document.body.clientHeight;
   }
   if (document.documentElement && (document.documentElement.clientWidth!=0) && (document.body.clientWidth + 20 >= document.documentElement.clientWidth)) {
      width=document.documentElement.clientWidth;   
      height=document.documentElement.clientHeight;   
   }   
   return [width,height];
}


var ID=null;
function moveMouse(e) {
   //boxMove=true;
	e?evt=e:evt=event;
	
	CSE=evt.target?evt.target:evt.srcElement;
	
	if (!CSE.hasbox) {
	   // Note we need to scan up DOM here, some elements like TR don't get triggered as srcElement
	   iElem=CSE;
	   while ((iElem.parentNode) && (!iElem.hasbox)) {
	      scanBO(iElem);
	      iElem=iElem.parentNode;
	   }	   
	}
	
	if ((CSE!=LSE)&&(!isChild(CSE,dvHdr))&&(!isChild(CSE,dvBdy))){		
	   if (!CSE.boxItem) {
			iterElem=CSE;
			while ((iterElem.hasbox==2)&&(iterElem.parentNode))
					iterElem=iterElem.parentNode; 
			CSE.boxItem=iterElem;
			}
		iterElem=CSE.boxItem;
		if (CSE.boxItem&&(CSE.boxItem.hasbox==1))  {
			LBE=CBE;
			CBE=iterElem;
			if (CBE!=LBE) {
				applyStyles();
				if (!CBE.requireclick)
					if (CBE.fade) {
						if (ID!=null)
							clearTimeout(ID);
						ID=setTimeout("fadeIn("+CBE.fadespeed+")",CBE.delay);
					}
					else {
						if (ID!=null)
							clearTimeout(ID);
						COL=1;
						ID=setTimeout("oDv.style.visibility='visible';ID=null;",CBE.delay);						
					}
				if (CBE.IEbugfix) {hideSelects();} 
				fixposx=!isNaN(CBE.fixX)?Left(CBE)+CBE.fixX:CBE.absX;
				fixposy=!isNaN(CBE.fixY)?Top(CBE)+CBE.fixY:CBE.absY;			
				lockX=0;
				lockY=0;
				boxMove=true;
				ox=CBE.offX?CBE.offX:10;
				oy=CBE.offY?CBE.offY:10;
			}
		}
		else if (!isChild(CSE,dvHdr) && !isChild(CSE,dvBdy) && (boxMove))	{
			// The conditional here fixes flickering between tables cells.
			if ((!isChild(CBE,CSE)) || (CSE.tagName!='TABLE')) {   			
   			CBE=null;
   			if (ID!=null)
  					clearTimeout(ID);
   			fadeOut();
   			showSelects();
			}
		}
		LSE=CSE;
	}
	else if (((isChild(CSE,dvHdr) || isChild(CSE,dvBdy))&&(boxMove))) {
		totalScrollLeft=0;
		totalScrollTop=0;
		
		iterElem=CSE;
		while(iterElem) {
			if(!isNaN(parseInt(iterElem.scrollTop)))
				totalScrollTop+=parseInt(iterElem.scrollTop);
			if(!isNaN(parseInt(iterElem.scrollLeft)))
				totalScrollLeft+=parseInt(iterElem.scrollLeft);
			iterElem=iterElem.parentNode;			
		}
		if (CBE!=null) {
			boxLeft=Left(CBE)-totalScrollLeft;
			boxRight=parseInt(Left(CBE)+CBE.offsetWidth)-totalScrollLeft;
			boxTop=Top(CBE)-totalScrollTop;
			boxBottom=parseInt(Top(CBE)+CBE.offsetHeight)-totalScrollTop;
			doCheck();
		}
	}
	
	if (boxMove&&CBE) {
		// This added to alleviate bug in IE6 w.r.t DOCTYPE
		bodyScrollTop=document.documentElement&&document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
		bodyScrollLet=document.documentElement&&document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft;
		mouseX=evt.pageX?evt.pageX-bodyScrollLet:evt.clientX-document.body.clientLeft;
		mouseY=evt.pageY?evt.pageY-bodyScrollTop:evt.clientY-document.body.clientTop;
		if ((CBE)&&(CBE.windowLock)) {
			mouseY < -oy?lockY=-mouseY-oy:lockY=0;
			mouseX < -ox?lockX=-mouseX-ox:lockX=0;
			mouseY > (SHW()[1]-oDv.offsetHeight-oy)?lockY=-mouseY+SHW()[1]-oDv.offsetHeight-oy:lockY=lockY;
			mouseX > (SHW()[0]-dvBdy.offsetWidth-ox)?lockX=-mouseX-ox+SHW()[0]-dvBdy.offsetWidth:lockX=lockX;			
		}
		oDv.style.left=((fixposx)||(fixposx==0))?fixposx:bodyScrollLet+mouseX+ox+lockX+"px";
		oDv.style.top=((fixposy)||(fixposy==0))?fixposy:bodyScrollTop+mouseY+oy+lockY+"px";		
		
	}
}

function doCheck() {	
	if (   (mouseX < boxLeft)    ||     (mouseX >boxRight)     || (mouseY < boxTop) || (mouseY > boxBottom)) {
		if (!CBE.requireclick)
			fadeOut();
		if (CBE.IEbugfix) {showSelects();}
		CBE=null;
	}
}

function pauseBox(e) {
   e?evt=e:evt=event;
	boxMove=false;
	evt.cancelBubble=true;
}

function showHideBox(e) {
	oDv.style.visibility=(oDv.style.visibility!='visible')?'visible':'hidden';
}

function hideBox(e) {
	oDv.style.visibility='hidden';
}

var COL=0;
var stopfade=false;
function fadeIn(fs) {
		ID=null;
		COL=0;
		oDv.style.visibility='visible';
		fadeIn2(fs);
}

function fadeIn2(fs) {
		COL=COL+fs;
		COL=(COL>1)?1:COL;
		oDv.style.filter='alpha(opacity='+parseInt(100*COL)+')';
		oDv.style.opacity=COL;
		if (COL<1)
		 setTimeout("fadeIn2("+fs+")",20);		
}


function fadeOut() {
	oDv.style.visibility='hidden';
	
}

function isChild(s,d) {
	while(s) {
		if (s==d) 
			return true;
		s=s.parentNode;
	}
	return false;
}

var cSrc;
function checkMove(e) {
	e?evt=e:evt=event;
	cSrc=evt.target?evt.target:evt.srcElement;
	if ((!boxMove)&&(!isChild(cSrc,oDv))) {
		fadeOut();
		if (CBE&&CBE.IEbugfix) {showSelects();}
		boxMove=true;
		CBE=null;
	}
}

function showSelects(){
   var elements = document.getElementsByTagName("select");
   for (i=0;i< elements.length;i++){
      elements[i].style.visibility='visible';
   }
}

function hideSelects(){
   var elements = document.getElementsByTagName("select");
   for (i=0;i< elements.length;i++){
   elements[i].style.visibility='hidden';
   }
}