﻿
var plugin = null;
var menu = null;
var menuTitle = null;
var photoBox = null;
var photoBoxImage = null;
var photoBoxName = null;
var mainCanvas = null;
var isMouseCaptured = false;
var mouseY = -1;
var mouseX = -1;
var downProcessed = false;

function doMouseDown(sender, args) 
{
  if (!downProcessed)
  {
    if (sender.Name == "tree")
    {
      downProcessed = true;
      menuHide();
      mouseY = args.getPosition(null).y;
      mouseX = args.getPosition(null).x;
      isMouseCaptured = true;
      sender.CaptureMouse();
      sender.Cursor = "Stylus";
    }
    else
    {
      if (sender.Name.startsWith("person"))
      {
        downProcessed = true;
          
        var c = sender.findName("zoom");
        var bs = c.ScaleX;
        var tree = sender.findName("tree");
        menuTitle.Text = GetTag(sender.Tag, 1);
        var x = (sender["Canvas.Left"] * bs) + tree["Canvas.Left"] + 50 * bs;
        var y = (sender["Canvas.Top"] * bs) + tree["Canvas.Top"] - 2 * bs;
        menu["Canvas.Left"] = x + 60;
        menu["Canvas.Top"] = y + 180;
        menu.Visibility="Visible";
        menu.Tag = sender.Tag;
        photoBox["Canvas.Left"] = x;
        photoBox["Canvas.Top"] = y;
        photoBox.Visibility="Visible";
        photoBoxName.Text = menuTitle.Text;
        photoBoxImage.Source = GetTag(sender.Tag, 2);
        
        
        
        ////////// 
        /*
        var w = mainCanvas.Width;
        var h = mainCanvas.Height;
        var offset = 8;
        var move = mainCanvas.findName("move");
        var moveLeft = mainCanvas.findName("moveLeft");
        var moveTop = mainCanvas.findName("moveTop");
        moveLeft.From = tree["Canvas.Left"];
        moveTop.From = tree["Canvas.Top"];
        moveLeft.To = moveLeft.From;
        moveTop.To = moveTop.From;
        var b = false;

        var ax = tree["Canvas.Left"]+(menu["Canvas.Left"]+menu.Width)*bs;
        if (ax > w)
        {
          moveLeft.To = w - (menu["Canvas.Left"] + menu.Width) * bs - offset;
          b = true;
        }
        else
        {
          var ax2 = tree["Canvas.Left"]+(sender["Canvas.Left"])*bs;
          if (ax2 < 0)
          {
            moveLeft.To = -(sender["Canvas.Left"] * bs) + offset;
            b = true;
          }        
        }
        
        var ay = tree["Canvas.Top"]+(menu["Canvas.Top"]+menu.Height)*bs;
        if (ay > h)
        {
          moveTop.To = h - (menu["Canvas.Top"] + menu.Height) * bs - offset; 
          b = true;
        }
        else
        {
          var ay2 = tree["Canvas.Top"]+(sender["Canvas.Top"])*bs;
          if (ay2 < 0)
          {
            moveTop.To = -(sender["Canvas.Top"] * bs) + offset;
            b = true;
          }        
        }
        
        if (b)
        {
          move.begin(); 
        }
        */
        ///////////
        
        
      }
      else
      {
        if (sender.Name.startsWith("heart"))
        {
          downProcessed = true;
          changeSmallScreenIfFull();
          window.open("../adatlap/szerkesztes.aspx?id=" + GetTag(sender.Tag, 0) + "&id2=" + GetTag(sender.Tag, 1) + "&pgid=9&red=1", "_blank");
        }
        else
        {
          if (sender.Name.startsWith("group"))
          {
            menuHide();
            downProcessed = true;
            changeFamilyTree(sender.Tag);
          }
        }
      }
    }  
  }
}

function doMouseMove(sender, args) 
{
  if (isMouseCaptured) 
  {
    var deltaV = args.getPosition(null).y - mouseY;
    var deltaH = args.getPosition(null).x - mouseX;
    var newTop = deltaV + sender["Canvas.Top"];
    var newLeft = deltaH + sender["Canvas.Left"];

    sender["Canvas.Top"] = newTop;
    sender["Canvas.Left"] = newLeft;

    mouseY = args.getPosition(null).y;
    mouseX = args.getPosition(null).x;
  }
}

function doMouseUp(sender, args) 
{
  if (isMouseCaptured) 
  {
    isMouseCaptured = false;
    sender.ReleaseMouseCapture();
    mouseY = -1;
    mouseX = -1;  
    sender.Cursor = "Default";
  }
  downProcessed = false;
}

function zoomin(sender, args) 
{
  menuHide();
  var d = sender.findName("back");
  var r = sender.findName("tree");
  var cl = r["Canvas.Left"];
  var ct = r["Canvas.Top"];

  var c = sender.findName("zoom");
  var cx = (d.Width / 2.0) - cl;
  var cy = (d.Height / 2.0) - ct;
  var bs = c.ScaleX;
  var as = bs + bs / 2.0;
  if (as > 10)
  {
    as = 10;
  }
  
  var zzz = mainCanvas.findName("zzz");
  var zzzX = mainCanvas.findName("zzzX");
  var zzzY = mainCanvas.findName("zzzY");
  zzzX.From = bs;
  zzzY.From = bs;
  zzzX.To = as;
  zzzY.To = as;
  var zzzLeft = mainCanvas.findName("zzzLeft");
  var zzzTop = mainCanvas.findName("zzzTop");
  zzzLeft.From = cl;
  zzzTop.From = ct;
  zzzLeft.To = cl - (cx / bs * as - cx);
  zzzTop.To = ct - (cy / bs * as - cy);
  zzz.begin();
  
  /*
  c.ScaleX = as;
  c.ScaleY = as;
  r["Canvas.Left"] -= cx / bs * as - cx;
  r["Canvas.Top"] -= cy / bs * as - cy;
  */
}

function zoomout(sender, args) 
{
  menuHide();
  var d = sender.findName("back");
  var r = sender.findName("tree");
  var cl = r["Canvas.Left"];
  var ct = r["Canvas.Top"];

  var c = sender.findName("zoom");
  var cx = (d.Width / 2.0) - cl;
  var cy = (d.Height / 2.0) - ct;
  var bs = c.ScaleX;
  var as = bs - bs / 3.0;
  if (as < 0.1)
  {
    as = 0.1;
  }
  
  var zzz = mainCanvas.findName("zzz");
  var zzzX = mainCanvas.findName("zzzX");
  var zzzY = mainCanvas.findName("zzzY");
  zzzX.From = bs;
  zzzY.From = bs;
  zzzX.To = as;
  zzzY.To = as;
  var zzzLeft = mainCanvas.findName("zzzLeft");
  var zzzTop = mainCanvas.findName("zzzTop");
  zzzLeft.From = cl;
  zzzTop.From = ct;
  zzzLeft.To = cl - (cx / bs * as - cx);
  zzzTop.To = ct - (cy / bs * as - cy);
  zzz.begin();
  
  
  /*
  c.ScaleX = as;
  c.ScaleY = as;
  r["Canvas.Left"] -= cx / bs * as - cx;
  r["Canvas.Top"] -= cy / bs * as - cy;
  */
}

function changeSmallScreenIfFull()
{
  if (plugin.content.fullScreen)
  {
    plugin.content.fullScreen = false;
  }
}

function fullScreen(sender, args)
{    
  plugin.content.fullScreen = !plugin.content.fullScreen;  
}

function canvas_loaded(sender, args)
{     
  plugin = sender.getHost();
  plugin.content.onfullScreenChange = onFullScreenChanged;
  //plugin.settings.enableFrameRateCounter = true;
  mainCanvas = sender;
  
  menu = mainCanvas.findName("menu");
  menuTitle = mainCanvas.findName("menuTitle");
  photoBox = mainCanvas.findName("photoBox");
  photoBoxImage = mainCanvas.findName("photoBoxImage");
  photoBoxName = mainCanvas.findName("photoBoxName");

  moveLink(mainCanvas);
  moveCenter();
}

function moveLink(obj)
{
  var link = mainCanvas.findName("link");
  link["Canvas.Left"] = obj.Width - 84;
  link["Canvas.Top"] = obj.Height- 16;
}

function onFullScreenChanged(sender, args)
{        
  menuHide();
  var back = sender.findName("back");
 
  back.Width = plugin.content.actualWidth;
  back.Height = plugin.content.actualHeight;
  
  if (plugin.content.fullScreen)
  {
    back.RadiusX = 0;
    back.RadiusY = 0;
  }
  else
  {
    back.RadiusX = 10;
    back.RadiusY = 10;
  }
  moveLink(back);
  moveCenter();
}

function moveCenter()
{
  var tree = mainCanvas.findName("tree");
  var back = mainCanvas.findName("back");
  var personPrimary = mainCanvas.findName("personPrimary");
  var w = back.Width;
  var h = back.Height;
  var zoom = mainCanvas.findName("zoom");
  var sc = zoom.ScaleX;
  var cx = w / 2 - (personPrimary["Canvas.Left"] + 30) * sc;//30 helyett personPrimary.Width / 2 kéne, de nem működik
  var cy = h / 2 - (personPrimary["Canvas.Top"] + 30) * sc; 
  
  var move = mainCanvas.findName("move");
  var moveLeft = mainCanvas.findName("moveLeft");
  var moveTop = mainCanvas.findName("moveTop");
  
  moveLeft.From = tree["Canvas.Left"];
  moveTop.From = tree["Canvas.Top"];
  moveLeft.To = cx;
  moveTop.To = cy;
  move.begin(); 
}


function enterAnimation(sender, mouseEventArgs)
{
  var s = sender.findName("storyboard1");
  var a = sender.findName("animation1");
  s.stop();
  a["Storyboard.TargetName"] = sender.Name
  s.begin();
}

function leaveAnimation(sender, mouseEventArgs)
{
  var s = sender.findName("storyboard2");
  var a = sender.findName("animation2");
  s.stop();
  a["Storyboard.TargetName"] = sender.Name
  s.begin();
}
















function menuHide()
{
  var hig = mainCanvas.findName("hig")
  if (hig != null)
  {
    hig.Visibility = "Collapsed";
  }  
  menu.Visibility = "Collapsed";
  photoBox.Visibility = "Collapsed";
  photoBoxImage.Source = "../i/family/person/unknow.jpg";
  lastMenuItem = -1;
}

function onMouseLeaveMenu(sender, mouseEventArgs)
{   
  //last = sender.findName("mn" + sender.Tag);
  //menu.Opacity = 0;
      /*
  var myStoryboard = sender.findName("sHide");
  var myDoubleAnimation = sender.findName("daHide");
  myStoryboard.stop();
  myDoubleAnimation["Storyboard.TargetName"] = "menu";
  myDoubleAnimation.From = 1.0;
  myDoubleAnimation.To = 0.0;
  myStoryboard.begin();
           */
  mainCanvas.findName("hig").Visibility = "Collapsed";
}

function onMouseEnterMenuHead(sender, mouseEventArgs)
{
  sender.findName("hig").Visibility = "Collapsed";
}
         
function onMouseEnterMenuItem(sender, mouseEventArgs)
{
  //var y = GetTag(sender.Tag, 1) * 20 + 22;//*menuItemHeight+menuItemHeadHeight
  var hig = mainCanvas.findName("hig");
  hig["Canvas.Top"] = sender["Canvas.Top"];//y
  hig.Visibility = "Visible";
  hig.Tag = sender.Tag;
}  

function doMouseDownMenuHigh(sender, args)
{
  menuHide();
  var hig = mainCanvas.findName("hig");
  var guid = GetTag(menu.Tag, 0);
  if (hig.Tag == 1)
  {
    changeSmallScreenIfFull();
    window.open("../adatlap/default.aspx?id=" + guid, "_blank");
  }
  else
  {
    if (hig.Tag == 2)
    {
      changeSmallScreenIfFull();
      window.open("hozzatartozok.aspx?id=" + guid, "_blank");
    }
    else
    {
      if (hig.Tag == 3)
      {
        changeFamilyTree(guid);
      }
    }
  }  
}

function changeFamilyTree(guid)
{
  var wait = mainCanvas.findName("wait");
  wait.Visibility = "Visible";
   
  var hideTree = mainCanvas.findName("hideTree");
  hideTree.stop();
  hideTree.begin();
      
  Animare.IttVoltam.Web.WebService.Command.GetFamilyTree(guid, OnSucceeded, OnFailed);
}

function OnSucceeded(xaml)
{
  var wait = mainCanvas.findName("wait");
  wait.Visibility = "Collapsed";

  if (xaml != "")
  {
    var newFamilyTree = plugin.content.createFromXaml(xaml, false);
    var tree = mainCanvas.findName("tree");
    tree.children.clear();
    tree.children.add(newFamilyTree);  
    moveCenter();
  }
}

function OnFailed(error)
{
  var wait = mainCanvas.findName("wait");
  wait.Visibility = "Collapsed";
   /*
  var showTree = mainCanvas.findName("showTree");
  showTree.stop();
  showTree.begin();
   */
    /*
  $get('Div1').innerHTML = error.get_exceptionType()+
    error.get_message()+
    error.get_statusCode()+
    error.get_stackTrace();  */
}    

function GetTag(tag, index)
{
  var ar = tag.split("|");
  return ar[index];
}

function heartHover(sender, mouseEventArgs)
{
  var heartEnter = sender.findName("heartEnter");
  var heartEnter1 = sender.findName("heartEnter1");
  var heartEnter2 = sender.findName("heartEnter2");
  heartEnter.stop();
  heartEnter1["Storyboard.TargetName"] = sender.Name;
  heartEnter2["Storyboard.TargetName"] = sender.Name;
  heartEnter.begin();
}

function heartLeave(sender, mouseEventArgs)
{
  var heartLeave = sender.findName("heartLeave");
  var heartLeave1 = sender.findName("heartLeave1");
  var heartLeave2 = sender.findName("heartLeave2");
  heartLeave.stop();
  heartLeave1["Storyboard.TargetName"] = sender.Name;
  heartLeave2["Storyboard.TargetName"] = sender.Name;
  heartLeave.begin();
}


function linkEnter(sender, args) 
{
  sender.Opacity = 1.0;
}

function linkLeave(sender, args) 
{
  sender.Opacity = 0.1;
}

function linkClick(sender, args) 
{
  window.open("http://www.ittvoltam.hu/", "_blank");
}








