var $j=jQuery.noConflict();


var ACCORDION_WIDTH=800;
var ACCORDION_DRAW_ASIDE_WIDTH=50;
var ACCORDION_EASING_METHOD="easeOutCirc";
var ACCORDION_SLIDE_TIME=1250;
var g_slidedDivs=null;
var g_hoveredSlideIndex=null;

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(){
        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_sliderTimerInterval);
        }
    });
    
    $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);
        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);
        }
    });
}



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;
        }
    }
}


var g_actualSlideImage=0;
var g_sliderTimerAutoPlay=null;
var g_sliderTimerInterval=6500;
var g_sliderAutoPlay=true;
var g_sliderNewLoop=false;
var g_setBackwardBtnOnLast=false;
var FORWARD=true;
var BACKWARD=false;
var g_lastSlideMoveDirection=FORWARD;


function accordionPlay(){
    if(g_loadedStripCount<g_slidedDivs.length){
        if(true==g_sliderAutoPlay){
            g_sliderTimerAutoPlay=setTimeout(accordionPlay,g_sliderTimerInterval);
        }
        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);
        }
        timeOut=g_sliderTimerInterval*2;
        g_sliderNewLoop=false;
        g_setBackwardBtnOnLast=true;
        g_sliderTimerAutoPlay=setTimeout(accordionPlay,timeOut);
        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);
    }
}



function setupAccordionAutoPlay(){
    if(true==g_sliderAutoPlay){
        g_sliderTimerAutoPlay=setTimeout(accordionPlay,g_sliderTimerInterval);
    }
}

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);
    setMoveForAccordionDivs(index);
}

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").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);
}


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);
        }
    }
}




g_loadedSlideCount=0;
g_imgList=null;

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

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);
    }
}

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{
        clearTimeout(g_sliderTimerAutoPlay);
        g_sliderTimerAutoPlay=setTimeout(accordionPlay,g_sliderTimerInterval);
    }
    
    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);
    }

}



$j(document).ready(function(){
    //setupLoadingAsynchronousImages();
    setupLoadingAsynchronousImagesForAccordion();
    setupLoadingAsyncSlideStripImages();
    setupAccordionImageSlider();
    setupAccordionAutoPlay();
});
