var 	iArrMax=3, iBUAll=0, pos=[0,0], iBUCurr=-1, iBUPrev=-1,
	bMove=true, bClick=false, idTimerMapCty, iSec5000=5000, idTimerMapMove, iSec600=6,
	mapSize=[1100,490], mapDispSize=[900,194], mapAddOn=[60,50],
	mapPosLeft=-mapAddOn[0], mapPosTop=-mapAddOn[1], 
	mapClipLeft=mapAddOn[0], mapClipTop=mapAddOn[1], 
	mapClipBottom=mapDispSize[1]+mapAddOn[1], mapClipRight=mapDispSize[0]+mapAddOn[0],  
	moveByPixel=1, arrowHoverSize=[40,100];    /*37,98*/
	
function initializeMe() {
	displayer( iBUAll );
	if (document.layers) { document.captureEvents(Event.MOUSEMOVE); }
}	

function getNode(str) {
	return document.getElementById(str);
}

function findObjPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do { curleft += obj.offsetLeft; curtop += obj.offsetTop; } while (obj = obj.offsetParent);
		return [curleft,curtop];
	}
}

function moveInMap( obj, e){
	if ( navigator.appName=='Netscape' ) { pos=[e.pageX,e.pageY]; } else { pos=[e.clientX,e.clientY];}
	pos2 = findObjPos(obj);
	pos=[pos[0]+mapPosLeft-pos2[0],pos[1]+mapPosTop-pos2[1]];
}

function setObjValue( objTemp, value ) {
	if (objTemp==null) return;
	objTemp.textContent=value; objTemp.innerHTML=value;
	if (navigator.appName=='Netscape') { objTemp.textContent=value; } else { objTemp.innerHTML=value; }		
}

function setObj_A( objTemp, ref, value ) {
	if (objTemp==null) return;
	if (ref!=null) objTemp.href=ref;
	if (navigator.appName=='Netscape') { objTemp.textContent=value; } else { objTemp.innerHTML=value; }		
}

function toggleMapMovement() {

	
	// alert( bMove );
	var node=getNode("btnLocator");
	bMove = true; node.style.visibility='hidden';

}

function BUClick( iBU ) {

	var node=getNode("btnLocator");
	
	bMove = false; node.style.visibility='visible';
	
	node.style.left=""+(pos[0]-1)+"px";
	node.style.top=""+(pos[1]-3)+"px";
	
	//bMove = (!bMove) ? true : false; if (!bMove) {node.style.visibility='visible';} else {node.style.visibility='hidden';}
	bClick= true;
	displayer( iBU );
}

function displayer( iBU ) {
	var meElem, prevElem;
	
	if (!bMove && !bClick ) return;
	
	if ( iBUCurr !=iBU ) {
		if ( (meElem=getNode( 'btn' + arrNames[iBU][0] )) != null ) {
			if ( iBUPrev !=-1 ) prevElem=getNode( 'btn' + arrNames[iBUPrev][0] );
			meElem.style.cursor='pointer';
			
			if ( arrNames[iBU][1]=='Worldwide' ) { setObjValue( getNode( "lblCountry" ), 'Worldwide' );} 
			else { setObjValue( getNode( "lblCountry" ), '' + arrNames[iBU][1] );}

			for (i=1,j=0,k=0; i<=7; i++) { // j is iBU; k is iWorld;
				if (i>=1 && i<=3) {if (j<arrNames[iBU][2].length && arrNames[iBU][2][j][0]==0) {strName=arrNames[iBU][2][j][1];strLink='/encyclopedia/vulnerability/'+formatPageName(strName)+'.html';j++;} else {strName=arrNames[0][2][k][1];strLink='/encyclopedia/vulnerability/'+formatPageName(strName)+'.html';k++;}}
				if (i>=4 && i<=6) {if (i==4) k=3;if (j<arrNames[iBU][2].length && arrNames[iBU][2][j][0]==1) {strName=arrNames[iBU][2][j][1];strLink='/encyclopedia/virus/'+formatPageName(strName)+'.html';j++;} else {strName=arrNames[0][2][k][1];strLink='/encyclopedia/virus/'+formatPageName(strName)+'.html';k++;}}
				if (i==7) {if (i==7) k=6;if (j<arrNames[iBU][2].length && arrNames[iBU][2][j][0]==2) {strName=arrNames[iBU][2][j][1];strLink=null;} else {strName=arrNames[0][2][k][1];strLink=null;}}
				if (strName.length > 29) { strName=strName.substring(0,26)+"..."; }
				setObj_A( getNode("aRef"+i), strLink, strName);
			}

			iBUCurr=iBU;
			iBUPrev=iBUCurr;
		}
	}
	bClick = false;
}

function hideArrow() {	
	dispArrow( false, 'imgArrowDn' ); 
	dispArrow( false, 'imgArrowUp' );
	dispArrow( false, 'imgArrowRt' );
	dispArrow( false, 'imgArrowLt' );
}

function showArrow() {
	var curPosMap=[pos[0],pos[1]], strCurPos='',iAdjust=200;
	
	if ( checkIn( curPosMap, [arrowHoverSize[0]+iAdjust, 0], [mapDispSize[0]-arrowHoverSize[0]-iAdjust, arrowHoverSize[0]]) ) { strCurPos='Up'; }
	else if ( checkIn( curPosMap, [arrowHoverSize[0]+iAdjust, mapDispSize[1]-arrowHoverSize[0]], [mapDispSize[0]-arrowHoverSize[0]-iAdjust, mapDispSize[1]]) ) { strCurPos='Dn'; }
	else if ( checkIn( curPosMap, [0, arrowHoverSize[0]], [arrowHoverSize[0], mapDispSize[1]-arrowHoverSize[0]]) ) { strCurPos='Lt'; }
	else if ( checkIn( curPosMap, [mapDispSize[0]-arrowHoverSize[0]-210, arrowHoverSize[0]], [mapDispSize[0]-210, mapDispSize[1]-arrowHoverSize[0]]) ) { strCurPos='Rt'; }
	
	dispArrow( strCurPos=='Dn' && mapClipBottom<mapSize[1], 'imgArrowDn' ); 
	dispArrow( strCurPos=='Up' && mapClipTop>0, 'imgArrowUp' );
	dispArrow( strCurPos=='Rt' && mapClipRight<mapSize[0], 'imgArrowRt' );
	dispArrow( strCurPos=='Lt' && mapClipLeft>0, 'imgArrowLt' );
}

function checkIn( curPosMap, coord1, coord2) {
	if ( curPosMap[0] > coord1[0] && curPosMap[0] < coord2[0] && curPosMap[1] > coord1[1] && curPosMap[1] < coord2[1] ) { return true; }
	return false;
}

function moveMapDetails( strDir ) {
	var node, moveByX=0, moveByY=0;
	
	if (strDir=='Up' && mapClipTop>0) { moveByY=+moveByPixel; }
	else if (strDir=='Dn' && mapClipBottom<mapSize[1]) {  moveByY=-moveByPixel;  }
	else if (strDir=='Rt' && mapClipRight<mapSize[0]) { moveByX=-moveByPixel; }
	else if (strDir=='Lt' && mapClipLeft>0) { moveByX=moveByPixel; }

	if (moveByX==0 && moveByY==0) {
		clearInterval( idTimerMapMove );
		node=getNode('imgArrow'+strDir);
		node.style.visibility='hidden';
	} else {
		mapPosTop+=moveByY; mapClipTop-=moveByY; mapClipBottom-=moveByY;
		mapPosLeft+=moveByX; mapClipLeft-=moveByX; mapClipRight-=moveByX;	

		node=getNode('imgWorldMap');	
		node.style.top=''+(mapPosTop)+'px'; node.style.left=''+(mapPosLeft)+'px'; 
		node.style.clip='rect('+mapClipTop+'px,'+mapClipRight+'px,'+mapClipBottom+'px,'+mapClipLeft+'px)';
	}
}

function moveMap( strDir ) {
	moveMapDetails(strDir); 
	idTimerMapMove=setInterval( "moveMapDetails('"+strDir+"')", iSec600);
}

function stopMap( ) {
	clearInterval( idTimerMapMove );
}

function dispArrow( bDisp, id ) {

	if (!bMove) return;
		
	var node=getNode(id);  
	if (node != null && bDisp) {node.style.visibility='visible';} else {node.style.visibility='hidden';}
}

function genMyBUPos( strBU, strBUName, iLeft, iTop, iRadius, iLevel, iSeq ) {
	var iSize=3; iTop+=iSize; iLeft+=iSize; 
	document.write( '<area shape="circle" coords="' + iLeft + ',' + iTop + ',' + iSize + '" ref="." alt="' + strBUName + '" onmouseover="displayer( ' + iSeq + ' );" onclick="BUClick( ' + iSeq + ' );" >' );
	document.write( '<img class="btn" src="/images/Circle-' + '4' + '.gif" id="btn' + strBU + '" alt="' + strBUName + '"  onmouseover="displayer( ' + iSeq + ' );" />' );
}

function formatPageName(str) {

	return str.toLowerCase().replace("/","_").replace(" ", "");

}
