var cartpresent = true;
var initdone = false;
var slideinact = false;
var slideoutact = false;
var scrollact = false;
var cartactive = false;
var cartoffact = false;
var followact = false;
var cartstay = 10000;
var cartacceleration = 0.2;
var carttime = 20;
var slidey=0;

function initcart() {
   if(bw.bw && !initdone) {
      if(bw.ie6) init();
      else onload = init;
   }
}

function init() {
    cart = new scrollerobj('divCart');
    cartMain = new scrollerobj('divCartMain','divCart');
    cartMain.write(top.cart.getCart())
    initdone = true;

    initimg();
    followme();
}

function initimg() {
    if (document.images) {
        dummy=new Image();
        dummy.src="../img/chk_1.gif";
    }
}

function followme() {
    var timeoutNextCheck = 500;
    var yFrom = cart.y;
    var yTo = (bw.ie)?document.body.scrollTop:pageYOffset;
    yTo += 140;

    if (Math.abs(yFrom-yTo)+360<140) {
         setTimeout ("followme()", timeoutNextCheck);
         followact = false;
         return;
    }

    if ( yFrom != yTo ) {
         yOffset = Math.ceil( Math.abs((yTo - yFrom)*cartacceleration));
         if(yTo < yFrom) yOffset = -yOffset;
         cart.moveBy(0,yOffset);
         timeoutNextCheck = 20;
         followact = true;
    } else {
         followact = false;
    }

    setTimeout ("followme()", timeoutNextCheck);
}

function togglecart() {
    if(initdone) {
        if (cartactive) cartoff();
        else carton();
    }
}

function carton() {
    // reinit timeout
    // just for being cool and keep the right times for slideout
    // check just again for safty, should be set
    // clear it for safety and set new
    if (cartoffact) {
        // do not automaticly slideout, re-init later again in slide
        // just for safety
        window.clearTimeout(cartoffact);
        cartoffact=false;
    }
    if(cartactive) {
        cartoffact=window.setTimeout("cartoff()",cartstay);
        return;
    }
    cartactive=true;
    slidein();
}

function cartoff() {
    if(!cartactive) return;
    if(followact) {
        cartoffact=window.setTimeout("cartoff()",cartstay);
        return;
    }
    if (cartoffact) {
        // do not automaticly slideout, re-init later again in slide
        // just for safety
        window.clearTimeout(cartoffact)
        cartoffact=false;
    }
    cartactive=false;
    slideout();
}

function slidein() {
    if (slideoutact) {
        // slideout is ongoing
        window.clearTimeout(slideoutact);
        slideoutact=false;
    }
    if (cart.x<0) slideinloop();
}

function slideout() {
    if (cartactive) return;
    if (slideinact) {
        // slidein is ongoing
        window.clearTimeout(slideinact);
        slideinact=false;
    }
    slideoutloop();
}

function slideoutloop() {
    cart.step = Math.round(-cart.x*cartacceleration);
    if (cart.step<1) cart.step = 1;
    if(cart.x-cart.step<-187) cart.step = 187+cart.x;
    cart.moveBy(-cart.step,0);
    if (cart.x>-187) slideoutact = setTimeout('slideoutloop()', carttime);
    else slideoutact=false;
}

function slideinloop() {
    cart.step = Math.round(-cart.x*cartacceleration);
    if (cart.step<1) cart.step = 1;
    cart.moveBy(cart.step,0);
    if (cart.x<0) slideinact = setTimeout('slideinloop()', carttime);
    else {
        if (cartactive && !cartoffact) cartoffact=window.setTimeout("cartoff()",cartstay);
        slideinact=false;
    }
}

function cartscroll(step){
    clearTimeout(scrollact);
    if (step<0&&slidey>0 ||step>0) {
        slidey+=step;
        cartMain.moveTo(12,30-slidey);
        cartMain.clipTo(slidey,172,260+slidey,0);
        scrollact = setTimeout('cartscroll('+step+')',40);
    }
}

function cartdown() {
    if (cartoffact) {
        // do not automaticly slideout now
        window.clearTimeout(cartoffact)
        cartoffact=false;
    }
    // scroll it
    cartscroll(4);
}

function cartup() {
    if (cartoffact) {
        // do not automaticly slideout now
        window.clearTimeout(cartoffact)
        cartoffact=false;
    }
    // scroll it
    cartscroll(-4);
}

function cartfreeze() {
    clearTimeout(scrollact);
}

function cartoffinit() {
    if (!cartoffact) {
        // setTimeout here onMouseOut
        cartoffact = window.setTimeout("cartoff()",cartstay);
    }
}

function writecart() {
    if(initdone) {
        cartMain.write(top.cart.getCart())
        //move to initial state
        cartMain.moveTo(12,30);
        cartMain.clipTo(0,172,260,0);
        cartactive=true;
        carton();
    }
}

function showcart() {
    if (initdone) slidein()
}

function hidecart() {
    if (initdone) slideout()
}

// main functions
function addArtikel(artnr,artbez,artpreis,artmwst,artgew,artbest,rabatt) {
    top.cart.add(artnr,artbez,artpreis,artmwst,artgew,1,artbest,rabatt);
    if (cartpresent) writecart();
}

function addArtikelArray(artArray) {
    if(artArray[0] == false)
    	return false;

	this.addArtikel(artArray[0], artArray[1], artArray[2], artArray[3], artArray[4], artArray[5], artArray[6]);
}

function addEntdrosseln(artnr,artbez,artpreis,artmwst,artgew,artbest,i) {
    var chkvar=1;
    if (eval('typeof b'+i) == 'undefined') chkvar=0;
    else {if (eval('b'+i)==0) chkvar=0};
    if (chkvar==1) addArtikelEntdr(artbez);

    top.cart.add(artnr,artbez,artpreis,artmwst,artgew,1,artbest,1);
    if (cartpresent) writecart();
}

function addArtikelEntdr(artbez) {
    top.cart.add(top.ArtEntdrosseln,'Entdrosseln '+artbez,String(top.Entdrosseln),'0','16',1,'&nbsp;')
}

function entdrosseln(i) {
        var chkvar = 0;
        if (eval('typeof b'+i) == 'undefined') chkvar=1;
        else {if (eval('b'+i)==0) chkvar=1};
        eval('b'+i+'='+chkvar);
        if (document.images)
        {
            document.images[i].src="../img/chk_"+chkvar+".gif";
        }
}
