﻿/*
-----------------------------------------------------------------------------------------------------------------------
Main
Libreria que gestiona el comportamiento general de la pantalla principal.
-----------------------------------------------------------------------------------------------------------------------
*/

var plugin
var main
var statusbox
//Carrusel - Variables de trabajo
var CarruselHolder //enlace al carrusel
var ConPrecarga = true;
var objsArr=new Array()


var num_imgs=8 //42

//Estos deberian ser dinamicos y en funcion del tamaño del canvas "contenedor" del carrusel.
var radiusX=320 //480
var radiusY=110 //110
var centerX=450
var centerY=260


var speed=-0.0015
var main_down=false
var sFontName = "Segoe Condensed";

//Loaded="mainCanvasLoaded"
function mainCanvasLoaded(s) {
	main=s.findName("mainCanvas");
	plugin = s.getHost();
	imagesHolder=s.findName("imagesHolder");
	CarruselHolder = s.findName("CarruselHolder");
	//statusbox = s.findName("tbstatus")
	
	if (ConPrecarga == false) {
    	//construye los elementos y los posiciona	
        //	buildImages();  //ESto lo hace estaticamente...  pero de forma estatica
	    BuildItems();
	    //CreateItemsFromXaml(); //Esta funcion aun no va bién... :(
	    
	    //Cargamos el lenguaje actual (por defecto)
	    //ChangeLanguage("es");
    }
	
	//Asocio el evento de resize con el manejador
	plugin.content.onResize = onResizeStatus ; //resize;
	
	//Aqui podriamos lanzar el loader.. más claro? y todo estará cargado... vamos...
	setTimeout(GestionarDescarga, 600);
}


/*
-----------------------------------------------------------------------------------------------------------------------
    Gestión de la descarga de los assets
-----------------------------------------------------------------------------------------------------------------------
*/


var oPctDownloaded;
var Offset;
var oCercleLoader;
var iNumTimesProgressChanged;

//Loaded="mainCanvasLoaded" 
function handleLoad(control, userContext, rootElement) {
    if (ConPrecarga == true) {
	    //this.control = control;
       oPctDownloaded = main.findName("PercentDownloaded"); 
       Offset = main.findName("Offset1");      
	    
	    // Create a Downloader object.
	    var downloader = control.createObject("downloader");
	    downloader.addEventListener("DownloadProgressChanged", onDownloadProgressChanged);
	    downloader.addEventListener("completed", onCompleted);
        downloader.Open("GET", "innovadls.zip?" + new Date()); // The querystring is there to avoid caching
	    downloader.send();
	}
}
	
////Gestiono la descarga de los assets 
function GestionarDescarga(){
  if (ConPrecarga == true) {
     oPctDownloaded = main.findName("PercentDownloaded"); 
     Offset = main.findName("Offset1");      
     oCercleLoader = main.findName("Cercle_Loader");
     oPctDownloaded.Visibility = "Visible"; //Visibility="Collapsed"
     oCercleLoader.Visibility = "Visible";
     iNumTimesProgressChanged=0;
     // Retrieve a reference to the plug-in.
     var slPlugin = main.getHost();
     // Create a Downloader object.
     downloader = slPlugin.createObject("downloader");  
     //var control = document.getElementById("SilverlightControl");
     //var downloader = control.CreateObject("downloader");
     downloader.AddEventListener("DownloadProgressChanged", onDownloadProgressChanged);
     downloader.AddEventListener("Completed", onCompleted);
     downloader.Open("GET", "innovadls.zip?" + new Date()); // The querystring is there to avoid caching
     downloader.Send();
   }
}

// Gestión del progreso de la descarga..
function onDownloadProgressChanged(sender, eventArgs)
{
    var percentComplete = sender.DownloadProgress * 100;  
    iNumTimesProgressChanged +=1;
    oPctDownloaded.Text = Math.floor(percentComplete) + "%"; 
    Offset.Offset= percentComplete/100;      
}

//Variables globales a las que asigno los elementos descargados
var downloader;
var img0;
var img1;
var img2;
var img3;
var img4;
var img5;
var img6;
var img7;
var fontSegoeUI;
var fontSegoeUIBold;

// Handler for successful completion of download
function onCompleted(sender, eventArgs)
{
  var control = sender.GetHost();
  var root = control.Content.Root;
  iNumTimesProgressChanged = iNumTimesProgressChanged + 1;
  // Parse and load XAML from inside the .ZIP file
  //var newContent = control.Content.CreateFromXamlDownloader( sender, "interface.xaml");
    
  sender.findName("Logo_fade_in").begin();
    oPctDownloaded.Visibility = "Collapsed"; //Visibility="Collapsed"
    oCercleLoader.Visibility = "Collapsed";

  main=sender.findName("mainCanvas");
  plugin = sender.getHost();
  imagesHolder=sender.findName("imagesHolder");
  CarruselHolder = sender.findName("CarruselHolder");
  
  //Asocio el evento de resize con el manejador
  plugin.content.onResize = onResizeStatus ; //resize;

  //Y creo los elementos del carrusel.
  BuildItems(); //BuildItems, segun "ConPrecarga" cargara del objeto downloader o de los assets para su descarga..
  
  //Muevo el logotipo abajo a la izquierda
  //sender.findName("LogoMoveDown").Begin();
  
  //Asigno los assets recien descargados
  //var oinnovaBg = sender.findName("innovaBg");
  //oinnovaBg.Source = sender.GetResponseText("innova_bg_apagado.png");
  
  //Imagenes de fondo... (1o en baja calidad, estas son de alta calidad)
  
  //Fuentes ////////////////////////////////////////////////////
   // Ponemos la fuente del titulo del pop-up
   var oTxtBlockPopUp = sender.findName("ItemTitulo");
   oTxtBlockPopUp.setFontSource(sender);
   //var sFontName = "Segoe Condensed"; //"Segoe UI"
   oTxtBlockPopUp.fontFamily = sFontName;  
   // Del contenido (texto)
   var oTextePopUp = sender.findName("Texte");
   oTextePopUp.setFontSource(sender);
   oTextePopUp.fontFamily = sFontName;  
   
   // De los botones de idioma
   //txtBtnEn
   var otxtBtnEn = sender.findName("txtBtnEn");
   otxtBtnEn.setFontSource(sender);
   otxtBtnEn.fontFamily = sFontName;  
   //txtBtnEs
   var otxtBtnEs = sender.findName("txtBtnEs");
   otxtBtnEs.setFontSource(sender);
   otxtBtnEs.fontFamily = sFontName; //sFontName;  
   //txtBtnCat
   var otxtBtnCat = sender.findName("txtBtnCat");
   otxtBtnCat.setFontSource(sender);
   otxtBtnCat.fontFamily = sFontName;  

   /// Hacemos visible la botonera
   var oCanvasMLSelector = sender.findName("CanvasMultiLenguaje");
   //oCanvasMLSelector.Visibility = "Visible"; //"Visible"; //Visibility="Collapsed"
   //Animamos su aparición
   var AnimCanvasMLAppear = plugin.content.findName( "CanvasMLAppear" );
   AnimCanvasMLAppear.Begin();
   
   
  //Fuentes ////////////////////////////////////////////////////
  
  
   
} 

function LogoMoveDown(s,e){

    main.findName("LogoMoveDown").Begin();
}

/*
-----------------------------------------------------------------------------------------------------------------------
    Gestión del resizing del navegador y contenedor de Silverlight
-----------------------------------------------------------------------------------------------------------------------
*/

//Gestiono el resizing del control de javascript
function onResizeStatus(sender, eventArgs)
{
    //Control del estado de cambio de tamaño
    //	var targetWidth = plugin.content.actualWidth
    //	var targetHeight = plugin.content.actualHeight
    //	var msgString =  " ActualWidth: " + plugin.content.actualWidth;
    //		msgString += " ActualHeight: " + plugin.content.actualHeight;

	//var s=sender.findName("mainCanvas");
	var s = main.findName("mainCanvas")
	var sourceWidth = s.width
	var sourceHeight = s.height
//	msgString += " Canvas.Width: " + sourceWidth;
//	msgString += " Canvas.Height: " + sourceHeight;
 	
 	//Establecemos la nueva escala en base al tamaño del host 
	//var content = sender.GetHost().Content;
	var content = main.GetHost().Content;
	var escala = Math.min(content.ActualWidth / content.Root.Width,
	                      content.ActualHeight / content.Root.Height);
    //var transform = sender.findName("ST");
    var transform = main.findName("ST");
   	transform.scaleX = escala;
   	transform.scaleY = escala;
    content.Root["Canvas.Left"] = (content.ActualWidth - content.Root.Width * escala) /2 ;
    content.Root["Canvas.Top"] = (content.ActualHeight - content.Root.Height * escala) /2 ;
	
	//var mesa = sender.findName("InnovaTable");
	var mesa = main.findName("InnovaTable");
//var mesaHeightEscalada = mesa.height * escala;
	//var mainCanvas = sender.findName("mainCanvas");
	var mainCanvas = main.findName("mainCanvas");
	var mainCanvasHeight = mainCanvas.height;
	var mainCanvasHeightEscalado = mainCanvasHeight * escala;
	
//    mesa["Canvas.Top"] = plugin.content.actualHeight - mesaHeightEscalada; //+++
//    mesa["Canvas.Top"] = content.Root.Height - mesa.height;  //+++++++ funciona OK!
	//var textBlock = sender.findName("tbstatus");
//	var textBlock = main.findName("tbstatus");
//	textBlock.text = msgString;
}

function ResizeToContainer(){
	var s = main.findName("mainCanvas")
	var sourceWidth = s.width
	var sourceHeight = s.height
	
	//Establecemos la nueva escala en base al tamaño del host 
	var content = main.GetHost().Content;
	var escala = Math.min(content.ActualWidth / content.Root.Width,
	                      content.ActualHeight / content.Root.Height);
    var transform = main.findName("ST");
   	transform.scaleX = escala;
   	transform.scaleY = escala;
    content.Root["Canvas.Left"] = (content.ActualWidth - content.Root.Width * escala) /2 ;
    content.Root["Canvas.Top"] = (content.ActualHeight - content.Root.Height * escala) /2 ;
	
	var mesa = main.findName("InnovaTable");
//	var mesaHeightEscalada = mesa.height * escala;
	var mainCanvas = main.findName("mainCanvas");
	var mainCanvasHeight = mainCanvas.height;
	var mainCanvasHeightEscalado = mainCanvasHeight * escala;
}

function mainCanvasMouseLeave(s) {
	main_down=false
}

//Enlaces
function GoToMSIPCWebsite(sender, args){
    self.location = "http://www.productivitycenter.org";
    
}
