//(c)2010 ing.-buero bechler halle, www.ebechler.de//

//const
var effectSteps=7; //>0
var effectPause=20; //ms

function prldimg () {
  var _i=0;
  for (_i=0; _i<arguments.length; _i++)
    if (arguments[_i]&&(_img=new Image()))
      _img.src=arguments[_i]; }

//------------------------------------------------------------------------

//local
var tDynImgList=function () {
  var fAR=new Array();

  //tDynImgList public
  this.add=function (_dynImg) {
    fAR[fAR.length]=_dynImg; }

  this.count=function () {
    return fAR.length; }

  this.findImg=function (_img) {
    var _i=0;
    while ((_i<fAR.length)&&(fAR[_i].aImg()!==_img))
      _i++;
    if (_i<fAR.length)
      return fAR[_i]; }

  this.minAll=function (_dynImg) {
    var _i=0;
    for (_i=0; _i<fAR.length; _i++)
      if (fAR[_i]!==_dynImg)
        fAR[_i].minimize(); }
} //tDynImgList

//------------------------------------------------------------------------

//public
var tDynImg=function (_img, _big) {
  dynImgList.add(this); //zur dynImgListe hinzfg.
  var fThis=this;
  var fImg=_img;
  var fImgOrg=null;
  var fImgBig=null;
  var fWidth=0; //indikator für init
  var fWidthMin=0;
  var fEffectDir=0; //-1=minim., 0=nothing, 1=maxim.
  var fEffectSizeInc=40; //px
  var fTimeout=null;
  _init();

  function _init () { //kann beliebig oft aufgerufen werden
    if (fImg) {
      if (!fWidth) { //wurde noch nicht initialisiert
        if (!fImgOrg) {
          fImgOrg=new Image();
          fImgOrg.src=fImg.src; }
        if (_big && !fImgBig) {
          fImgBig=new Image();
          fImgBig.src=_big; }
        var _img=new Image();
        _img.src=(fImgBig ? fImgBig.src : fImg.src); //laden f. größenbest.
        if (fWidth=parseInt(_img.width)) {
          if (parseInt(fImg.style.width)) {
            if (parseInt(fImg.style.width)==_img.width) //wird 1:1 dargestellt
              fWidthMin=fWidth/2;
            else
              fWidthMin=parseInt(fImg.style.width); }
          else {
            fWidthMin=fImg.getAttribute('width'); //probieren
            if (!fWidthMin) {
              fWidthMin=fWidth/2;
              fImg.style.width=fWidth+'px'; } //ggfl. style-attr erzg.
            else
              fImg.style.width=fWidthMin+'px'; }
          fEffectSizeInc=Math.round(Math.abs(fWidth-fWidthMin)/effectSteps); }}
      if (fWidth)
        return fThis; }}

  function _effect () {
    if (fTimeout) {
      window.clearTimeout(fTimeout);
      fTimeout=null; }
   if (fImg) {
     var _i=parseInt(fImg.style.width);
     if ((fEffectDir<0)&&(_i>fWidthMin)) {
       _i=_i-fEffectSizeInc;
       if (_i<fWidthMin)
         _i=fWidthMin;
       if (fImgBig && (_i==fWidthMin))
         fImg.src=fImgOrg.src;
       fImg.style.width=_i+'px'; }
     else
       if ((fEffectDir>0)&&(_i<fWidth)) {
         if (fImgBig && (_i==fWidthMin))
           fImg.src=fImgBig.src;
         _i=_i+fEffectSizeInc;
         if (_i>fWidth)
           _i=fWidth;
         fImg.style.width=_i+'px'; }
     if ((_i<=fWidthMin)||(_i>=fWidth))
       fEffectDir=0;
     //fImg.scrollIntoView(true);
     setTrans('simg','shdw',10 , -17, -10, 17, fImg);
     if (fEffectDir) //ggfl. weida
       fTimeout=window.setTimeout(function () { _effect(); }, effectPause); }}

  function _minimize () {
    if (_init()) {
      fEffectDir=-1;
      if (fTimeout)
        window.clearTimeout(fTimeout);
      fTimeout=window.setTimeout(function () { _effect(); }, effectPause); }}

  function _maximize () {
    if (_init()) {
      fEffectDir=1;
      if (fTimeout)
        window.clearTimeout(fTimeout);
      fTimeout=window.setTimeout(function () { _effect(); }, effectPause);
      if (dynImgList)
        dynImgList.minAll(fThis); }} //alle anderen minimieren

  //tDynImg public
  this.aImg=function () {
    return fImg; }

  this.minimize=function () {
    _minimize(); }

  this.maximize=function () {
    _maximize(); }

  this.toggle=function () {
    if (fImg)
      if (parseInt(fImg.style.width)==fWidth)
        _minimize();
      else
        _maximize(); }
} //tDynImg


var dynImgList=null; //nichts ist vorhanden vor erstm. aufruf von toggleDynImg

//------------------------------------------------------------------------

//// global (the one and only) ////
function toggleDynImg (_e, _big) { //img[sm-nme]//
  if (_e) {
    if (!dynImgList)
      dynImgList=new tDynImgList(); //ggfl. erzg.
    var _di=null;
    if ((_di=dynImgList.findImg(_e))||(_di=new tDynImg(_e, _big))) //ggfl. erzg. u. in list eintrg.
      _di.toggle(); }}

function minimizeAllDynImg (_e) {
  _e=_e||window.event;
  if (_e) {
    if (!dynImgList)
      dynImgList=new tDynImgList(); //ggfl. erzg.
    var _target=null;
    if (_e.srcElement)
      _target=_e.srcElement;
    else
      if (_e.target)
        _target=_e.target;
    if (_target)
      if (_target.tagName.toLowerCase()!=='img')
        dynImgList.minAll(); }} //ggfl. alle minimieren

//------------------------------------------------------------------------

function init_simg (_wol) {
  setTrans('simg','shdw',10,-17,-10,17);
  document.onmousedown=minimizeAllDynImg;
  if (_wol)
    _wol; }

//------------------------------------------------------------------------

var is_ie=(navigator.appName.indexOf('Explorer')!=-1);
IELT7=is_ie&&IELT7;

document.getElementsByClassName=function (_class, _e) {
  var _ret=[];
  var _clRegEx=new RegExp('\\b'+_class+'\\b');
  if (_e)
    _e=_e.getElementsByTagName('*');
  else //doc
    _e=this.getElementsByTagName('*');
  for (var _i=0; _i<_e.length; _i++) {
    var _classes=_e[_i].className;
    if (_clRegEx.test(_classes))
      _ret.push(_e[_i]); }
  return _ret; }

function setTrans (_shdwContClass, _shdwElClass, _ml, _mt, _mr, _mb, _e) {
  if (!IELT7) {
    var _thn=1; //thickness/marg. of one shdw-frame
    var _c=Math.round(220); //bkg-col
    if (_e) {
      var _a=new Array();
      _a[0]=_e; }
    else
      var _a=document.getElementsByClassName(_shdwContClass); //alle shdw-imgs/cont
    if (_a&&_a.length)
      var _w=0; var _h=0; var _x=0; var _y=0; var _m=0; var _mm=0; var _bi=0;
      for (var _ai=0; _ai<_a.length; _ai++) { //alle shdw-imgs abkl.
        _w=parseInt(_a[_ai].width);
        _h=parseInt(_a[_ai].height);
        if (_ml) _w-=-_ml;
        if (_mt) _h-=-_mt;
        if (_mr) _w-=-_mr;
        if (_mb) _h-=-_mb;
        _b=document.getElementsByClassName(_shdwElClass, _a[_ai].parentNode); //all shdw-divs accompaning that img
        if (_b&&_b.length) {
          for (_bi=0; _bi<_b.length; _bi++) { //all shdw-divs accompaning that img abkl.
            _trp=50.0/(_b.length+1)*(_bi+1);
            _m=(_b.length-_bi)*_thn;
            _mm=2*_m;
            if (is_ie) {
              _b[_bi].style.zoom='1';
              _b[_bi].style.filter='alpha(opacity='+(_trp)+')'; } //ie
            else
              _b[_bi].style.opacity=((_trp)/100.0);
            _x=-_m;
            _y=-_m;
            if (_ml) _x+=_ml;
            if (_mt) _y+=_mt;
            _b[_bi].style.left=(_x)+'px';
            _b[_bi].style.top=(_y)+'px';
            _b[_bi].style.width=(_w+_mm)+'px';
            _b[_bi].style.height=(_h+_mm)+'px';
            _b[_bi].style.backgroundColor='rgb('+(_c)+','+(_c)+','+(_c)+')';
            _b[_bi].style.display='block'; }}}}}
          
//------------------------------------------------------------------------
//window.onLoad=init_simg(window.onLoad); //overall-ini//
//------------------------------------------------------------------------

