﻿/*
-----------------------------------------------------------------------------------------------------------------------
Carrusel
Libreria que gestiona el comportamiento del carrusel y su construccion.
-----------------------------------------------------------------------------------------------------------------------
*/


//Variables globales respectivas del carrusel
//Datos de los items
var img_width=130;
var img_height=130;
var item_Scale_Base = 0.95;
var anchoDelItem = img_width/2; //50;

var VelocidadBase = 0.0655; //0.0755;
var FactorReductorVelocidad = 0.0002;
var FactorReductorVelocidadRollOverItem = 0.0060; //0.0035;
var RollOverItem = false;
var RollOverCarrusel = false;
var iItemClicked = 0;
var PopUpShown = false; //Indica si el popup esta visible o no.


//new ItemPeque("01", rootElement, 10, 10, "¡¡Holas David!!", 0.9, "item.png");
function BuildItems() {
	    left_pos=0
	
	for(i=0;i<num_imgs;i++) {
		//Obtenemos los datos para montar el 
		var sNum = "0" + i.toString();
		var sTitulo = Elem_Titles[i];
		var sImagen = Elem_Thumbs[i];
        var sVideo = Elem_Videos[i];
		var sIcon = Elem_Icons[i];
		var sBigIcon = Elem_BigIcons[i];
        var sBackground_Image = Elem_Background_Images[i];
        var sBigBackground_Image = Elem_BigBackground_Images[i];
        //Creamos el elemento Ojo RootElement <== main.
        // ahora, plugin...
        var RootElement = plugin.content.findName("mainCanvas");
        var sText = Elem_Texts[i];
        var sBigText = Elem_BigTexts[i];
		var sLinkLabel0 = Elem_LinkLabel0[i];
		var sLink0 = Elem_Link0[i];
		var sLinkLabel1 = Elem_LinkLabel1[i];
		var sLink1 = Elem_Link1[i];
		var sLinkLabel2 = Elem_LinkLabel2[i];
		var sLink2 = Elem_Link2[i];
		var sImage = Elem_Images[i];
		new ItemPeque(sNum ,i, RootElement, (i* 10), (i*10), sTitulo, item_Scale_Base, sImagen, sText, sVideo, sBackground_Image,sIcon,sBigBackground_Image,sBigIcon,sBigText,sLinkLabel0,sLink0,sLinkLabel1,sLink1,sLinkLabel2,sLink2,sImage);

//		xamlTags=plugin.content.createFromXaml(xaml_str)
//		main.children.add(xamlTags)
//		
		//se crea un objeto para controlar la posicion del item generado y se asigna a un array de objetos...
		objsArr["image_"+i]=new Object()
		objsArr["image_"+i].angle=i*((Math.PI*2)/num_imgs) //El angulo viene de distribuir la circunferencia entre el total de objetos... esto esta muy bien
	}
	
	//Y los posicionamos 
    //	CarruselItems_AjustarVelocidad()
    //	CarruselItems_PositionRelative()
    //	
	    //Llamamos a una funcion javascript cada 25 milisegundos.. mmm... no esta muy bien esto.. quizas llamar position items despues de mover algun objeto si ha
	    //habido cambio alguno?
    //	moveItemsInt=setInterval("moveItems()",25)
}

//A llamar cuando todos los items del carrusel se hayan creado (sino daba problemas ya que aun no se habían descargado los items..)
function AfterItemsBuilt(){
    ResizeToContainer();
    
	//Y los posicionamos 
	CarruselItems_AjustarVelocidad()
	CarruselItems_PositionRelative()
	
	//Llamamos a una funcion javascript cada 25 milisegundos.. mmm... no esta muy bien esto.. quizas llamar position items despues de mover algun objeto si ha
	//habido cambio alguno?
	moveItemsInt=setInterval("moveItems()",30)
	
    //Cargo el idioma por defecto
    //ChangeLanguage("es");
}


/// MoveItems - Basicamente los resposiciona en la pantalla ///
function moveItems() {
	//if(main_down) {
	    CarruselItems_AjustarVelocidad();
	    CarruselItems_PositionRelative();
		//positionItems();
	//}
}


function CarruselItems_PositionRelative() {
    //Variables del carrusel
	var CarRadiusX = (CarruselHolder.Width / 3.5); //320 //480
    var CarRadiusY = CarruselHolder.Height / 6; //110 //110

    //var CarCenterX = ((CarruselHolder.Width - anchoDelItem)/ 2) ; //450
    var CarCenterX = ((CarruselHolder.Width - anchoDelItem)/ 2) ; //450
    var CarCenterY = CarruselHolder.Height / 2; //260

    //    var indicador = main.findName("indicador");
    //    indicador.width = CarruselHolder.Width / 2;
    //    indicador["Canvas.Left"]=0
    //    indicador["Canvas.Top"]=CarCenterY

	for(i=0;i<num_imgs;i++) {
		//Busca la posicion relativa de los objetos respecto al centro X,Y del Carrusel
		var my_x = Math.cos(objsArr["image_"+i].angle) * CarRadiusX + CarCenterX
		var my_y = Math.sin(objsArr["image_"+i].angle) * CarRadiusY  + CarCenterY

		if(my_y >  CarCenterY)
		{
		var dis_x = my_x - CarCenterX;
		var coe_x = dis_x / CarRadiusX;
		var rat_x = Math.sqrt(Math.sqrt(Math.abs(coe_x)));
		if(coe_x<0)
		var coe_x = Math.sqrt(coe_x*-1) *-1*rat_x;
		else
		var coe_x = Math.sqrt(coe_x)*rat_x;
		var dis_x = CarRadiusX * coe_x ;
		my_x =  CarCenterX + dis_x;
		}

		//Busca el objeto en el control silverlight y le asigna la posicion determinada
		var test = CarruselHolder["Canvas.Left"];
		
		var sNum = "0" + i.toString();
		main.findName(sNum + "_ItemPeque")["Canvas.Left"] = my_x + CarruselHolder["Canvas.Left"];
		main.findName(sNum + "_ItemPeque")["Canvas.Top"] = my_y + CarruselHolder["Canvas.Top"];
//		main.findName("ItemPeque"+i)["Canvas.Left"] = my_x + CarruselHolder["Canvas.Left"];
//		main.findName("imageHolder_"+i)["Canvas.Top"] = my_y + CarruselHolder["Canvas.Top"];

		//Buscamos el transformador de tamaño para asignarle un nuevo tamaño respecto a la nueva posicin
        var stRef = main.findName(sNum + "_BaseScale");		
        
		//Solo escalamos en base a la distancia (Y)
		var scaleY = stRef.scaleY ;
		var my_y = Math.sin(objsArr["image_"+i].angle) * (CarruselHolder.Height / 10) + CarCenterY
		var sc = (my_y - scaleY) / (CarCenterY + CarRadiusY - scaleY) ;

		sc = sc * item_Scale_Base; //1.5
		
		stRef.scaleX = sc;
		stRef.scaleY = sc;
		
		//Ajustamos la opacidad (transparencia) en base se va alejando del centro...
		var RectOpacitySup = main.findName(sNum + "_RectOpacitySup");
		var opacity = 0.7 - sc;
        RectOpacitySup.Opacity = opacity; //"0.86";
        
        //Y la transparencia?
		var item = main.findName(sNum + "_ItemPeque");
        item.Opacity=1;//sc + 0.3; //"0.86";
      
        
		objsArr["image_"+i].angle += speed;
		
		//Ajustamos la "profundidad", es decir, el ZIndex..
		main.findName(sNum + "_ItemPeque")["Canvas.ZIndex"]=parseInt(my_y)
	}
}

function CarruselItems_AjustarVelocidad() {
    if (( (RollOverCarrusel==false) || 
          (RollOverItem==true) ) &&
          (speed != 0) ) {
        var oldspeed = speed  
        var FactReductVelocidad = 0;
        
        if (RollOverItem == true){
            FactReductVelocidad = FactorReductorVelocidadRollOverItem; 
            }
        else{
            FactReductVelocidad = FactorReductorVelocidad; 
            }
            
        if (speed > 0) {
            speed= speed - FactReductVelocidad;
            }
        else{
            speed= speed + FactReductVelocidad;
            }
            
        if (((oldspeed > 0) && (speed <= 0)) ||
           ((oldspeed < 0) && (speed >= 0))){
           speed = 0;
           }
    }
}


//////////////////////////////////////////////////////////
// Eventos del Carrusel
// Handlers de eventos del canvas Carrusel
//////////////////////////////////////////////////////////

//		Mouse Enter & Leave del Carrusel
function CarruselMouseEnter(s,e) {
	RollOverCarrusel=true;	
}
function CarruselMouseLeave(s,e) {
	RollOverCarrusel=false;
}

////		Mouse Enter & Leave de los items
//function ItemMouseEnter(s,e) {
//	RollOverItem=true;	
//}
//function ItemMouseLeave(s,e) {
//	RollOverItem=false;
//}

function Link(s) {
window.open(s.text);
}

function flink1(s) {DisableFullScreen(s);window.open("https://profile.microsoft.com/RegSysProfileCenter/default.aspx?lcid=1029");}
function flink2(s) {DisableFullScreen(s);window.open("http://www.microsoft.com/cze/careers/default.mspx");}
function flink3(s) {DisableFullScreen(s);window.open("http://www.microsoft.com/cze/presspass/default.mspx");}
function flink4(s) {DisableFullScreen(s);window.open("http://www.microsoft.com/cze/info/");}
function flink5(s) {DisableFullScreen(s);window.open("http://www.microsoft.com/cze/mscorp/");}
function flink6(s) {DisableFullScreen(s);window.open("http://support.microsoft.com/contactus/?ws=support");}


function Link2(s) {
DisableFullScreen(s);
window.open(main.findName("Link2").text);
}

function Link2Enter(s) {
main.findName("Link2Hover").Begin();
}

function Link2Out(s) {
main.findName("Link2Out").Begin();
}

function Link1(s) {
DisableFullScreen(s);
window.open(main.findName("Link1").text);
}

function Link1Enter(s) {
main.findName("Link1Hover").Begin();
}

function Link1Out(s) {
main.findName("Link1Out").Begin();
}

function Link0(s) {
DisableFullScreen(s);
window.open(main.findName("Link0").text);
}

function Link0Enter(s) {
main.findName("Link0Hover").Begin();
}

function FullsreenOver(s) {
main.findName("FullsreenOver").Begin();
}

function FullsreenOut(s) {
main.findName("FullsreenOut").Begin();
}

function Link0Out(s) {
main.findName("Link0Out").Begin();
}
function PlayVideo(s) {
	main.findName("ItemVideo").play();
	main.findName("videoPause").Visibility = "Visible";
	main.findName("videoPlay").Visibility = "Collapsed";
	main.findName("videoPlayBig").Visibility = "Collapsed";
	main.findName("videoPlayBigRect").Visibility = "Collapsed";
}


function Pruvodce(s) {
    DisableFullScreen(s);
	window.open('http://www.microsoft.com/cze/virtualnipruvodce/index.html');
}

function SendFriends(s) {
	var plugin = s.getHost();
    plugin.content.fullScreen = false;
	onResizeStatus(s);
	
	document.getElementById('FormHolder').style.display = 'block';
}

function BannerLink(s) {
    DisableFullScreen(s);
	window.open('officedomu.aspx');
}
function DisableFullScreen(s)
{
	var plugin = s.getHost();
    plugin.content.fullScreen = false;
	onResizeStatus(s);
}

function PauseVideo(s) {
	main.findName("ItemVideo").pause();
	main.findName("videoPause").Visibility = "Collapsed";
	main.findName("videoPlay").Visibility = "Visible";
}

function StopVideo(s) {
	main.findName("ItemVideo").stop();
	main.findName("videoPause").Visibility = "Collapsed";
	main.findName("videoPlay").Visibility = "Visible";
	main.findName("videoPlayBig").Visibility = "Visible";
	main.findName("videoPlayBigRect").Visibility = "Visible";
}

function mainDown(s) {
	main_down=true	
}
function mainUp(s) {
	main_down=false
}

function imageOver(s) {
	//Aqui lanzaremos una animacion, por ejemplo, que crezca el item y se lance la animacion/video
	//main_down=false
	var ind=s.name.split("_")[1]
	s.findName("rec_"+ind).fill="yellow"
}
function imageOut(s) {
	//Se debera lanzar la animacion de volver al tamaño normal y se pare el video...
	var ind=s.name.split("_")[1]
	s.findName("rec_"+ind).fill="#FFF"
}

function imageDown(s) {
	//Deberemos lanzar la ampliacion del item (vista ampliada):
	//	 	1- Ocultar otros items ampliados (solo deberia haber uno) 
	//			1.1 - Lanzar su animacion de ocultacion
	//			1.2 - reducir su z-index para que aparezca atras de la nueva animacion.
	//			1.3 - ocultarel elemento de animacion, o eliminarlo.
	//		2- Lanzar la animacion del nuevo item
	//			2.1 - Mostrar el nuevo item y lanzar su animacion.
	//			2.2 - Iniciar la "interactividad con el nuevo item"
	file_source=s.source.split("/")[1]
	s.findName("mainImage").source="images/"+file_source
	s.findName("mainImageHolder")["Canvas.ZIndex"]=169
}

function CarruselMouseMoves(s, e) {	
    if ( (RollOverCarrusel==true) && 
         (RollOverItem==false) ) {
		
	    var pt = e.getPosition(null);
	    _root_xmouse = pt.x;
	    _root_ymouse = pt.y;
        
        //La aceleración se realiza sobre el eje horizontal (X) del carrusel.
        var AnchoCarrusel = main.findName("CarruselHolder").Width;
        var CanvasLeftCarrusel = main.findName("CarruselHolder")["Canvas.Left"];
        var PosMouseX_RelativoACarrusel = _root_xmouse - CanvasLeftCarrusel;
        var MitadAnchoCarrusel  = ((AnchoCarrusel)/ 2); //Formula previa: 
	    speed=((PosMouseX_RelativoACarrusel-MitadAnchoCarrusel)/MitadAnchoCarrusel) * VelocidadBase;
	}
	
}


function ItemPopUp_SlideOut(s, e){
//        var SlideOutYVal = plugin.content.findName("SlideOutYVal");
//        var YVal = SlideOutYVal.Value;
//        var iItmClicked = iItemClicked;
//        //Miro longitud del texto segun el idioma...
//        var txt = Elem_Textos_es[iItmClicked];
//        var lentxt = txt.length;
//        
//        SlideOutYVal.Value = 200;
        var AnimSlideOutItem = plugin.content.findName( "Slide_Out" );
        AnimSlideOutItem.Begin();

}

function ItemPopUp_SlideIn(s,e){
        var AnimSlideInItem = plugin.content.findName( "Slide_In" );
		
        AnimSlideInItem.Begin();
		
		try
		{
		videoControl.goPause(0);
		}
		catch(err){}
        //Y paramos el video...
//        var Video = plugin.content.findName("ItemVideo");
//        Video.Pause(); //Stop(); //.Source = "Videos/Sample Video WC 1.wmv"
//        
        
}

function CloseItemPopup(s,e){
        var AnimCloseItem = plugin.content.findName( "ItemPopUp_Close" );
        AnimCloseItem.Begin();
        
        //Y paramos el video...
        //var Video = plugin.content.findName("ItemVideo");
        //Video.Source = null;
        //Video.Pause(); //Stop(); //.Source = "Videos/Sample Video WC 1.wmv"
      
        //Indicamos que el popup esta cerrado/oculto
        PopUpShown = false
  
}

function ItemVideo_MediaEnded(s, e){
        var Video = plugin.content.findName("ItemVideo");
        Video.Stop();
        Video.AutoPlay = true;
        Video.Play(); 
}




//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
/// Codigo Deprecated
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
function positionItems() {
	for(i=0;i<num_imgs;i++) {
	
		//Busca la posicion relativa de los objetos respecto al centro X,Y del Carrusel
		var my_x=Math.cos(objsArr["image_"+i].angle)*radiusX + centerX
		var my_y=Math.sin(objsArr["image_"+i].angle)*radiusY + centerY
		
		//Busca el objeto en el control silverlight y le asigna la posicion determinada
		main.findName("imageHolder_"+i)["Canvas.Left"]=my_x
		main.findName("imageHolder_"+i)["Canvas.Top"]=my_y
        
		//ScaleY="-1" ScaleX="1"
		//Buscamos el transformador de tamaño para asignarle un nuevo tamaño respecto a la nueva posicin
		var stRef=main.findName("st_"+i)
		
		//Solo escalamos en base a la distancia (Y)
		var sc = (my_y - stRef.scaleY) / (centerY + radiusY - stRef.scaleY)
		
		sc = sc *1.5
		
		stRef.scaleX=sc
		stRef.scaleY=sc

		objsArr["image_"+i].angle+=speed
		main.findName("imageHolder_"+i)["Canvas.ZIndex"]=parseInt(my_y)
	}
}

function CreateItemsFromXaml(){
	    var downloader = plugin.createObject("downloader");
	    downloader.addEventListener("completed", Silverlight.createDelegate(this, downloadItemXamlCompleted));
	    downloader.open("GET", "Item.xaml");
	    downloader.send();
}
//Este codigo pretende añadir los elementos vía XAML
function downloadItemXamlCompleted(sender, eventArgs){
    var xamlItem = sender.getResponseText("");

	for(i=0;i<num_imgs;i++) {
		cur_img="item.jpg"
		img_url="thumbs/"+cur_img		 
        var nombre = "imageHolder_"+i;

        var vbtn = plugin.content.createFromXaml(xamlItem, true);
        
        main.children.add(vbtn);
        
        new Innova.Item(plugin, vbtn, nombre);
		
		//se crea un objeto para controlar la posicion del item generado y se asigna a un array de objetos...
		objsArr["image_"+i]=new Object()
		objsArr["image_"+i].angle=i*((Math.PI*2)/num_imgs) //El angulo viene de distribuir la circunferencia entre el total de objetos... esto esta muy bien
	}
	
	//Y los posicionamos 
	Carrusel_AjustarVelocidad()
	CarruselItems_PositionRelative()
	
	//Llamamos a una funcion javascript cada 25 milisegundos.. mmm... no esta muy bien esto.. quizas llamar position items despues de mover algun objeto si ha
	//habido cambio alguno?
	moveItemsInt=setInterval("moveItems()",25)
}

function CarruselImagenes_AjustarVelocidad() {
    ////////////////////////////////////////////////////////////////////////////////////////    
    //Si salimos de la zona ira reduciendo la velocidad en el sentido contrario al que lleve...
    //Ver que no supere a cero
    ////////////////////////////////////////////////////////////////////////////////////////    
    //Poner si "Salimos de la zona" o estamos sobre un elemento item de interfaz...
    
    if (( (RollOverCarrusel==false) || 
          (RollOverItem==true) ) &&
          (speed != 0) ) {
        var oldspeed = speed  
        var FactReductVelocidad = 0;
        
        if (RollOverItem == true){
            FactReductVelocidad = FactorReductorVelocidadRollOverItem; 
            }
        else{
            FactReductVelocidad = FactorReductorVelocidad; 
            }
            
        if (speed > 0) {
            speed= speed - FactReductVelocidad;
            }
        else{
            speed= speed + FactReductVelocidad;
            }
            
        if (((oldspeed > 0) && (speed <= 0)) ||
           ((oldspeed < 0) && (speed >= 0))){
           speed = 0;
           }
    }
}

function CarruselImagenes_PositionRelative() {
    //Variables del carrusel
	var CarRadiusX = (CarruselHolder.Width / 3); //320 //480
    var CarRadiusY = CarruselHolder.Height / 4; //110 //110

    //var CarCenterX = ((CarruselHolder.Width - anchoDelItem)/ 2) ; //450
    var CarCenterX = ((CarruselHolder.Width - anchoDelItem)/ 2) ; //450
    
    var CarCenterY = CarruselHolder.Height / 2; //260

    var indicador =main.findName("indicador");
    indicador.width = CarruselHolder.Width / 2;
    indicador["Canvas.Left"]=0
    indicador["Canvas.Top"]=CarCenterY

	for(i=0;i<num_imgs;i++) {
		//Busca la posicion relativa de los objetos respecto al centro X,Y del Carrusel
		var my_x = Math.cos(objsArr["image_"+i].angle)*CarRadiusX + CarCenterX
		var my_y = Math.sin(objsArr["image_"+i].angle)*CarRadiusY + CarCenterY
		
		
		//Busca el objeto en el control silverlight y le asigna la posicion determinada
		var test = CarruselHolder["Canvas.Left"];
		
		main.findName("imageHolder_"+i)["Canvas.Left"] = my_x + CarruselHolder["Canvas.Left"];
		main.findName("imageHolder_"+i)["Canvas.Top"] = my_y + CarruselHolder["Canvas.Top"];

		//ScaleY="-1" ScaleX="1"
		//Buscamos el transformador de tamaño para asignarle un nuevo tamaño respecto a la nueva posicin
		var stRef=main.findName("st_"+i)
		
		//Solo escalamos en base a la distancia (Y)
		var sc = (my_y - stRef.scaleY) / (CarCenterY + CarRadiusY - stRef.scaleY)
		
		sc = sc *1.5
		
		stRef.scaleX=sc
		stRef.scaleY=sc

		objsArr["image_"+i].angle+=speed
		main.findName("imageHolder_"+i)["Canvas.ZIndex"]=parseInt(my_y)
	}
}


function buildImages() {
	//Simplemente crea los items contenedores en una posicion X
	for(i=0;i<num_imgs;i++) {
		//Asignamos las imagenes
		//cur_img=i+".jpg"		
		//Lo ideal sera cargarlo de un array de configuracion de los diferentes elementos...

		cur_img="item.png" //"item.jpg"
		img_url="images/"+cur_img		 
		left_pos=0
		
		//Creamos el xaml que las contiene.. aqui podriamos hacer un parsing de xml para realizar el templating, mas que concatenar... (feo y complejo de modificar)
		xaml_str='<Canvas Name="imageHolder_'+i+'" Canvas.Left="'+left_pos+'" Canvas.Top="0" ' //>
		xaml_str+= 'MouseEnter="ItemMouseEnter" MouseLeave="ItemMouseLeave" Cursor="Hand"> '
			
		//reflections, kinda hard on the proc though...
		/*	 */
		xaml_str += 	'<Canvas Name="imgHolderReflection_'+i+'" Canvas.Top="' + (img_height + 50) +'" Opacity="1">'
		xaml_str += 	' <Canvas.OpacityMask>'
		xaml_str += 	'   <LinearGradientBrush  StartPoint="0,0" EndPoint="0,1">'           
		xaml_str += 	'     <GradientStop Offset="0.37" Color="#00000000"  />'      
		xaml_str += 	'     <GradientStop Offset="1" Color="#88000000"  />'
		xaml_str += 	'    </LinearGradientBrush>'          
		xaml_str += 	' </Canvas.OpacityMask>'
		xaml_str += 	' <Canvas.RenderTransform><TransformGroup><ScaleTransform Name="ReflectionScaleTransform_'+i+'" ScaleY="-1" ScaleX="1" CenterX="0" CenterY="0" /></TransformGroup></Canvas.RenderTransform>'		
		xaml_str +=		' <Image Name="imgReflection_'+i+'" Stretch="UniformToFill" Height="'+img_height+'" Width="'+img_width+'" Source="'+img_url+'" />'
		xaml_str +=		'</Canvas>'		
			
				
		//Y el rectangulo que contiene la imagen... junto con la asignacion de eventos...
		xaml_str+='  <Rectangle Name="rec_'+i+'" Canvas.Top="-6" Canvas.Left="-6" Fill="#FFF" Height="' + (img_height + 12) +'" Width="' + (img_width + 12) +'"></Rectangle>'
		xaml_str+='  <Image Cursor="Hand" MouseEnter="imageOver" MouseLeave="imageOut" MouseLeftButtonDown="imageDown" MouseLeftButtonUp="imageUp" Stretch="UniformToFill" Name="image_'+i+'" Height="'+img_height+'" Width="'+img_width+'" Source="'+img_url+'" Opacity="1" />'
		//Definimos un scaletransform para poder aumentar o disminuir el tamaño del elemento conforme se acerca o aleja...						
		xaml_str+='  <Canvas.RenderTransform><ScaleTransform Name="st_'+i+'" ScaleX="1" ScaleY="1" CenterX="50" CenterY="50"/></Canvas.RenderTransform>'			
		xaml_str+='</Canvas>'

		//Se crean y se ubican.
		xamlTags=plugin.content.createFromXaml(xaml_str)
		//imagesHolder.children.add(xamlTags)		
		//CarruselHolder.children.add(xamlTags)		
		main.children.add(xamlTags)
		
		//se crea un objeto para controlar la posicion del item generado y se asigna a un array de objetos...
		objsArr["image_"+i]=new Object()
		objsArr["image_"+i].angle=i*((Math.PI*2)/num_imgs) //El angulo viene de distribuir la circunferencia entre el total de objetos... esto esta muy bien
	}
	//Y los posicionamos 
	//positionItems()
	Carrusel_AjustarVelocidad()
	CarruselItems_PositionRelative()
	
	//Llamamos a una funcion javascript cada 25 milisegundos.. mmm... no esta muy bien esto.. quizas llamar position items despues de mover algun objeto si ha
	//habido cambio alguno?
	moveItemsInt=setInterval("moveItems()",25)
}