var currentGroup = 1;
var currentSlide = 1;
var groups = [];
var slides = [];

var action={"move" : false };

function getSlideCoord(curTime, startValue, endValue, totalTime) {
    if (curTime==0) return startValue;if (curTime==totalTime) return startValue+endValue; if ((curTime/=totalTime/2) < 1) return endValue/2 * Math.pow(2, 10 * (curTime - 1)) + startValue; return endValue/2 * (-Math.pow(2, -10 * --curTime) + 2) + startValue;
}

function doMoveForward(){return doMove(currentSlide+1)}
function doMoveBackward(){return doMove(currentSlide-1)}

function doMove(slideNum)
{
    if(action.move) return false;
    action.move=true;

    oSC=document.getElementById("slideContainer");
    oSCFrameWidth=0;
    for(i=0; i<oSC.childNodes.length; i++)
    {
        if(oSC.childNodes[i].tagName == "A")
        {
            oSCFrameWidth=oSC.childNodes[i].offsetWidth.toString();
            break;
        }
    }

    total=slides[currentGroup].length;

    oldCurrentSlide = currentSlide;
    currentSlide=slideNum;
    if(currentSlide > total) currentSlide = 1;
    if(currentSlide <1 ) currentSlide = total;

    delta = currentSlide - oldCurrentSlide;
    dir = (delta > 0) ? true : false;
    delta = Math.abs(delta);

    curTime = 0;
    stepTime = 50;
    startLeft = parseInt(oSC.style.left.replace("px", ""));
    var t = window.setInterval(
        function()
        {
            totalTime=1000+delta*200;
            step = Math.floor(getSlideCoord(curTime, 0, delta * oSCFrameWidth, totalTime));
            newLeft = (dir) ? startLeft - step : startLeft + step;
            oSC.style.left = newLeft.toString() + "px";
            curTime+=stepTime;
            if(curTime > totalTime)
            {
                clearInterval(t);
                action.move=false;
            }
        },
        stepTime
    );
}


function getGroupsHTMLFromSlideArray()
{
    if(slides[currentGroup].length != 0)
    {
        var HTMLCode = "";
        for(k in slides[currentGroup])
        {
                HTMLCode+= "<a class=\"slide\" slideid=\"" + slides[currentGroup][k]['id'] + "\" href=\"" + slides[currentGroup][k]['url'] + "\" style=\"background: url('/img/present/" + slides[currentGroup][k]['img'] + "') no-repeat center left;\">&nbsp;</a>";
        }
        HTMLCode += "<div style=\"clear:both;\"></div>";
    }
    else
    {
        HTMLCode="<div style=\"width: 900px; height: 300px; text-align: center; line-height: 300px;\">Тут пусто. Не забудь добавить картинки...</div>";
    }
    return HTMLCode;    
}

function showStaticSlide(sName)
{
    if(action.move) return false;
    oSC=document.getElementById("slideContainer");
    sName = (typeof sName == "undefined") ? 'shop' : sName;

    if(typeof groups[sName] != "undefined")
    {
        oSC.style.left = "0px";
        oSC.innerHTML = groups[sName];
    }
    else
    {
        var req = new JsHttpRequest();
        req.onreadystatechange = function() {
            if (req.readyState == 4)
            {
                if(req.responseJS == null || req.responseJS.slide==null || req.responseJS.slide == "")
                {
                    return false;
                }
                oSC.style.left = "0px";
                groups[sName] = req.responseJS.slide;
                oSC.innerHTML = groups[sName];
                //hide preloader
                window.clearTimeout(t);
                document.getElementById("sliderFace").style.display="none";
                document.getElementById("slideContainer").style.display="block";
            }
        }
        req.open(null, '/pub/ajax/present.php', true);
        req.send( {"cmd": "slide", "name" : sName} );
        // time delay for cases when image loads less then half of second
        var t = window.setTimeout("document.getElementById(\"sliderFace\").style.display=\"block\"; document.getElementById(\"slideContainer\").style.display=\"none\";" ,100);
}
}

function showGroup(gid)
{
    if(action.move) return false;

    oSC=document.getElementById("slideContainer");
    currentGroup = (typeof gid == "undefined") ? 1 : gid;
    currentSlide = 1;
    if(typeof groups[currentGroup] != "undefined")
    {
        oSC.style.left = "0px";
        oSC.innerHTML = groups[currentGroup];
    }
    else
    {
        var req = new JsHttpRequest();
        req.onreadystatechange = function() {
            if (req.readyState == 4)
            {
                if(req.responseJS == null || req.responseJS.slideList==null || req.responseJS.slideList == "")
                {
                    slides[currentGroup]=[];
                }
                else
                {
                    slides[currentGroup] = req.responseJS.slideList;
                }
                oSC.style.left = "0px";
                groups[currentGroup] = getGroupsHTMLFromSlideArray();
                oSC.innerHTML = groups[currentGroup];
                //hide preloader
                window.clearTimeout(t);
                document.getElementById("sliderFace").style.display="none";
            }
        }
        req.open(null, '/pub/ajax/present.php', true);
        req.send( {"cmd": "list", "gid" : gid} );
        // time delay for cases when image loads less then half of second
        var t = window.setTimeout("document.getElementById(\"sliderFace\").style.display=\"block\"" ,50);
    }
}

function smartSliderMove()
{
    var slider = document.getElementById("slider");
    var selector = document.getElementById("selector");
    var leftarrow = document.getElementById("leftarrow")
    var rightarrow = document.getElementById("rightarrow")
    var slidefooter = document.getElementById("slidefooter");

    slider.style.left="50%";
    selector.style.left = "50%";
    leftarrow.style.left = "50%";
    rightarrow.style.left = "50%";
    slidefooter.style.left = "50%";

    var sliderStyle = window.getComputedStyle(slider, null) || slider.currentStyle;
    var left = sliderStyle.left;
    var left = parseInt(left);

    if(left < 650)
    {
        slider.style.left = "650px"; //jedai mode
        selector.style.left = "650px";
        leftarrow.style.left = "650px";
        rightarrow.style.left = "650px";
        slidefooter.style.left = "650px";
    }
}

window.onresize = smartSliderMove;
window.onload = smartSliderMove;