//set up global variables
var currentTooltipTriggerId = '';
var tooltipContent;
var tooltipTriggerType;
var thisTriggerId;
var tooltipTriggerPos;
var thisTooltipHeightOffset;

$(document).ready(function(){

	if( $('.tooltipTrigger').length > 0 ){

		 //set listener behaviour for mouse entering tooltip trigger
	     $('.tooltipTrigger').mouseenter(function () {
	     
	     	  tooltipsContentAjaxRequest();
	  
	          //find trigger attributes 
		      thisTriggerId = $(this).attr('id');
		      currentTooltipTriggerId = thisTriggerId;
		      tooltipTriggerType = $(this).attr('rel');
		      
		      //find trigger position
		      tooltipTriggerPos = findPos(document.getElementById(thisTriggerId));
		      
		      //build tooltip popup html
			  tooltipPopup = document.createElement('div');
	    	  tooltipPopup.setAttribute( 'id', 'tooltipPopup' );
	    	  
	    	  if( thisTriggerId.split('Right').length > 1 ){
	    	  	tooltipPopup.className = 'tooltipPopup tooltipPopupRight';
	    	  }
	    	  else if( thisTriggerId.split('Left').length > 1 ){
	    	  	tooltipPopup.className = 'tooltipPopup tooltipPopupLeft';
	    	  }
	    	  
	    	  tooltipPopupBox = document.createElement('div');
	    	  tooltipPopupBox.className = 'tooltipPopupBox';
	    	  
	    	  tooltipPopupBoxBody = document.createElement('div');
	    	  tooltipPopupBoxBody.className = 'tooltipPopupBoxBody';
	    	  
	    	  tooltipPopupBoxBodyContent = document.createElement('div');
	    	  tooltipPopupBoxBodyContent.setAttribute( 'id', 'tooltipPopupBoxBodyContent' );
	    	  tooltipPopupBoxBodyContent.className = 'tooltipPopupBoxBodyContent clearfix';
	    	  
	    	  tooltipPopupBoxBottom = document.createElement('div');
	    	  tooltipPopupBoxBottom.className = 'tooltipPopupBoxBottom';
	    	  
	    	  tooltipPopupBoxPointer = document.createElement('span');
	    	  tooltipPopupBoxPointer.setAttribute( 'id', 'tooltipPopupBoxPointer' );
	    	  tooltipPopupBoxPointer.className = 'tooltipPopupBoxPointer';
	    	  
	    	  tooltipPopupBoxBody.appendChild(tooltipPopupBoxBodyContent);
	    	  
	    	  tooltipPopupBox.appendChild(tooltipPopupBoxBody);
	    	  tooltipPopupBox.appendChild(tooltipPopupBoxBottom);
	    	  tooltipPopupBox.appendChild(tooltipPopupBoxPointer);
	    	      	  
	    	  tooltipPopup.appendChild(tooltipPopupBox);
	    
	    	  //append new tooltip html 
	    	  $('body').append(tooltipPopup);
	    	  
	    	  //make ajax request for content
	    	  tooltipsContentAjaxRequest();
	    	  
	    	//set listener behaviour for mouse leaving the new tooltip popup
		    $('.tooltipPopup').mouseleave(function (e) {
		
		   		  //check to see if user is moving outside of the tooltip trigger
		        	 
				  var mouseXPos = e.pageX
				  var mouseYPos = e.pageY;
				
				  var tooltipTriggerPos = findPos(document.getElementById(currentTooltipTriggerId));
				  var tooltipTriggerWidth = $('#' + currentTooltipTriggerId).width();
				  var tooltipTriggerHeight = $('#' + currentTooltipTriggerId).height();
				
			       if( (mouseXPos >= tooltipTriggerPos[0]) && (mouseXPos <= (tooltipTriggerPos[0] + tooltipTriggerWidth)) && (mouseYPos >= tooltipTriggerPos[1]) && (mouseYPos <= (tooltipTriggerPos[1] + tooltipTriggerHeight))){
			            
			       }
			       else{
			            $('#tooltipPopup').remove();
			            currentTooltipTriggerId = '';
			       }
		
		    });
				
	 
	 
	    });
	    
	    //set listener behaviour for mouse leaving the tooltip trigger
	    $('.tooltipTrigger').mouseleave(function (e) {
	
	   		  //check to see if user is moving outside of tooltip
	        	 
			  var mouseXPos = e.pageX
			  var mouseYPos = e.pageY;
			  
			  var tooltipPopupPos = findPos(document.getElementById('tooltipPopup'));
			  var tooltipPopupWidth = $('#tooltipPopup').width();
			  var tooltipPopupHeight = $('#tooltipPopup').height();
			
		       if( (mouseXPos >= tooltipPopupPos[0]) && (mouseXPos <= (tooltipPopupPos[0] + tooltipPopupWidth)) && (mouseYPos >= tooltipPopupPos[1]) && (mouseYPos <= (tooltipPopupPos[1] + tooltipPopupHeight))){
		            
		       }
		       else{
		           $('#tooltipPopup').remove();
		           currentTooltipTriggerId = '';
		       }
	
	    });
	    
	}
    
    
});

//set up request object
function tooltipsContentAjaxRequest(){
  
  var tooltipsContentXMLRequest;
  
  try{
    // Firefox, Opera 8.0+, Safari
      tooltipsContentXMLRequest=new XMLHttpRequest();
    }
  catch (e){
    // Internet Explorer
    try{
        tooltipsContentXMLRequest=new ActiveXObject('Msxml2.XMLHTTP');
      }
    catch (e){
      try{
          tooltipsContentXMLRequest=new ActiveXObject('Microsoft.XMLHTTP');
        }
      catch (e){
          alert('Your browser does not support AJAX!');
        }
      }
    }
    
    //process return
    tooltipsContentXMLRequest.onreadystatechange=function(){
    
       if(tooltipsContentXMLRequest.readyState==4){
       
			var tooltipsContentXML = tooltipsContentXMLRequest.responseXML;
            var tooltipNodes = tooltipsContentXML.documentElement;

	        //loop over nodes to obtain the relevant cdata for this tooltip type
	        for (iNode = 0; iNode < tooltipNodes.childNodes.length; iNode++){
	        
	        	if(tooltipNodes.childNodes[iNode].nodeType==1){
	        	
	        		if( tooltipNodes.childNodes[iNode].getAttribute('type') == tooltipTriggerType ){
	        		
		           		tooltipContent = tooltipNodes.childNodes[iNode].childNodes[0].data;
		           		
		           		if( document.getElementById('tooltipPopupBoxBodyContent') != null ){
			           		//write relevant cdata to tooltip popup content area
			           		document.getElementById('tooltipPopupBoxBodyContent').innerHTML = tooltipContent;
			           	}                		
	           		
	           		}
	           		
	           
				}   
	           
	        } 
	    
	    //position new tooltip popup based on trigger and tooltip popup attributes   
	    thisTooltipHeightOffset = ($('#tooltipPopup').height()/2)-10;
    	  
    	if( thisTriggerId.split('Right').length > 1 ){
			$('#tooltipPopup').css({ position: "absolute", top: (tooltipTriggerPos[1])-thisTooltipHeightOffset, left: tooltipTriggerPos[0]+17 });
		}else if( thisTriggerId.split('Left').length > 1 ){
			$('#tooltipPopup').css({ position: "absolute", top: (tooltipTriggerPos[1])-thisTooltipHeightOffset, left: tooltipTriggerPos[0]-178 });
		}
		$('#tooltipPopupBoxPointer').css({ position: "absolute", top: thisTooltipHeightOffset+1});      		
            
       }
       
  }
  //make ajax request
  if(tooltipsContentXMLRequest){

    tooltipsContentXMLRequest.open('GET', '/waterstonesweb/scripts/tooltips_content.xml', true);
    tooltipsContentXMLRequest.send(null);
  }
 
}

function findPos(obj) {
  var curleft = curtop = 0;
  try{
	  if (obj.offsetParent) {
	    curleft = obj.offsetLeft
	    curtop = obj.offsetTop
	    while (obj = obj.offsetParent) {
	      curleft += obj.offsetLeft
	      curtop += obj.offsetTop
	    }
	  }
	}
	catch(err){
	}
  return [curleft,curtop];
}



