/* --- BoxOver ---
--- v 2.1 17th June 2006
By Oliver Bryant with help of Matthew Tagg
http://boxover.swazz.org 
Heavily customised for bla.st */

function addDOMLoadEvent(f){if(!window.__ADLE){var n=function(){if(arguments.callee.d)return;arguments.callee.d=true;if(window.__ADLET){clearInterval(window.__ADLET);window.__ADLET=null}for(var i=0;i<window.__ADLE.length;i++){window.__ADLE[i]()}window.__ADLE=null};if(document.addEventListener)document.addEventListener("DOMContentLoaded",n,false);/*@cc_on @*//*@if (@_win32)document.write("<scr"+"ipt id=__ie_onload defer src=//0><\/scr"+"ipt>");var s=document.getElementById("__ie_onload");s.onreadystatechange=function(){if(this.readyState=="complete")n()};/*@end @*/if(/WebKit/i.test(navigator.userAgent)){window.__ADLET=setInterval(function(){if(/loaded|complete/.test(document.readyState)){n()}},10)}window.onload=n;window.__ADLE=[]}window.__ADLE.push(f)}


if (typeof document.attachEvent!='undefined') {
   
	addDOMLoadEvent(bl_init);
	/* window.attachEvent('onload',bl_init); */
	
   document.attachEvent('onmousemove',BLmoveMouse);
   document.attachEvent('onclick',BLcheckMove); }
else {
	
	addDOMLoadEvent(bl_init);

  	/* window.addEventListener('load',bl_init,false); */

   document.addEventListener('mousemove',BLmoveMouse,false);
   document.addEventListener('click',BLcheckMove,false);
}

function BLcheckForIE() {
	if (navigator.appName!='Microsoft Internet Explorer') return false;	
appVer = window.navigator.appVersion;
 pos = appVer.indexOf("MSIE ");
 if(pos != -1){
  pos2 = appVer.indexOf(";", pos + 1);
  appVersion = appVer.substring(pos + 5, pos2) - 0;
  if(appVersion <= 5.5){
   return false;
  }
 }
 return true;	
}

var isie=BLcheckForIE();
var bl_oDv=document.createElement("div");
var bl_dvHdr=document.createElement("div");
var bl_dvBdy=document.createElement("div");
var bl_windowlock,bl_boxMove,bl_fixposx,bl_fixposy,bl_lockX,bl_lockY,bl_fixx,bl_fixy,bl_ox,bl_oy,bl_boxLeft,bl_boxRight,bl_boxTop,bl_boxBottom,bl_evt,bl_mouseX,bl_mouseY,bl_boxOpen,bl_totalScrollTop,bl_totalScrollLeft;
bl_boxOpen=false;
bl_ox=10;
bl_oy=10;
bl_lockX=1;
bl_lockY=1;

function bl_init() {
	bl_oDv.appendChild(bl_dvHdr);
	bl_oDv.appendChild(bl_dvBdy);
	bl_oDv.style.position="absolute";
	bl_oDv.style.visibility='hidden';
	document.body.appendChild(bl_oDv);
}

function BLdefHdrStyle() {
	bl_dvHdr.innerHTML=bl_dvHdr.innerHTML;
	bl_dvHdr.style.fontWeight='bold';
	bl_dvHdr.style.bl_width='270px';
	bl_dvHdr.style.fontFamily='arial';
	bl_dvHdr.style.border='1px solid #A5CFE9';
	//bl_dvHdr.style.padding='3';
	//bl_dvHdr.style.fontSize='10';
	bl_dvHdr.style.color='#4B7A98';
	bl_dvHdr.style.background='#D5EBF9';
	bl_dvHdr.style.display='none';
}

// progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://img1.bla.st/static/adshadow.png',sizingMethod='image')";

function BLdefBdyStyle() {
	bl_dvBdy.style.width='270px';
	bl_dvBdy.style.height='246px';
	bl_dvBdy.style.padding='8px 14px 19px 13px';
	if (isie) { 
		bl_dvBdy.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='http://bla.st/static/adshadow.png')";
				//bl_dvBdy.style.backgroundImage="url(/static/adshadow.png)";
//bl_dvBdy.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/static/adshadow.png',sizingMethod='scale')";

	} else {
		bl_dvBdy.style.backgroundImage="url(http://bla.st/static/adshadow.png)";
	}
	bl_dvBdy.style.fontFamily='Verdana, Arial, Sans-Serif';
	bl_dvBdy.style.fontSize='12px';
	bl_dvBdy.style.color='#333';
	bl_dvBdy.style.lineHeight='16px';
}

function BLcheckElemBO(txt) {
if (!txt || typeof(txt) != 'string') return false;
if ((txt.indexOf('body')>-1)&&(txt.indexOf('[')>-1)&&(txt.indexOf('[')>-1)) 
   return true;
else
   return false;
}

function BLscanBO(curNode) {
	var btext = curNode.getAttribute('blbo');
	  if (BLcheckElemBO(btext)) {
         curNode.boHDR=BLgetParam('header',btext);
         curNode.boBDY=BLgetParam('body',btext);
			curNode.boCSSBDY=BLgetParam('cssbody',btext);			
			curNode.boCSSHDR=BLgetParam('cssheader',btext);
			curNode.IEbugfix=(BLgetParam('BLhideSelects',btext)=='on')?true:false;
			curNode.bl_fixx=parseInt(BLgetParam('fixedrelx',btext));
			curNode.bl_fixy=parseInt(BLgetParam('fixedrely',btext));
			curNode.absX=parseInt(BLgetParam('fixedabsx',btext));
			curNode.absY=parseInt(BLgetParam('fixedabsy',btext));
			curNode.offY=(BLgetParam('offsety',btext)!='')?parseInt(BLgetParam('offsety',btext)):10;
			curNode.offX=(BLgetParam('offsetx',btext)!='')?parseInt(BLgetParam('offsetx',btext)):10;
			curNode.fade=(BLgetParam('fade',btext)=='on')?true:false;
			curNode.fadespeed=(BLgetParam('fadespeed',btext)!='')?BLgetParam('fadespeed',btext):0.04;
			curNode.delay=(BLgetParam('delay',btext)!='')?parseInt(BLgetParam('delay',btext)):0;
			if (BLgetParam('requireclick',btext)=='on') {
				curNode.requireclick=true;
				document.all?curNode.attachEvent('onclick',BLshowhideBox):curNode.addEventListener('click',BLshowhideBox,false);
				document.all?curNode.attachEvent('onmouseover',BLhideBox):curNode.addEventListener('mouseover',BLhideBox,false);
			}
			else {// Note : if requireclick is on the stop clicks are ignored   			
   			if (BLgetParam('doubleclickstop',btext)!='off') {
   				document.all?curNode.attachEvent('ondblclick',BLpauseBox):curNode.addEventListener('dblclick',BLpauseBox,false);
   			}	
   			if (BLgetParam('singleclickstop',btext)=='on') {
   				document.all?curNode.attachEvent('onclick',BLpauseBox):curNode.addEventListener('click',BLpauseBox,false);
   			}
   		}
			curNode.bl_windowlock=BLgetParam('bl_windowlock',btext).toLowerCase()=='off'?false:true;
			//curNode.setAttribute("blbo")='';
			curNode.bl_hasbox=1;
	   }
	   else
	      curNode.bl_hasbox=2;   
}


function BLgetParam(param,list) {
	var bl_reg = new RegExp('([^a-zA-Z]' + param + '|^' + param + ')\\s*=\\s*\\[\\s*(((\\[\\[)|(\\]\\])|([^\\]\\[]))*)\\s*\\]');
	var bl_res = bl_reg.exec(list);
	var returnvar;
	if(bl_res)
		return bl_res[2].replace('[[','[').replace(']]',']');
	else
		return '';
}

function BLLeft(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 BLTop(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 bl_ah,bl_ab;
function BLapplyStyles() {
	if(bl_ab)
		bl_oDv.removeChild(bl_dvBdy);
	if (bl_ah)
		bl_oDv.removeChild(bl_dvHdr);
	bl_dvHdr=document.createElement("div");
	bl_dvBdy=document.createElement("div");
	bl_CBE.boCSSBDY?bl_dvBdy.className=bl_CBE.boCSSBDY:BLdefBdyStyle();
	bl_CBE.boCSSHDR?bl_dvHdr.className=bl_CBE.boCSSHDR:BLdefHdrStyle();
	bl_dvHdr.innerHTML=bl_CBE.boHDR;
	bl_dvBdy.innerHTML=bl_CBE.boBDY;
	bl_ah=false;
	bl_ab=false;
	if (bl_CBE.boHDR!='') {		
		bl_oDv.appendChild(bl_dvHdr);
		bl_ah=true;
	}	
	if (bl_CBE.boBDY!=''){
		bl_oDv.appendChild(bl_dvBdy);
		bl_ab=true;
	}	
}

var bl_CSE,bl_iterElem,bl_LSE,bl_CBE,bl_LBE, bl_totalScrollLeft, bl_totalScrollTop, bl_width, bl_height ;
var bl_ini=false;

// Customised function for inner window dimension
function BLSHW() {
	  if (document.body && (document.body.clientWidth !=0)) {
      bl_width=document.body.clientWidth;
      bl_height=document.body.clientHeight;
   }
   if (document.documentElement && (document.documentElement.clientWidth!=0) && (document.body.clientWidth + 20 >= document.documentElement.clientWidth)) {
      bl_width=document.documentElement.clientWidth;   
      bl_height=document.documentElement.clientHeight;   
   }
	if (self.innerHeight) // all except Explorer
	{
		bl_height = self.innerHeight;
	} 
   return [bl_width,bl_height];
}


var bl_ID=null;
function BLmoveMouse(e) {
   //bl_boxMove=true;
	e?bl_evt=e:bl_evt=event;
	
	bl_CSE=bl_evt.target?bl_evt.target:bl_evt.srcElement;
	
	if (!bl_CSE.bl_hasbox) {
	   // Note we need to scan up DOM here, some elements like TR don't get triggered as srcElement
	   bl_iElem=bl_CSE;
	   while ((bl_iElem.parentNode) && (!bl_iElem.bl_hasbox)) {
	      BLscanBO(bl_iElem);
	      bl_iElem=bl_iElem.parentNode;
	   }
	}
	
	if ((bl_CSE!=bl_LSE)&&(!BLisChild(bl_CSE,bl_dvHdr))&&(!BLisChild(bl_CSE,bl_dvBdy))){		
	   if (!bl_CSE.boxItem) {
			bl_iterElem=bl_CSE;
			while ((bl_iterElem.bl_hasbox==2)&&(bl_iterElem.parentNode))
					bl_iterElem=bl_iterElem.parentNode; 
			bl_CSE.boxItem=bl_iterElem;
			}
		bl_iterElem=bl_CSE.boxItem;
		
		if (bl_CSE.boxItem&&(bl_CSE.boxItem.bl_hasbox==1))  {
			bl_LBE=bl_CBE;
			bl_CBE=bl_iterElem;
			if (bl_CBE!=bl_LBE) {
				BLapplyStyles();
				if (!bl_CBE.requireclick)
					if (bl_CBE.fade) {
						if (bl_ID!=null)
							clearTimeout(bl_ID);
						bl_ID=setTimeout("BLfadeIn("+bl_CBE.fadespeed+")",bl_CBE.delay);
					}
					else {
						if (bl_ID!=null)
							clearTimeout(bl_ID);
						bl_COL=1;
						bl_ID=setTimeout("bl_oDv.style.visibility='visible';bl_ID=null;",bl_CBE.delay);						
					}
				if (bl_CBE.IEbugfix) {BLhideSelects();} 
				bl_fixposx=!isNaN(bl_CBE.bl_fixx)?BLLeft(bl_CBE)+bl_CBE.bl_fixx:bl_CBE.absX;
				bl_fixposy=!isNaN(bl_CBE.bl_fixy)?BLTop(bl_CBE)+bl_CBE.bl_fixy:bl_CBE.absY;			
				bl_lockX=0;
				bl_lockY=0;
				bl_boxMove=true;
				bl_ox=bl_CBE.offX?bl_CBE.offX:10;
				bl_oy=bl_CBE.offY?bl_CBE.offY:10;
			}
		}
		else if (!BLisChild(bl_CSE,bl_dvHdr) && !BLisChild(bl_CSE,bl_dvBdy) && (bl_boxMove))	{
			// The conditional here fixes flickering between tables cells.
			if ((!BLisChild(bl_CBE,bl_CSE)) || (bl_CSE.tagName!='TABLE')) {   			
   			bl_CBE=null;
   			if (bl_ID!=null)
  					clearTimeout(bl_ID);
   			BLfadeOut();
   			BLshowSelects();
			}
		}
		bl_LSE=bl_CSE;
	}
	else if (((BLisChild(bl_CSE,bl_dvHdr) || BLisChild(bl_CSE,bl_dvBdy))&&(bl_boxMove))) {
		bl_totalScrollLeft=0;
		bl_totalScrollTop=0;
		
		bl_iterElem=bl_CSE;
		while(bl_iterElem) {
			if(!isNaN(parseInt(bl_iterElem.scrollTop)))
				bl_totalScrollTop+=parseInt(bl_iterElem.scrollTop);
			if(!isNaN(parseInt(bl_iterElem.scrollLeft)))
				bl_totalScrollLeft+=parseInt(bl_iterElem.scrollLeft);
			bl_iterElem=bl_iterElem.parentNode;			
		}
		if (bl_CBE!=null) {
			bl_boxLeft=BLLeft(bl_CBE)-bl_totalScrollLeft;
			bl_boxRight=parseInt(BLLeft(bl_CBE)+bl_CBE.offsetWidth)-bl_totalScrollLeft;
			bl_boxTop=BLTop(bl_CBE)-bl_totalScrollTop;
			bl_boxBottom=parseInt(BLTop(bl_CBE)+bl_CBE.offsetHeight)-bl_totalScrollTop;
			BLdoCheck();
		}
	}
	
	if (bl_boxMove&&bl_CBE) {
		// This added to alleviate bug in IE6 w.r.t DOCTYPE
		bl_bodyScrollTop=document.documentElement&&document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
		bl_bodyScrollLet=document.documentElement&&document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft;
		bl_mouseX=bl_evt.pageX?bl_evt.pageX-bl_bodyScrollLet:bl_evt.clientX-document.body.clientLeft;
		bl_mouseY=bl_evt.pageY?bl_evt.pageY-bl_bodyScrollTop:bl_evt.clientY-document.body.clientTop;
		if ((bl_CBE)&&(bl_CBE.bl_windowlock)) {
			bl_mouseY < -bl_oy?bl_lockY=-bl_mouseY-bl_oy:bl_lockY=0;
			bl_mouseX < -bl_ox?bl_lockX=-bl_mouseX-bl_ox:bl_lockX=0;
			bl_mouseY > (BLSHW()[1]-bl_oDv.offsetHeight-bl_oy)?bl_lockY=-bl_mouseY+BLSHW()[1]-bl_oDv.offsetHeight-bl_oy:bl_lockY=bl_lockY;
			bl_mouseX > (BLSHW()[0]-bl_dvBdy.offsetWidth-bl_ox)?bl_lockX=-bl_mouseX-bl_ox+BLSHW()[0]-bl_dvBdy.offsetWidth:bl_lockX=bl_lockX;			
		}
		bl_oDv.style.left=((bl_fixposx)||(bl_fixposx==0))?bl_fixposx:bl_bodyScrollLet+bl_mouseX+bl_ox+bl_lockX+"px";
		bl_oDv.style.top=((bl_fixposy)||(bl_fixposy==0))?bl_fixposy:bl_bodyScrollTop+bl_mouseY+bl_oy+bl_lockY+"px";		
		
	}
}

function BLdoCheck() {	
	if (   (bl_mouseX < bl_boxLeft)    ||     (bl_mouseX >bl_boxRight)     || (bl_mouseY < bl_boxTop) || (bl_mouseY > bl_boxBottom)) {
		if (!bl_CBE.requireclick)
			BLfadeOut();
		if (bl_CBE.IEbugfix) {BLshowSelects();}
		bl_CBE=null;
	}
}

function BLpauseBox(e) {
   e?bl_evt=e:bl_evt=event;
	bl_boxMove=false;
	bl_evt.cancelBubble=true;
}

function BLshowhideBox(e) {
	//alert(bl_oDv.value);
	bl_oDv.style.visibility=(bl_oDv.style.visibility!='visible')?'visible':'hidden';
}

function BLhideBox(e) {
	bl_oDv.style.visibility='hidden';
}

var bl_COL=0;
var bl_stopfade=false;
function BLfadeIn(fs) {
		bl_ID=null;
		bl_COL=0;
		bl_oDv.style.visibility='visible';
		BLfadeIn2(fs);
}

function BLfadeIn2(fs) {
		bl_COL=bl_COL+fs;
		bl_COL=(bl_COL>1)?1:bl_COL;
		bl_oDv.style.filter='alpha(opacity='+parseInt(100*bl_COL)+')';
		bl_oDv.style.opacity=bl_COL;
		if (bl_COL<1)
		 setTimeout("BLfadeIn2("+fs+")",20);		
}


function BLfadeOut() {
	bl_oDv.style.visibility='hidden';
	
}

function BLisChild(s,d) {
	while(s) {
		if (s==d) {
			return true;
		}
		s=s.parentNode;
	}
	return false;
}

var bl_cSrc;
function BLcheckMove(e) {
	e?bl_evt=e:bl_evt=event;
	bl_cSrc=bl_evt.target?bl_evt.target:bl_evt.srcElement;
	if ((!bl_boxMove)&&(!BLisChild(bl_cSrc,bl_oDv))) {
		BLfadeOut();
		if (bl_CBE&&bl_CBE.IEbugfix) {BLshowSelects();}
		bl_boxMove=true;
		bl_CBE=null;
	}
}

function BLshowSelects(){
   var elements = document.getElementsByTagName("select");
   for (i=0;i< elements.length;i++){
      elements[i].style.visibility='visible';
   }
}

function BLhideSelects(){
   var elements = document.getElementsByTagName("select");
   for (i=0;i< elements.length;i++){
   elements[i].style.visibility='hidden';
   }
}