/*****************************************************************************
                             LamellenObj
 ****************************************************************************/

function LamellenLayerObj(aJalousieObj, aLNr)
{ this.LNr=aLNr;
  this.JalousieObj=aJalousieObj;
  this.JalousieLayerObj=this.parent;
  this.org_y=this.y;
  this.setBgColor("#F0F0F0");
  this.slide_lamelle_up      = L_slide_lamelle_up;
  this.slide_lamelle_up_step = L_slide_lamelle_up_step;
  this.move_lamelle          = L_move_lamelle;
  this.rotate                = L_rotate;
  eval(this.obj + "=this");
  return this;
}

function L_slide_lamelle_up (aY, aSlideOffset, aIntervall)
{ var StartY=this.y;
  var StartDate=new Date();
  var StartZeit=StartDate.getTime();
  this.IntervallHandle=setInterval(this.obj+'.slide_lamelle_up_step('+aY+','+aSlideOffset+','+StartY+','+StartZeit+','+aIntervall+')',10)
}

function L_move_lamelle (aToY, aSlideOffset)
{ if (this.LNr>0)
  { if (aToY<this.y) // aufwärts
    { if (aToY <= this.JalousieObj.Lamellen[this.LNr-1].y+aSlideOffset)
       {//alert (aToY+" | "+this.JalousieObj.Lamellen[this.LNr-1].y)
        this.JalousieObj.Lamellen[this.LNr-1].move_lamelle (aToY-aSlideOffset, aSlideOffset)
       }
    }
    else if (aToY>this.y) //abwärts
    { // alert (aToY)
      if (this.JalousieObj.Lamellen[this.LNr-1].y < this.JalousieObj.Lamellen[this.LNr-1].org_y)
      { this.JalousieObj.Lamellen[this.LNr-1].move_lamelle (Math.min (aToY-aSlideOffset, this.JalousieObj.Lamellen[this.LNr-1].org_y), aSlideOffset)
      }
    }
  }
  this.moveLayerTo (this.x, aToY)
}  // Move_Lamelle

function L_slide_lamelle_up_step (aY,aSlideOffset, aStartY, aStartZeit, aIntervall)
{ var JetztZeit=new Date();
  aFaktor=(JetztZeit.getTime()-aStartZeit)/aIntervall;
  if (Math.abs(aFaktor)<1)
  { aToY=aStartY-(aStartY-aY)*aFaktor;
    //window.status="Auf: (f/S/aY/aToY) ("+aFaktor+'/'+aStartY+'/'+aY+'/'+aToY+')';
    //alert ("Auf: (f/S/aY/aToY) ("+aFaktor+'/'+aStartY+'/'+aY+'/'+aToY+')');
    this.move_lamelle(aToY, aSlideOffset)
    this.JalousieObj.shadow.moveLayerTo(this.JalousieObj.shadow.x, aToY)
    if ( bw.ns6 )
    { this.NS6_repaint_parent()
    }
  }
  else
  { clearInterval(this.IntervallHandle);
    this.JalousieObj.is_closed = (aY>this.y) //abwärts und letzter Schritt;
    this.move_lamelle(aY, aSlideOffset)
    this.JalousieObj.shadow.moveLayerTo(this.JalousieObj.shadow.x, aY/*+this.JalousieObj.lastLamelle.height*/)
    //alert ("finite (soll: "+aY +"ist: "+this.y+")\n"+"y0: "+this.JalousieObj.Lamellen[0].y+"\n"+"laststepsize: "+laststep);
    if (this.JalousieObj.after_slide_func)
       this.JalousieObj.after_slide_func();
  }
}

function L_rotate (aWinkel)
{  aNew_height = this.JalousieObj.LSize*Math.sin ((aWinkel/180)*Math.PI);
   this.setHeight (aNew_height);
   this.org_y=this.y;
   //alert (this.org_y);
}

/*****************************************************************************
                           JalousieObj
 ****************************************************************************/

function JalousieObj ()
{ this.height=this.getHeight();
  this.width=this.getWidth();
  this.LSize = Math.max (Math.round (this.height/13), 5);
  this.LamellenWinkel    = 90;
  this.slide_open_time   = 1000;
  this.slide_close_time  = 1000;
  this.rotate_open_time  = 1500;
  this.rotate_close_time = 300;

  this.open_winkel       = 15;
  this.waitCount         = 0;
  //this.Shadow
  this.lastLamelle       = null;
  this.LCnt              = Math.ceil(this.height/this.LSize);
  this.open              = j_open;
  this.close             = j_close;
  this.rotate            = j_rotate;
  this.slide_rotate      = j_slide_rotate;
  this.after_slide_func  = null;
  this.after_rotate_func = j_after_rotate_Jalousie;
  this.after_slide_func  = j_after_slide_Jalousie;
  this.setParams         = j_setParams;
  this.is_closed         = true;
  this.RotateIntervallHandle=null;
  this.StartAnimation = j_StartAnimation;
  //this.setBgColor("#00FF00");

  this.Lamellen=new Array();
  this.JalousieLayerObj=this.createLayerObj_absolute(0, 0, this.width-1, this.height-1,null,1)
	//this.JalousieLayerObj.setBgColor("#F0F0F0");
  for (var i=0;i<this.LCnt;i++)
  { this.lastLamelle=this.JalousieLayerObj.createLayerObj_absolute (0, i*this.LSize, this.width, this.LSize, null, 1).isLamellenLayerObj (this, i)
    //this.lastLamelle.setzIndex(i+1);
    this.lastLamelle.setzIndex(this.LCnt-i+1);
    this.lastLamelle.setHeightAxis(50);
    this.Lamellen[this.Lamellen.length]=this.lastLamelle;
  }

//  alert ("created : " + this.LCnt);
  if ( bw.ns4 )
     this.recreate_SubLayers();

  //this.lastLamelle.setzIndex(1);
  this.shadow=this.JalousieLayerObj.createLayerObj_absolute (0, this.lastLamelle.y+(this.lastLamelle.height/2), this.width, 30);
  this.shadow.setBgImage("../pics/shadow.gif");
  this.shadow.setzIndex(0);
  eval(this.obj + "=this");
return this;
}

function j_setParams (aLamelle)
{ for (var i=0; i<this.Lamellen.length; i++)
  { this.Lamellen[i].insertImage (aLamelle.src);
  }
}

/*function j_is_closed()
{ alert ('2:'+ this.lastLamelle.y)
  return (this.lastLamelle.y==this.lastLamelle.y)
}  // isClosed*/


function j_StartAnimation()
{
	if ((this.allImagesLoaded())||(this.waitCount >= 1))
 { this.waitCount=0;
   this.after_slide_func();
 }
 else
 { this.waitCount++;
   setTimeout (this.obj+'.StartAnimation()', 100)
 }
 //window.status = this.waitCount;
}

function j_open()
{ var SlideOffset=3;
  this.lastLamelle.slide_lamelle_up (SlideOffset*(this.Lamellen.length)-this.lastLamelle.height,SlideOffset,this.slide_open_time)
}

function j_close()
{ this.showLayer();
  if (!this.is_closed)
 { this.lastLamelle.slide_lamelle_up (this.lastLamelle.org_y,3,this.slide_close_time);
 }
}

function j_rotate (aEndWinkel,aStartWinkel,aStartZeit,aSlideTime)
{ var Jetzt = new Date();
  aFaktor=(Jetzt.getTime()-aStartZeit)/aSlideTime;

  if (aFaktor < 1)
  { this.LamellenWinkel=aStartWinkel+(aEndWinkel-aStartWinkel)*aFaktor;
    for (var i=0; i<this.Lamellen.length;i++)
      this.Lamellen[i].rotate (this.LamellenWinkel);
  }
  else
  { clearInterval(this.RotateIntervallHandle);
    this.LamellenWinkel=aEndWinkel;
    for (var i=0; i<this.Lamellen.length;i++)
      this.Lamellen[i].rotate (this.LamellenWinkel);
    if (this.after_rotate_func)
       this.after_rotate_func();
  }
}

function j_slide_rotate (aEndWinkel, aSlideTime)
{ var StartDate=new Date();
  var StartZeit=StartDate.getTime();
  var aStartWinkel=this.LamellenWinkel;
  //alert (this.obj+'.rotate ('+aEndWinkel+','+aStartWinkel+','+StartZeit+','+aSlideTime+')');

  this.RotateIntervallHandle=setInterval(this.obj+'.rotate ('+aEndWinkel+','+aStartWinkel+','+StartZeit+','+aSlideTime+')',10)
}  // j_slide_rotate (aToWinkel)

function j_after_rotate_Jalousie()
{ if (this.LamellenWinkel==this.open_winkel)
    setTimeout (this.obj+'.open()', 1000)
  else
    setTimeout ('Show_Jalousie(false)', 3000);
}

function j_after_slide_Jalousie (  )
{ if (this.is_closed)
  { if (this.LamellenWinkel==this.open_winkel)
     setTimeout (this.obj+'.slide_rotate('+90+','+this.rotate_close_time+')',1000);
    else
      setTimeout (this.obj+'.slide_rotate('+this.open_winkel+','+this.rotate_open_time+')',1000);
  }
  else
  { setTimeout ('Show_Jalousie(false)', 500);
  }
}

function Show_Jalousie( OnOff )
{ if (OnOff)
     Jalousie.JalousieLayerObj.showLayer()
  else
  { Jalousie.JalousieLayerObj.hideLayer();

  }
}




