



// ================== SLIDEIMAGES ====================
var Slides = {};

function SlidesAppend (id,big_src,noAutoSlide) {
  Slides[id] = {};

  Slides[id]['imgsize'] = {sw: 0, sh: 0, bw: 0, bh: 0};
  Slides[id]['pos'] = 0;
  Slides[id]['timer'] = null;
  Slides[id]['img'] = null;
  Slides[id]['div'] = null;
  Slides[id]['big_img'] = null;
  Slides[id]['big_src'] = big_src;
  Slides[id]['sml_src'] = '';
  Slides[id]['noAutoSlide'] = noAutoSlide && (noAutoSlide == 2 || noAutoSlide == 'noauto');
  Slides[id]['Status'] = 0;
  
  //window.alert('Test'); 
}

function SlidesInit () {
  
  for (var id in Slides) {
	  
    var img = __el(id);
    var img_st = getCurrentStyle(img);

    Slides[id]['Status'] = 0;
    Slides[id]['img'] = img;
    Slides[id]['sml_src'] = img.src;
    Slides[id]['imgsize'].sw = img.attributes['width'] ? parseInt(img.attributes['width'].value) : img.width;
    Slides[id]['imgsize'].sh = img.attributes['height'] ? parseInt(img.attributes['height'].value) : img.height;

   //window.alert(img.attributes['width']);


    Slides[id]['big_img'] = document.createElement ('img');
    Slides[id]['big_img'].src = Slides[id]['big_src'];

    var div = document.createElement('div');
    div.style.width = (Slides[id]['imgsize'].sw + parseInt(img_st.borderLeftWidth) + parseInt(img_st.borderRightWidth)) + 'px';
    div.style.height = (Slides[id]['imgsize'].sh + parseInt(img_st.borderTopWidth) + parseInt(img_st.borderBottomWidth)) + 'px';
    div.style.textAlign = 'left';
    div.className = 'cover_div';
    var imgparent = img.parentNode;
    var imgitem = img;
    if (imgparent.nodeName == 'A') {
      imgitem = imgparent;
      imgparent = imgparent.parentNode;
    }
    imgparent.insertBefore (div,imgitem);
    div.appendChild (imgitem);

    Slides[id]['div'] = div;

    if (Slides[id]['noAutoSlide']){
      img.onclick = SlideImageIn;
      img.style.cursor = 'url(http://www.ravnovesie.com/zoomin.cur), pointer';
    } else {
      img.onmouseover = SlideImageIn;
    }
    img.onmouseout = SlideImageOut;
    img.style.zIndex = 1000;

    setTimeout('SlideImage (-100,"'+id+'")',1);
  }
  setTimeout ('_slides_wait_preload()',100);
}

var wait_cycles = 0;
function _slides_wait_preload () {
  var completed = 1;
  for (var id in Slides) {
    if (Slides[id]['big_img'].width > 36.6) {
      Slides[id]['imgsize'].bw = Slides[id]['big_img'].width;
      Slides[id]['imgsize'].bh = Slides[id]['big_img'].height;
    } else {
      completed = 0;
    }
  }

  if (!completed) {
    wait_cycles++;
    setTimeout ('_slides_wait_preload()',(wait_cycles>30)?3000:100);
  }
}

function SlideImageIn () {
  if(Slides[this.id]['Status'] == 0)
  {
	  

 Slides[this.id]['Status'] = 1;
 // window.alert('testin');  
  SlideImage (+14,this.id);
  
  if (Slides[this.id]['noAutoSlide']){
    this.style.cursor = 'url(http://www.ravnovesie.com/zoomout.cur), pointer';
    this.onclick = SlideImageOut;
  }
  }
}

function SlideImageOut () {
if(Slides[this.id]['Status'] == 1)
 {
  Slides[this.id]['Status'] = 0;
//  window.alert('testout');  
  
  SlideImage (-20,this.id);
  if (Slides[this.id]['noAutoSlide']){
     this.style.cursor = 'url(http://www.ravnovesie.com/zoomin.cur), pointer';
     this.onclick = SlideImageIn;
   }
  }
}

function SlideImage (step,id) {
  if (Slides[id]['timer']) clearTimeout (Slides[id]['timer']);
  if (!Slides[id]['imgsize'].bw) {
    if ((''+Slides[id]['img'].src).match('loading')) {}
    else {
      Slides[id]['img'].src = '/static/img/loading.gif';
    }
  } else {

  Slides[id]['pos'] += step;
  if (Slides[id]['pos'] > 100) Slides[id]['pos'] = 100;
  if (Slides[id]['pos'] < 0) Slides[id]['pos'] = 0;

  if (Slides[id]['img'].style.position != 'absolute') {
    Slides[id]['img'].src = Slides[id]['big_src'];
    Slides[id]['divOffset'] = _getOffset(Slides[id]['div']);
    Slides[id]['img'].style.position = 'absolute';
  }

  var dx = Slides[id]['pos']*(Slides[id]['imgsize'].bw-Slides[id]['imgsize'].sw)/100;
  var dy = Slides[id]['pos']*(Slides[id]['imgsize'].bh-Slides[id]['imgsize'].sh)/100;

  var cwidth = Math.floor(Slides[id]['imgsize'].sw + dx);
  var cheight = Math.floor(Slides[id]['imgsize'].sh + dy);
  var cleft = Math.floor(Slides[id]['divOffset'].X - dx/2);
  var ctop = Math.floor(Slides[id]['divOffset'].Y - dy/2);

  var bodySize = getBodySize();
  var minx = bodySize.left - Slides[id]['divOffset'].fullX + Slides[id]['divOffset'].X;
  var miny = bodySize.top  - Slides[id]['divOffset'].fullY + Slides[id]['divOffset'].Y;
  var maxx = minx + parseInt(bodySize.width) - cwidth;
  var maxy = miny + parseInt(bodySize.height) - cheight;

  if (cleft < minx) cleft = minx;
  if (cleft > maxx) cleft = maxx;
  if (ctop < miny) ctop = miny;
  if (ctop > maxy) ctop = maxy;

  Slides[id]['img'].width = cwidth;
  Slides[id]['img'].height = cheight;
  Slides[id]['img'].style.left = cleft + 'px';
  Slides[id]['img'].style.top = ctop + 'px';
  }

  if (Slides[id]['pos'] < 100 && step > 0 || Slides[id]['pos'] > 0 && step < 0) {
    Slides[id]['timer'] = setTimeout ('SlideImage('+step+',"'+id+'")',20);
  }
  if (step < 0 && Slides[id]['pos'] == 0) {
    Slides[id]['img'].style.position = 'static';
    Slides[id]['img'].style.top = 'auto';
    Slides[id]['img'].style.left = 'auto';
    Slides[id]['img'].src = Slides[id]['sml_src'];
  }
}


// Elements. Sobakka.framework.1.0 (c) russel

function __el (id) {
  return document.getElementById (id);
}

function __el_of (el,tag) {
  return el.getElementsByTagName (tag);
}



function _getOffset (el) {
  var elStyle = getCurrentStyle(el);
  if (elStyle && parseInt (elStyle.left) && elStyle.position == 'absolute')
    return {X: parseInt(elStyle.left),
            Y: parseInt(elStyle.top),
            fullX: parseInt(elStyle.left),
            fullY: parseInt(elStyle.top)};

  var out = {X: 0, Y: 0, fullX: 0, fullY: 0};
  var b=true;
  var b_getFull=true;
  if (el.getBoundingClientRect){
    var tmp = getOffsetRect(el);
    out.fullX = parseInt(tmp.left);
    out.fullY = parseInt(tmp.top);
    b_getFull = false;
  }
  while (el && (b || b_getFull)) {
    if(b && getCurrentStyle(el).position == 'relative'){
      if(b_getFull){
        out.fullX = out.X;
        out.fullY = out.Y;
        b=false;
      } else {
        break;
      }
    }
    if(b){
      out.X += parseInt (el.offsetLeft);
      out.Y += parseInt (el.offsetTop);
    } else {
      out.fullX += parseInt (el.offsetLeft);
      out.fullY += parseInt (el.offsetTop);
    }
    el = el.offsetParent;
  }
  if(b && b_getFull){
    out.fullX = out.X;
    out.fullY = out.Y;
  }
  return out;
}

function _width (obj) {
  if (obj.style && parseInt (obj.style.width)) return parseInt (obj.style.width);
  return obj.offsetWidth;
}

function _height (obj) {
  if (obj.style && parseInt (obj.style.height)) return parseInt (obj.style.height);
  return obj.offsetHeight;
}

function debug (el) {
  var str = '';
  for (k in el) {
    str += k + ' = ' + el[k] + '<br/>';
  }
  __el ('debug_div').innerHTML = str;
}


//#########################################################
function getCurrentStyle(el){
  if(!el) return null;
  var s=el.currentStyle;
  if(!s) s=document.defaultView.getComputedStyle(el,null); // Для FireFox
  return s;
}


function getOffsetRect(elem) {
    // (1)
    var box = elem.getBoundingClientRect()

    // (2)
    var body = document.body
    var docElem = document.documentElement

    // (3)
    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop
    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft

    // (4)
    var clientTop = docElem.clientTop || body.clientTop || 0
    var clientLeft = docElem.clientLeft || body.clientLeft || 0

    // (5)
    var top  = box.top +  scrollTop - clientTop
    var left = box.left + scrollLeft - clientLeft

    return { top: Math.round(top), left: Math.round(left) }
}
//*/
function getBodySize(){
  var docElem = document.documentElement;
  var docBody = document.body;
  return { top:    self.pageYOffset || (docElem && docElem.scrollTop) || (docBody && docBody.scrollTop),
           left:   self.pageXOffset || (docElem && docElem.scrollLeft) || (docBody && docBody.scrollLeft),
           height: (document.compatMode=='CSS1Compat' && !window.opera && docElem && docElem.clientHeight) ||
                   (docBody && docBody.clientHeight),
           width:  (document.compatMode=='CSS1Compat' && !window.opera && docElem && docElem.clientWidth) ||
                   (docBody && docBody.clientWidth)
  }
}


