/********************************************************************
    File:   
        slider_accordion.js

*********************************************************************/

/**********************************************
    Slider object definition.
***********************************************/
var slider_acc = new Object();
slider_acc.width = 960; 
slider_acc.slide_off_width = 50; 
slider_acc.easing = 'easeOutCirc';              
slider_acc.slide_time = 850;
slider_acc.slide_desc_time = 800;
slider_acc.slide_desc_off_time = 300;
slider_acc.strip_desc_time = 550; 
slider_acc.slide_distance = 0;
slider_acc.slides = new Array;
slider_acc.slides_count = 0;
slider_acc.hovered_slide_index = null;
slider_acc.id = null;
slider_acc.auto_close = true;
slider_acc.auto_close_after_time = false; 
slider_acc.auto_close_time = 8000;
slider_acc.auto_close_timer_handle = null;
slider_acc.auto_play = false;
slider_acc.auto_play_time = 8000;//slide display time
slider_acc.auto_play_closed_time = 6000; 
slider_acc.auto_play_timer_handle = null;
slider_acc.auto_play_closed = false;
slider_acc.slide_desc_height = 90;

slider_acc.setup = function(id)
{
    slider_acc.id = id;
    // if slider not exist return from function
    if(0 == $(slider_acc.id).length)
    {        
        return;
    }

    // get slider context
    var c = $(slider_acc.id)[0];
    
    //alert($('.slide', c).length);
    slider_acc.init_slides();     
}



/**********************************************
    INIT SLIDES
***********************************************/
slider_acc.init_slides = function()
{
    var c = $(slider_acc.id)[0];
    
    $('.slide:first', c).css('border', 'none');
    
    slider_acc.slides_count = $('.slide', c).length;
    slider_acc.slide_distance = slider_acc.width / slider_acc.slides_count; 
    
    for(var i = 0; i < slider_acc.slides_count; i++)
    {
        var obj = new Object(); 
        obj.id = "#" + $('.slide:eq('+i+')', c).attr('id');  
        obj.left = i*slider_acc.slide_distance;
        obj.out = false;          
        slider_acc.slides.push(obj);
        
        $(obj.id, c).css('left', i*slider_acc.slide_distance);

    } 
    
    $('.slide', c).hover(
        function()
        {
            if(slider_acc.auto_play)
            {
                clearTimeout(slider_acc.auto_play_timer_handle);
                slider_acc.auto_play_timer_handle = null;
            }
            
            var index = $('.slide', c).index(this);
            slider_acc.hovered_slide_index = index;
            
            slider_acc.mouse_out_all_slide(index);
            slider_acc.mouse_on_slide(index); 
            
            slider_acc.slides[index].out = false;
            slider_acc.move_slides(index);  
        },
        function()
        {
            if(slider_acc.auto_close)
            {
                var index = $('.slide', c).index(this);
                if(slider_acc.slides[index].out == false)
                {
                    slider_acc.slides[index].out = true;
                    slider_acc.mouse_out_slide(index);
                }
            }              
             
        }    
    );
    
    $(slider_acc.id).hover( 
        function()
        {
            clearTimeout(slider_acc.auto_close_timer_handle);
            slider_acc.auto_close_timer_handle = null;
        },
        function ()
        {
            if(slider_acc.auto_close)
            {            
                slider_acc.mouse_out_accor();
            }
                        
            if(!slider_acc.auto_play && !slider_acc.auto_close && slider_acc.auto_close_after_time)
            {
                slider_acc.auto_close_timer_handle = setTimeout(slider_acc.close_after_time, slider_acc.auto_close_time);
            }
            
            if(slider_acc.auto_play)
            {
                if(slider_acc.auto_play_timer_handle == null)
                {
                    slider_acc.auto_play_timer_handle = setTimeout(slider_acc.play, slider_acc.auto_play_time);
                }
            }            
        }
    );
    
    $('.slide .shadow', c).hover(
      function ()
      {
          var p = $(this).parent();
          var index = $('.slide', c).index(p);         
          index = index - 1;  

          if(index >= 0)
          {
            slider_acc.hovered_slide_index = index;
            
            slider_acc.mouse_out_all_slide(index);
            slider_acc.mouse_on_slide(index); 
            
            slider_acc.slides[index].out = false;
            slider_acc.move_slides(index);                
          }         
      },
      function ()
      {
     
                  
      }
    
    );   
    
    if(slider_acc.auto_play)
    {
        if(slider_acc.auto_play_timer_handle == null)
        {
            slider_acc.auto_play_timer_handle = setTimeout(slider_acc.play, slider_acc.auto_play_time);
        }
    }      
      
}


/**********************************************
    AUTOPLAY SLIDER
***********************************************/
slider_acc.play = function()
{    
    if(slider_acc.hovered_slide_index == null)
    {
        slider_acc.hovered_slide_index = 0;
    } else
    {
        if(!slider_acc.auto_play_closed)
        {
            slider_acc.hovered_slide_index = slider_acc.hovered_slide_index+1;
        } else
        {
            slider_acc.auto_play_closed = false;
        }
        
        if(slider_acc.hovered_slide_index >= slider_acc.slides_count)
        {
            slider_acc.hovered_slide_index = 0;
            slider_acc.auto_play_closed = true;
            slider_acc.mouse_out_accor();
        }        
    }
    
    if(!slider_acc.auto_play_closed)
    {
        var index = slider_acc.hovered_slide_index;
        slider_acc.mouse_out_all_slide(index);
        slider_acc.mouse_on_slide(index); 
        
        slider_acc.slides[index].out = false;
        slider_acc.move_slides(index);
    }    
    

    var time = slider_acc.auto_play_time;
    if(slider_acc.auto_play_closed)
    {
        time = slider_acc.auto_play_closed_time;
    }
    slider_acc.auto_play_timer_handle = setTimeout(slider_acc.play, time);
       
}

/**********************************************
    CLOSE SLIDER
***********************************************/
slider_acc.close_after_time = function()
{
    slider_acc.auto_close_timer_handle = null;
    slider_acc.mouse_out_accor(); 
}


/**********************************************
    MOUSE ON SLIDE
***********************************************/
slider_acc.mouse_on_slide = function(index) 
{
    var c = $(slider_acc.id)[0]; 
    $('.strip-desc-full').stop().animate({opacity: 0.0}, slider_acc.strip_desc_time);
    
    $('.slide:eq('+index+') .text', c).stop().animate({bottom: 0, opacity: 0.85}, slider_acc.slide_desc_time);
    $('.slide:eq('+index+') .text-back', c).stop().animate({bottom: 0, opacity: 0.90}, slider_acc.slide_desc_time);
    slider_acc.slides[index].out = false;  
} 

/**********************************************
    MOUSE OUT SLIDE
***********************************************/
slider_acc.mouse_out_slide = function(index) 
{
    var c = $(slider_acc.id)[0]; 
    
    $('.slide:eq('+index+') .text', c).stop().animate({bottom: -slider_acc.slide_desc_height, opacity: 0.0}, slider_acc.slide_desc_off_time);
    $('.slide:eq('+index+') .text-back', c).stop().animate({bottom: -slider_acc.slide_desc_height, opacity: 0.0}, slider_acc.slide_desc_off_time);                
}

/**********************************************
    MOUSE OUT ALL SLIDES
***********************************************/
slider_acc.mouse_out_all_slide = function(index) 
{
    var c = $(slider_acc.id)[0]; 
    
    for(var i = 0; i < slider_acc.slides_count; i++) 
    {
        if(i == index && index != null) { continue; }
        
        if(slider_acc.slides[i].out == false)
        {
            slider_acc.slides[i].out = true;
            slider_acc.mouse_out_slide(i);
        }    
    }
}
              
slider_acc.mouse_out_accor = function()
{
    var c = $(slider_acc.id)[0];
    
    $('.strip-desc-full').stop().animate({opacity: 1.0}, slider_acc.strip_desc_time);
    for(var i = 0; i < slider_acc.slides_count; i++) 
    {
        var obj = $('.slide:eq('+i+')', c);
        var left = i * slider_acc.slide_distance;
        slider_acc.slides[i].left = left; 
        obj.stop().animate(
            {left: left}, 
            {duration: slider_acc.slide_time, easing: slider_acc.easing});
        slider_acc.mouse_out_slide(i);            
    }    
}   

/**********************************************
    MOVE SLIDES
***********************************************/
slider_acc.move_slides = function(index)
{   
    var c = $(slider_acc.id)[0]; 
     
    for(var i = 0; i < slider_acc.slides_count; i++)
    {
        var obj = $('.slide:eq('+i+')', c);
        
        if(i <= index)
        {
            var left = i * slider_acc.slide_off_width;
            if(slider_acc.slides[i].left != left)
            {
                
                slider_acc.slides[i].left = left;
                obj.stop().animate(
                    {left: left}, 
                    {duration: slider_acc.slide_time, easing: slider_acc.easing});
                
            } // if
        } // if
       
        if(i > index)
        {
            var left = (slider_acc.width - ((slider_acc.slides_count - i) * slider_acc.slide_off_width)); 
            if(slider_acc.slides[i].left != left)
            {
                
                slider_acc.slides[i].left = left;
                obj.stop().animate(
                    {left: left}, 
                    {duration: slider_acc.slide_time, easing: slider_acc.easing});
                
            } // if
        } // if       
        
    } // for   
}  

