﻿var plugin, toolTip, mainContainer;

function showToolTip(mainCanvas, sender, args, tipText) {
    mainContainer = mainCanvas;
    if (tipText != null)
    {
        plugin = mainCanvas.getHost();
        if (toolTip == null) {
            var width= tipText.replace(/&quot;/g, '\"').length * 4.5;
            
            var height=14;

            if (tipText.length > 70) {
                var xamlFragment = '<Canvas xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="Tooltip" Width="' + width + '" Height="' + height + '">';
                xamlFragment += '<Canvas.Resources>';
                xamlFragment += '<Storyboard x:Name="tooltipSB" Completed="toolTipDispose">';
                xamlFragment += '<DoubleAnimation BeginTime="0:0:0.5" SpeedRatio="4" Storyboard.TargetName="Tooltip" Storyboard.TargetProperty="Opacity" To="0"/>';
                xamlFragment += '</Storyboard>';
                xamlFragment += '</Canvas.Resources>';
                xamlFragment += '<Rectangle Canvas.Left="-1" Canvas.Top="2" Width="' + (width + 2) + '" Height="' + height + '" Fill="#FF6E6C6C"  RadiusX="3" RadiusY="3"/>';
                xamlFragment += '<Rectangle Width="' + width + '" Height="' + height + '" Fill="#FFFFE1"  RadiusX="3" RadiusY="3"/>';
                xamlFragment += '<TextBlock Canvas.Top="2" Canvas.Left="2" Text="' + tipText.substring(0, 65) + '...' + '" FontFamily="Arial" FontSize="9"/>';
                xamlFragment += '</Canvas>';
            } else {
                var xamlFragment = '<Canvas xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="Tooltip" Width="' + width + '" Height="' + height + '">';
                    xamlFragment += '<Canvas.Resources>';
                    xamlFragment += '<Storyboard x:Name="tooltipSB" Completed="toolTipDispose">';
                    xamlFragment += '<DoubleAnimation BeginTime="0:0:0.5" SpeedRatio="4" Storyboard.TargetName="Tooltip" Storyboard.TargetProperty="Opacity" To="0"/>';
                    xamlFragment += '</Storyboard>';
                    xamlFragment += '</Canvas.Resources>';
                    xamlFragment += '<Rectangle Canvas.Left="-1" Canvas.Top="2" Width="' + (width + 2) + '" Height="' + height + '" Fill="#FF6E6C6C"  RadiusX="3" RadiusY="3"/>';
                    xamlFragment += '<Rectangle Width="' + width + '" Height="' + height + '" Fill="#FFFFE1"  RadiusX="3" RadiusY="3"/>';
                    xamlFragment += '<TextBlock Canvas.Top="2" Canvas.Left="2" Text="' + tipText + '" FontFamily="Arial" FontSize="9"/>';
                    xamlFragment += '</Canvas>';
            }
           

            toolTip = plugin.content.createFromXaml(xamlFragment, false);
            
            var cursorPosition = args.getPosition(mainCanvas);
            if (tipText.length > 70) {
                toolTip["Canvas.Left"] = 0
            } else {
              toolTip["Canvas.Left"] = cursorPosition.x - (cursorPosition.x + width > mainCanvas.Width ? width : 0);
 
            }
           toolTip["Canvas.Top"] = cursorPosition.y;
            mainCanvas.children.add(toolTip);
            hideToolTip(mainCanvas)
        }
    }
}

function hideToolTip(mainCanvas)
{
    if (toolTip != null)
     mainCanvas.findName("tooltipSB").Begin();
}

function toolTipDispose(sender, args)
{
 mainContainer.children.remove(toolTip)
 toolTip=null;
}
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();