﻿var tooltip;
var myTimer;
var myTimer2;

window.addEvent('domready', function () {

    $$('.searchresult').addEvent('mouseenter', MouseEnter);
	$$('.searchresult').addEvent('mouseleave', MouseLeave);
	tooltip = $('article_tooltip');
  	
});

function getQuerystring(key, default_)
{
  if (default_==null) default_=""; 
  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);
  if(qs == null)
    return default_;
  else
    return qs[1];
} 

var hovered_result;

function MouseEnter(){
    this.addClass('hovered');
    hovered_result = this;
    myTimer = GetArticleInfo.delay(500);
}

function GetArticleInfo(){
    $clear(myTimer2);
    GetArticleDescription(hovered_result.getProperty('name'));
}

function ShowTooltip(){
    tooltip.setStyles({display: 'block'});
    tooltip.setStyle('top',hovered_result.getPosition().y);
   
    var max_height = window.getHeight() + getScrollTop();
    if ((hovered_result.getPosition().y + tooltip.getHeight() > max_height) && (max_height-tooltip.getHeight() > $('search_results').getPosition().y)){
        var new_y = hovered_result.getPosition().y+hovered_result.getHeight()-tooltip.getHeight();
        
        if (new_y < $('search_results').getPosition().y)
            new_y = $('search_results').getPosition().y;
        
        tooltip.setStyle('top', new_y);
    }
        
}

function MouseLeave(e){
    this.removeClass('hovered');
    $clear(myTimer); 
    myTimer2 = HideArticleInfo.delay(500);
}

function HideArticleInfo(){
    tooltip.setStyle('display', 'none');
}

function GetArticleDescription(id) 
{
    eirm.net.risklibrary.webservices.Repository.GetArticleDescription(id, SucceededCallback)
}

function SucceededCallback(result, eventArgs)
{
    tooltip.innerHTML = result;
    ShowTooltip();
}

function SucceededCallbackWithContext(result, userContext, methodName)
{
    var readResult;

    if (userContext == "XmlDocument")
	{
	    if (document.all) 
	        readResult = result.documentElement.xml;
		else // Firefox
		   readResult = result.documentElement.text;
		
		tooltip.innerHTML=readResult;
	 
	    ShowTooltip(); 
	}
}

function FailedCallback(error)
{
    alert("Service Error: " + error.get_message());
}

function getWindowHeight() {	
	return document.all ? Math.max(Math.max(document.documentElement.offsetHeight, document.documentElement.scrollHeight), Math.max(document.body.offsetHeight, document.body.scrollHeight)) : (document.body ? document.body.scrollHeight : ((document.documentElement.scrollHeight != 0) ? document.documentElement.scrollHeight : 0));
}

function getScrollTop() {
    return document.all ? (!document.documentElement.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop) : ((window.pageYOffset != 0) ? window.pageYOffset : 0);
}
