﻿//*********************** Tool Tip Vertical Placement Enum ***************************
var PlacementTypeY = {
    'ABOVE': 0,
    'CENTER': 1,
    'BELOW': 2,
    'TOP_JUSTIFIED' : 3,
    'MOUSE': 4
};

//*********************** Tool Tip Horizontal Placement Enum ***************************
var PlacementTypeX = {
    'LEFT': 0,
    'CENTER': 1,
    'RIGHT': 2,
    'MOUSE': 3
};


//*********************** Tool Tip Properties Data Class ***************************
function qa_ToolTipProperties(className, containerId, headerId, questionID, answerID, placementY, placementX, marginY, marginX) {
    
	this.m_ClassName = className;
    this.m_ContainerId = containerId;
    this.m_HeaderId = headerId;
	this.m_answerID = answerID;	
    this.m_questionID = questionID;	
    this.m_PlacementY = placementY;
    this.m_PlacementX = placementX;
    this.m_MarginX = marginX;
    this.m_MarginY = marginY;
	
}

//*********************** Tool Tip Handler Control ***************************
function qa_ToolTipHandler() {
	
    this.m_qa_ToolTipPropertiesCollection = new Array();
    this.m_qa_ToolTipPropertiesEnumeration = new Array(); 
	var closeBtn = document.getElementById('closeBtn');
	

}

qa_ToolTipHandler.prototype.AddToolTip = function(qa_ToolTipProperties) {
   this.m_qa_ToolTipPropertiesCollection[qa_ToolTipProperties.m_ClassName] = qa_ToolTipProperties;
	//alert(qa_ToolTipProperties);
    this.m_qa_ToolTipPropertiesEnumeration.push(qa_ToolTipProperties.m_ClassName);
    this.RegisterElements(qa_ToolTipProperties.m_ClassName);
};

qa_ToolTipHandler.prototype.Display = function(e) {
    e = e || window.event;
    var element = e.srcElement || e.target;
    var elementClass = this.GetClassName(element);

    if (this.m_qa_ToolTipPropertiesCollection[elementClass].m_HeaderId != null) {
        document.getElementById(this.m_qa_ToolTipPropertiesCollection[elementClass].m_HeaderId).innerHTML = element.getAttribute('tooltip_header_text');
    }

    if (this.m_qa_ToolTipPropertiesCollection[elementClass].m_questionID != null) {
        if (element.getAttribute('tooltip-action') != null) {
            document.getElementById(this.m_qa_ToolTipPropertiesCollection[elementClass].m_questionID).innerHTML = element.getAttribute('tech_title_text') + '';
        }
        else {
            document.getElementById(this.m_qa_ToolTipPropertiesCollection[elementClass].m_questionID).innerHTML = element.getAttribute('tech_title_text');
        }        
    }	
	if (this.m_qa_ToolTipPropertiesCollection[elementClass].m_answerID != null) {
        if (element.getAttribute('tooltip-action') != null) {            
			document.getElementById(this.m_qa_ToolTipPropertiesCollection[elementClass].m_answerID).innerHTML = element.getAttribute('tech_body_text') + '';
			
        }
        else {
            document.getElementById(this.m_qa_ToolTipPropertiesCollection[elementClass].m_answerID).innerHTML = element.getAttribute('tech_body_text');
        }
        
    }
	

    document.getElementById(this.m_qa_ToolTipPropertiesCollection[elementClass].m_ContainerId).style.display = "block";

    this.SetVerticalPosition(element, e);
    this.SetHorizontalPosition(element, e);
};

qa_ToolTipHandler.prototype.Hide = function(e) {
    e = e || window.event;
    var element = e.srcElement || e.target;
    var elementClass = this.GetClassName(element);
    document.getElementById(this.m_qa_ToolTipPropertiesCollection[this.m_qa_ToolTipPropertiesEnumeration[0]].m_ContainerId).style.display = "none";
	
};

qa_ToolTipHandler.prototype.SetVerticalPosition = function(targetElement, eventArgs) {
    var elementClass = this.GetClassName(targetElement);
    var tooltipContainer = document.getElementById(this.m_qa_ToolTipPropertiesCollection[elementClass].m_ContainerId);

    var tipHeight = 0;
    if (tooltipContainer.currentStyle) { tipHeight = tooltipContainer.currentStyle.pixelHeight; }
    else { tipHeight = parseInt(document.defaultView.getComputedStyle(tooltipContainer, '').height); }
    if (isNaN(tipHeight)) { tipHeight = tooltipContainer.offsetHeight; }

    var targetHeight = 0;
    if (targetElement.currentStyle) { targetHeight = targetElement.currentStyle.pixelHeight; }
    else { targetHeight = parseInt(document.defaultView.getComputedStyle(targetElement, '').height); }
    if (isNaN(targetHeight)) { targetHeight = targetElement.offsetHeight; }

   
	var curtop = 0;
	var ie7=document.all && window.XMLHttpRequest && !window.opera;
	if( ie7 ){
		var count = 0;
		while(targetElement.offsetParent){
			curtop = curtop + targetElement.offsetTop;
			targetElement = targetElement.offsetParent;
			count ++;
		}
		yOffset = curtop - tipHeight - this.m_qa_ToolTipPropertiesCollection[elementClass].m_MarginY;
	}
	else{
		yOffset = targetElement.offsetTop - tipHeight - this.m_qa_ToolTipPropertiesCollection[elementClass].m_MarginY;
		//yOffset = targetElement.parentNode.parentNode.offsetTop +30;
	}
	

	//alert(yOffset);
    tooltipContainer.style.top = yOffset + "px";
	//alert(tooltipContainer.style.top);

	
	
	
;};

qa_ToolTipHandler.prototype.SetHorizontalPosition = function(targetElement, eventArgs) {
    var elementClass = this.GetClassName(targetElement);
    var tooltipContainer = document.getElementById(this.m_qa_ToolTipPropertiesCollection[elementClass].m_ContainerId);

    var tipWidth = 0;
    if (tooltipContainer.currentStyle) { tipWidth = parseInt(tooltipContainer.currentStyle.width); }
    else { tipWidth = parseInt(document.defaultView.getComputedStyle(tooltipContainer, '').width); }
    if (isNaN(tipWidth)) { tipWidth = tooltipContainer.offsetWidth; }

    var targetWidth = 0;
    if (targetElement.currentStyle) { targetWidth = parseInt(targetElement.currentStyle.width); }
    else { targetWidth = parseInt(document.defaultView.getComputedStyle(targetElement, '').width); }
    if (isNaN(targetWidth)) { targetWidth = targetElement.offsetWidth; }

    var xOffset = 0;
   
   var ie7=document.all && window.XMLHttpRequest && !window.opera;
	if( ie7 ){
		var count = 0;
		var curleft = 0;
		while(targetElement.offsetParent){
			curleft = curleft + targetElement.offsetLeft;
			targetElement = targetElement.offsetParent;
			count ++;
		}
		xOffset = curleft + targetElement.offsetLeft - tipWidth - this.m_qa_ToolTipPropertiesCollection[elementClass].m_MarginX;
		//alert(xOffset+"-"+count);
	}
	else{
		xOffset = targetElement.offsetLeft - tipWidth - this.m_qa_ToolTipPropertiesCollection[elementClass].m_MarginX;
	}
    tooltipContainer.style.left = xOffset + "px";
};


qa_ToolTipHandler.prototype.GetClassName = function(element) {
    var elementClassName = element.className;
    for (index = 0; index < this.m_qa_ToolTipPropertiesEnumeration.length; index++) {
        var tooltipClassName = this.m_qa_ToolTipPropertiesCollection[this.m_qa_ToolTipPropertiesEnumeration[index]].m_ClassName;
        if (elementClassName.indexOf(tooltipClassName) > -1) {
            return tooltipClassName;
        }
    }
    return null;
};
qa_ToolTipHandler.prototype.RegisterElements = function(className){
    var pageElements = document.getElementsByTagName('*');
	for (index = 0; index < pageElements.length; index++) {
        var pageElement = pageElements[index];
		if (pageElement.className.indexOf(className, 0) > -1) {		
			//alert(pageElement.name)
           AddHandler(pageElement, 'mouseover', CreateDelegate(this, this.Display));
		   AddHandler(pageElement, 'mouseout', CreateDelegate(this, this.Hide));
        }
    }
};



var toolTipQA = null;
function qa_InitializeItcToolTipManager() {	
	toolTipQA = new qa_ToolTipHandler();
	toolTipQA.AddToolTip(new qa_ToolTipProperties('technology_rolloverBox', 'ToolTipQAContainer', null, 'ToolTipQuestion','ToolTipAnswer',PlacementTypeY.MOUSE, PlacementTypeX.LEFT, -15, -147));	
	toolTipQA.AddToolTip(new qa_ToolTipProperties('technology_security_rolloverBox', 'ToolTipQAContainer', null, 'ToolTipQuestion','ToolTipAnswer',PlacementTypeY.MOUSE, PlacementTypeX.LEFT, -15, -147));
	
} 

