/* innerhelp displaying */
var helpDiv;
var maskIframe;
var isIE;

function initInnerHelp() {
	var spanTags = document.getElementsByTagName('span');
	var innerHelpTags = new Array();
	isIE = (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && navigator.userAgent.toLowerCase().indexOf('opera') == -1);
	//find innerhelp tags
	for(var i=0; i<spanTags.length; i++){
		if(spanTags[i].className && spanTags[i].className.indexOf('innerhelp') != -1){
			innerHelpTags[innerHelpTags.length] = spanTags[i];
		}
	}
	
	if(innerHelpTags.length != 0){		
		//set event handlers on innerhelps nested <a> node
		for(var i=0; i<innerHelpTags.length; i++){
			aTag = innerHelpTags[i].firstChild;
			aTag.onmouseover = function(e) { showHelp(this,e ? e : window.event) };
			aTag.onmouseout = function(e) { hideHelp() };
		}
	}	
}

function showHelp(node, event){
	//create help div
	if(! helpDiv){
		helpDiv = document.getElementsByTagName("body").item(0).appendChild(document.createElement("div"));
		helpDiv.style.display = 'none';		
		helpDiv.style.visibility = 'hidden';
		helpDiv.className = 'help';
		helpDiv.style.zIndex = 1000;
		helpDiv.style.position = 'absolute';
	}
	//show
	helpDiv.style.display = 'block';
	
	//get help text
	var helpText = getHelpText(node);	
	for(var i=0; i<helpText.childNodes.length; i++){
		helpDiv.appendChild(helpText.childNodes[i].cloneNode(true));
	}
	
	//set position
	//FIXME: mozilla
    var mouseX;
    var mouseY;
    if(isIE){
    	//IE
	    mouseX = event.clientX + document.documentElement.scrollLeft;
		mouseY = event.clientY + document.documentElement.scrollTop;	
	 }else{
	 	//others
	 	mouseX = event.pageX;
	 	mouseY = event.pageY;
	 }
	/*alert('right:'+mouseX+'bottom:'+mouseY);*/
	//alert('width:'+document.body.clientWidth + ' height:'+document.body.clientHeight);
	var divLeft = 0;
	var divTop = 0;	
	divLeft = mouseX - helpDiv.offsetWidth;
	divTop = mouseY - helpDiv.offsetHeight;
	
	//alert('mouseX:'+mouseX+' mouseY:'+mouseY+' divLeft:'+divLeft+' divTop:'+divTop+' width:'+helpDiv.offsetWidth+' height:'+helpDiv.offsetHeight);
	if(divLeft - 20 <= 0){
		divLeft = 20;
		divTop -= 5;
	}
	if(divTop <=0){
		divTop = 20;
		divLeft -= 5;
	}
	helpDiv.style.left = (divLeft - 20)+'px'; 
	helpDiv.style.top =  (divTop - 5)+'px'; 

		
	if(isIE){
		fixLayer(helpDiv,true);
	}
	helpDiv.style.visibility = 'visible';
}

function getHelpText(node){
	var text;
	for(var i=0; i<node.childNodes.length && ! text; i++){
		if(node.childNodes[i].className == 'innerhelp_text'){
			text = node.childNodes[i].getElementsByTagName('span').item(0);
		}
	}
	return text;
}

function hideHelp(){
	if(helpDiv){
		helpDiv.style.display = 'none';
		helpDiv.style.visibility = 'hidden';

		while(helpDiv.firstChild){
			helpDiv.removeChild(helpDiv.firstChild);
		}
		//ie suxx
		if(isIE){
			fixLayer(helpDiv,false);
		}
	}
}

//fix div over select
function fixLayer(node,visible){
	if(visible){
		if(! maskIframe){
			var body = document.getElementsByTagName("body").item(0);
			body.insertAdjacentHTML("beforeEnd", '<IFRAME style="position: absolute; display:none;" src="javascript:false;" frameborder="0" scrolling="no" id="mask"/>'); 
			maskIframe = document.getElementById('mask');
		}
		//copy position and dimensions	
		var left = 0;
		var top = 0;
		var offsetParent = node;					
		while(offsetParent){
			left += offsetParent.offsetLeft;
			top += offsetParent.offsetTop;
			offsetParent = offsetParent.offsetParent;
		}
	  	maskIframe.style.left = left;
	    maskIframe.style.top = top;
	    maskIframe.style.width = node.offsetWidth;
	    maskIframe.style.height = node.offsetHeight;       	
	    maskIframe.style.zIndex = node.style.zIndex - 1;
	   	//alert(' iframe layer: '+ iframe.style.zIndex+'helptext layer: '+(helpText.style.zIndex)+' top layer:'+helpText.getElementsByTagName('span').item(0).style.zIndex);       			
	    maskIframe.style.display = 'block';       			
    }else{
    	if(maskIframe){
    		maskIframe.style.display = 'none';
    	}
    }
}

