var $j = jQuery.noConflict();

/**************************
       ACCORDION CODE
**************************/
 
var ACCORDION_WIDTH = 960;
var ACCORDION_DRAW_ASIDE_WIDTH = 60;
var ACCORDION_EASING_METHOD = "easeOutCirc";
var ACCORDION_SLIDE_TIME = 650;
var g_slidedDivs = null;
var g_hoveredSlideIndex = null;
var g_timeAutoPlayInit = 4500;

var g_sliderAutoPlay = true;
var g_sliderTimerInterval = 4500;
var g_sliderTimerIntervalLoop = 9000;

function setupAccordionImageSlider()
{
    
    $j("#accordionContainer").find(".accordionImgDiv:first").css("border-left", "0px");
    
    var slidedDivsList = $j("#accordionContainer .accordionImgDiv");
    g_slidedDivs = new Array;
    var firstDiv = $j("#accordionContainer .accordionImgDiv:first");
    for(var i = 0; i < slidedDivsList.length; i++)
    {
        var obj = new Object(); 
        obj.name = "#" + $j(firstDiv).attr('id'); 
        obj.dest = 0;
        obj.out = 0;
        g_slidedDivs.push(obj); 

        firstDiv = $j(firstDiv).next(".accordionImgDiv");
    }
                 
    var ribOutWidth = 0;
    ribOutWidth = ACCORDION_WIDTH / g_slidedDivs.length;
    
    for(var i = 0; i < g_slidedDivs.length; i++)
    {
        $j(g_slidedDivs[i].name).css("margin-left", (i*ribOutWidth)+"px");
        g_slidedDivs[i].dest = i*ribOutWidth;
    }

    $j("#accordionContainer").hover(
        function()
        {   
            // stop the auto play accordion image slider
            if(true == g_sliderAutoPlay)
            {
                clearTimeout(g_sliderTimerAutoPlay);
            }
            if(g_loadedStripCount < g_slidedDivs.length)
            {
				return;
            }            
            $j("#accordionContainer .accordionImgDiv").find(".slideDesc").stop().animate({opacity: 0.0}, 150);
        },
        function()
        {   
            if(g_loadedStripCount < g_slidedDivs.length)
            {
                return;
            }
            
            mouseOutAccorOnAll(null);        
            for(var i = 0; i < g_slidedDivs.length; i++)
            {
                $j(g_slidedDivs[i].name).stop()
                    .animate({marginLeft: (i*ribOutWidth)+"px"}, {duration: 900, easing: ACCORDION_EASING_METHOD});
                g_slidedDivs[i].dest = i*ribOutWidth;
                $j(g_slidedDivs[i].name).find(".slideDesc").stop().animate({opacity: 1.0}, 1200);
            }
            if(true == g_sliderAutoPlay)
            {
                clearTimeout(g_sliderTimerAutoPlay);
                mouseOutAccorOnAll(null);
                g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_timeAutoPlayInit);
            }
        }
    );                                                    

    $j(".accordionImgDiv").hover(
        function()
        {   
            if(true == g_sliderAutoPlay)
            {
                clearTimeout(g_sliderTimerAutoPlay);
            }        
            if(g_loadedStripCount < g_slidedDivs.length)
            {
                return;
            }        
        
            var divID = ("#" + $j(this).attr('id'));
            mouseOutAccorOnAll(divID);

            g_hoveredSlideIndex = $j("#accordionContainer .accordionImgDiv").index(this);    
            
            var context = $j(this)[0];
            $j(".accordionSlideImage", context).find("img").stop().animate({opacity: 1.0}, 400); 
            $j(".accordionDescBack", context).stop().animate({bottom: 0, opacity: 0.8}, 1000);
            $j(".accordionDesc", context).stop().animate({bottom: 0, opacity: 1.0}, 1000);
            $j(".slideStrip", context).stop().animate({opacity: 0.0}, 200, ACCORDION_EASING_METHOD, function(){ $j(this).css('visibility', 'hidden'); }); 
            
            g_slidedDivs[g_hoveredSlideIndex].out = 0;
            setMoveForAccordionDivs(g_hoveredSlideIndex);
        }, 
        function()
        {
            if(g_loadedStripCount < g_slidedDivs.length)
            {
                return;
            }        
        
            g_hoveredSlideIndex = null;
            
            var divID = ("#" + $j(this).attr('id'));
            var index = 0;
            for(var i = 0; i < g_slidedDivs.length; i++)
            {
                if(divID == g_slidedDivs[i].name)
                {        
                    index = i;
                    break;
                }
            }
            
            if(g_slidedDivs[index].out != 1)
            {
                g_slidedDivs[index].out = 1;            
                mouseOutAccor(this);
            }
        }
    );
} // end of function setupAccordionImageSlider 

function setMoveForAccordionDivs(index)
{
    for(var i = 0; i < g_slidedDivs.length; i++)
    {
        var context = $j(g_slidedDivs[i].name)[0];
        var object = $j(g_slidedDivs[i].name);
        $j(".slideDesc", context).stop().animate({opacity: 0.0}, 150);
        if(i < index)
        {
            var newMargin = (i*ACCORDION_DRAW_ASIDE_WIDTH);
            if(g_slidedDivs[i].dest != newMargin)
            {
                object.stop();
                var animTime = ACCORDION_SLIDE_TIME;
                g_slidedDivs[i].dest = newMargin;
                object.animate(
                    {marginLeft: newMargin+"px"}, 
                    {duration: animTime, easing: ACCORDION_EASING_METHOD});
            }
            continue;
        }
        if(index == i)
        {
            var newMargin = (i*ACCORDION_DRAW_ASIDE_WIDTH);
            if(g_slidedDivs[i].dest != newMargin) 
            {   
                object.stop();
                var animTime = ACCORDION_SLIDE_TIME;
     
                g_slidedDivs[i].dest = newMargin;
                object.animate(
                    {marginLeft: newMargin+"px"}, 
                    {duration: animTime, easing: ACCORDION_EASING_METHOD});
            }
            continue;
        }
        if(i > index)
        {
            var newMargin = (ACCORDION_WIDTH - ((g_slidedDivs.length - i) * ACCORDION_DRAW_ASIDE_WIDTH));
            if(g_slidedDivs[i].dest != newMargin) 
            {   
                object.stop();
                var animTime = ACCORDION_SLIDE_TIME;  
                g_slidedDivs[i].dest = newMargin;
                object.animate({"marginLeft": newMargin+"px"}, {duration: animTime,
                    easing: ACCORDION_EASING_METHOD});
            }
            continue;
        }
    }
} // end of function setMoveForAccordionDivs  


var g_actualSlideImage = 0;
var g_sliderTimerAutoPlay = null;
var g_sliderNewLoop = false;
var g_setBackwardBtnOnLast = false;

function accordionPlay()
{
    if(g_loadedStripCount < g_slidedDivs.length)
    {
        if(true == g_sliderAutoPlay)
        {
            g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_timeAutoPlayInit);
        }      
        return;
    }      

    var timeOut = g_sliderTimerInterval;
 
    if(BACKWARD == g_lastSlideMoveDirection)
    {
        g_actualSlideImage++;
        if(g_actualSlideImage >= g_slidedDivs.length)
        {
            g_actualSlideImage = 0;
            g_sliderNewLoop = true;
        } 
    }
    g_lastSlideMoveDirection = FORWARD;
    
    g_setBackwardBtnOnLast = false;
    if(true == g_sliderNewLoop)
    {
        ribOutWidth = ACCORDION_WIDTH / g_slidedDivs.length;
        mouseOutAccorOnAll(null);
       
        for(var i = 0; i < g_slidedDivs.length; i++)
        {
            $j(g_slidedDivs[i].name).stop()
                .animate({marginLeft: (i*ribOutWidth)+"px"}, {duration: 900, easing: ACCORDION_EASING_METHOD});
            g_slidedDivs[i].dest = i*ribOutWidth;
            $j(g_slidedDivs[i].name).find(".slideDesc").stop().animate({opacity: 1.0}, 2000); 
        }
        g_sliderNewLoop = false;
        g_setBackwardBtnOnLast = true;
        g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_sliderTimerIntervalLoop); 
        return;
    }
    
    mouseOutAccorOnAll(null); 
    mouseOnAccor(g_slidedDivs[g_actualSlideImage].name);
    
    g_actualSlideImage++;
    if(g_actualSlideImage >= g_slidedDivs.length)
    {
        g_actualSlideImage = 0;
        g_sliderNewLoop = true;   
    }
    
    if(true == g_sliderAutoPlay)
    {
        g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_sliderTimerInterval);
    }      
    
} // end of function accordionPlay

function setupAccordionAutoPlay()
{
    if(true == g_sliderAutoPlay)
    {
        g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_timeAutoPlayInit);
    }
} // end of function setupAccordionAutoPlay

function mouseOnAccor(_this)
{
    var index = 0;
    for(var i = 0; i < g_slidedDivs.length; i++)
    {
        if(("#" + $j(_this).attr('id')) == g_slidedDivs[i].name)
        {        
            index = i;
            break;
        }
    }
    g_slidedDivs[index].out = 0;

    $j(_this).find(".accordionSlideImage").find("img").stop().animate({opacity: 1.0}, 400); 
    $j(_this).find(".accordionDescBack").stop().animate({bottom: 0, opacity: 0.8}, 1000);
    $j(_this).find(".accordionDesc").stop().animate({bottom: 0, opacity: 1.0}, 1000);
    $j(_this).find(".slideStrip").stop().animate({opacity: 0.0}, 300, function(){ $j(this).css('visibility', 'hidden'); });
  
    setMoveForAccordionDivs(index);
} // end of function mouseOnAccor

function mouseOutAccor(_this)
{
    var context = $j('#accordionContainer')[0];
    $j(_this, context).find(".accordionSlideImage").find("img").stop().animate({opacity: 0.0}, 800
    ,function(){$j(_this, context).find(".slideStrip").css('visibility', 'visible').stop().animate({opacity: 1.0}, 600);}
    );
    $j(_this, context).find(".accordionDescBack").stop().animate({bottom: -70, opacity: 0}, 300);
    $j(_this, context).find(".accordionDesc").stop().animate({bottom: -70, opacity: 0}, 300);
    
} // end of function mouseOutAccor

function mouseOutAccorOnAll(excludedID)
{
    for(var j = 0; j < g_slidedDivs.length; j++)
    {
       if(excludedID != null)
       {
         if(excludedID == g_slidedDivs[j].name)
         {
            continue;
         }
       }
       if(g_slidedDivs[j].out != 1)
       {
            g_slidedDivs[j].out = 1;
            mouseOutAccor(g_slidedDivs[j].name);
       }
    } 
} // end of function mouseOutAccorOnAll



var FORWARD = true;
var BACKWARD = false;
var g_lastSlideMoveDirection = FORWARD;

/*********************************************
    ASYNCHRONOUS IMAGE LOADING FOR ACCORDION
**********************************************/
g_loadedSlideCount = 0;
g_imgList = null;

function checkAccordionLoading()
{
    if(g_loadedSlideCount < g_imgList.length)
    {  
       setupLoadingAsynchronousImagesForAccordion();
    }
} // end of function checkAccordionLoading 

function setupLoadingAsynchronousImagesForAccordion()
{
    if(g_imgList == null)
    {
        var imgDivsList = $j("#accordionContainer .asyncImgLoadAccordion");
         g_imgList = new Array;
         var firstDiv = $j("#accordionContainer .accordionImgDiv:first");
         var imgDiv = $j(firstDiv).find(".asyncImgLoadAccordion");
         for(var i = 0; i < imgDivsList.length; i++)
         {
            var obj = new Object(); 
            obj.id = "#" + $j(imgDiv).attr('id'); 
            g_imgList.push(obj); 

            firstDiv = $j(firstDiv).next(".accordionImgDiv");    
            imgDiv = $j(firstDiv).find(".asyncImgLoadAccordion");
         }
    }
        
    if(g_loadedSlideCount < g_imgList.length)
    {  
       g_loadedSlideCount++;
       loadAccordionImg(g_imgList[g_loadedSlideCount-1].id, g_loadedSlideCount-1);
       setTimeout(setupLoadingAsynchronousImagesForAccordion, 500);
    }
        
        function loadAccordionImg(id, _index)
        {   
  
            var loader = $j(id);
            var imagePath = loader.attr('title');
            var img = new Image();
            $j(img).css("opacity", "0.0")
                .load(
                    function() 
                    {
                        loader.append(this).removeAttr('title');
                        loader.css("background-image", "none");
                        $j(this)
                            .css("margin", "0px")
                            .css("opacity", "0.0");
                        
                        if(_index == g_hoveredSlideIndex)
                        {
                            $j(this).animate({opacity: 1.0}, 500);
                        }                        
                            
                    }
                ).attr('src', imagePath);                        
        } 
        
           
} // end of function setupLoadingAsynchronousImagesForAccordion

var g_loadedStripCount = 0;
var g_stripList = null;
function setupLoadingAsyncSlideStripImages()
{
    if(g_stripList == null)
    {
         var imgDivsList = $j("#accordionContainer .slideStrip");
         g_stripList = new Array;
         var firstDiv = $j("#accordionContainer .accordionImgDiv:first");
         var imgDiv = $j(firstDiv).find(".slideStrip");
         for(var i = 0; i < imgDivsList.length; i++)
         {
            var obj = new Object(); 
            obj.id = imgDiv; 
            g_stripList.push(obj); 

            firstDiv = $j(firstDiv).next(".accordionImgDiv");    
            imgDiv = $j(firstDiv).find(".slideStrip");
         }
    }
        
    if(g_loadedStripCount < g_stripList.length)
    {  
       
       loadStripImg(g_stripList[g_loadedStripCount].id, g_loadedStripCount);
       
    } else
    {
        if(true == g_sliderAutoPlay) 
        {
            clearTimeout(g_sliderTimerAutoPlay);
            g_sliderTimerAutoPlay = setTimeout(accordionPlay, g_timeAutoPlayInit);
        }
    }
        
        function loadStripImg(id, _index)
        {   
 
            var loader = $j(id);
            var imagePath = loader.attr('title');
            var img = new Image();
            $j(img).css("opacity", "0.0")
                .load(
                    function() 
                    {
                        loader.append(this).removeAttr('title');
                        g_loadedStripCount++;
                        $j(this)
                            .css("margin", "0px")
                            .css("opacity", "0.0")
                            .animate({opacity: 1.0}, 400, function()
                            {
                                loader.css("background-image", "none"); 
                                setTimeout(setupLoadingAsyncSlideStripImages, 20); 
                            });                            
                    }
                ).attr('src', imagePath);                      
        } 
} // end of function setupLoadingAsyncSlideStripImages 

     
/***************************************
    MAIN CODE - CALL THEN PAGE LOADED
****************************************/
$j(document).ready(
    function()
    {
        if($j("#accordionContainer").length > 0)
        {

            setupLoadingAsynchronousImagesForAccordion();
            setupLoadingAsyncSlideStripImages();            
            setupAccordionImageSlider();
            if(g_sliderAutoPlay)
            {   
                setupAccordionAutoPlay();
            }
        }
    }
);

