var s_url="http://www.atriumhotelbudapest.com/atrium_pictures/gallery_proc.php";
var s_galdir="./atrium_pictures";
var s_thumbdir="./atrium_pictures/thumbnails";
var s_icodir="./atrium_images/slideshow";
var s_pics=[];
var s_container=null;
var s_sn=null;
var s_sp=null;
var s_id=0;
var s_lastid=null;
var s_pic=null;
var s_bgr=null;
var l_layer=null;
var c_layer=null;
var p_layer=null;
var s_timer=null;
var s_op=0;
var s_unit=7;
var s_wu=0;
var s_hu=0;
var s_cw=0;
var s_ch=0;
var s_num=0;
var s_thumbh=40;
var s_first=0;
var s_offsetleft=0;
var s_psum=0;
var s_scint=null;
var s_obj=null;

function ajaxRequest(url,parameters,oload) {
  this.req=false;
  this.url=url;
  this.parameters=parameters;
   
  this.sendRequest=function(){
    this.req=false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
       this.req=new XMLHttpRequest();
       if (this.req.overrideMimeType) {
          this.req.overrideMimeType('text/html');
       }
    } else if (window.ActiveXObject) { // IE
       try {
          this.req=new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
          try {
             this.req=new ActiveXObject("Microsoft.XMLHTTP");
          } catch (e) {}
       }
    }
    if (!this.req) {
      alert('Cannot create XMLHTTP instance');
      return false;
    }
    
    var self=this;
    this.parameters="?"+this.parameters;
    if (this.parameters.length>1) this.parameters+='&';
    this.parameters+='r='+Math.floor(Math.random()*10000);
    this.req.open('GET',this.url+this.parameters,true);
    this.req.onreadystatechange=function(){self.handleResponse(self);}
    this.req.send(null);
  }
  
  this.handleResponse = function(t){
//    alert(t.id+t.tagName);  
    if (t.req.readyState == 4) {
        if (t.req.status == 200) {
          ctype=t.req.getResponseHeader("Content-Type").split(";")[0];
          if (ctype=='text/javascript') {
            eval(t.req.responseText);
            eval(oload);
          } else {
            alert("! Unknown content type!");
          }
        } else {
            alert("There was a problem retrieving data:\n" + t.req.statusText);
        }
      }
  }
  this.sendRequest();
}

function createE(type,id,src,par){
  var ce=document.createElement(type);
  ce.id=id;
  ce.src=src;
  par.appendChild(ce);
  return ce;
}

function hideSelects(t){
  var sels=document.getElementsByTagName('select');
  for (var i=0; i<sels.length; i++){
    if (t==true) sels[i].style.visibility='hidden';
    else sels[i].style.visibility='visible';
  }
}

function slideShow(){
  for (var i=0; i<s_pics.length; i++){
    if (s_pics[i]!=undefined) {
      if (s_num==0) s_first=i;
      s_num++;
    }
  }
  hideSelects(true);
  //document.body.style.overflow='hidden';
  s_bgr=createE('div','s_bgr','',document.body);
  s_container=createE('div','s_container','',document.body);
  var il=createE('div','image_layer','',s_container);
  s_pic=createE('img','s_image',s_galdir+"/"+s_pics[s_id][0],il);
  s_pic.style.opacity = 0;
  s_pic.style.filter = "alpha(opacity=0)";
  s_sn=createE('img','s_next',s_icodir+'/next.png',il);
  s_sn.onclick=sNext;
  s_sp=createE('img','s_prev',s_icodir+'/prev.png',il);
  s_sp.onclick=sPrev;
  l_layer=createE('div','loading_layer','',s_container);
  var sl=createE('img','s_loading',s_icodir+'/load.gif',l_layer);
  c_layer=createE('div','comment_layer','',s_container);
  p_layer=createE('div','piclist_layer','',s_container);
  p_list=createE('div','s_list','',p_layer);
  //p_list.style.width=100+'px';
  s_psum=0;
  for (var i=0; i<s_pics.length; i++){
    if (s_pics[i]!=undefined){
      var simg=createE('img','s_pic_'+i,s_thumbdir+"/"+s_pics[i][1],p_list);
      var pw=Math.round(s_thumbh/s_pics[i][3]*s_pics[i][2]);
      simg.style.width=pw+'px';
      simg.style.height=s_thumbh+'px';
      s_psum+=pw+6;
      simg.onclick=new Function("sLoad('"+i+"');");
      simg.onmouseover=sScroll;
      simg.onmouseout=function(){clearTimeout(s_scint)};
    }
  }
  //window.status=s_psum;
  p_list.style.width=s_psum+'px';
  //alert(s_pics[s_id][2]);
  //p_layer.style.width=s_pics[s_id][2]+'px';
  p_layer.style.height=s_thumbh+10+'px';
  c_layer.style.height=22+'px';
  s_pic.onload=function(){
    l_layer.style.zIndex=-1;
    s_show();
  }
  /*s_pic.onmouseover=function(){
    setOpacity(p_layer,0);
    setOpacity(c_layer,0);
    setOpacity(s_sn,0);
    setOpacity(s_sp,0);
  }
  s_pic.onmouseout=function(){
    setOpacity(p_layer,100);
    setOpacity(c_layer,100);
    setOpacity(s_sn,100);
    setOpacity(s_sp,100);
  }*/
  //setCords();
  setUnits();
  //infoLine();
  l_layer.style.zIndex=-1;
  s_timer=setInterval(sInterval, 20);
}

function sMove(mx){
  list_l=parseInt(p_list.offsetLeft);
  pic_l=parseInt(s_obj.offsetLeft)+list_l;
  if (pic_l<Math.round(s_pics[s_id][2]/2)-2){
    if (list_l<4) {
      p_list.style.left=list_l+2+'px';
      if (list_l+2>4) list_l=4;
      s_scint=setTimeout(sMove,10);
    }
  }
  else if (pic_l>Math.round(s_pics[s_id][2]/2)+2){    
    if (list_l>s_pics[s_id][2]-s_psum) {
      p_list.style.left=list_l-2+'px';
      s_scint=setTimeout(sMove,10);
    }
  }
}

function exitSlide(){
  document.body.style.overflow='visible';
  s_hide();
  hideSelects(false);
  document.body.removeChild(s_bgr);
  document.body.removeChild(s_container);
  clearTimeout(s_scint);
  clearInterval(s_timer);
  s_psum=0;
  s_pics=[];
  s_num=0;
  s_op=0;
}

function sScroll(e){
  if (e==undefined) e=event;
  var mx=parseInt(e.clientX)-s_offsetleft;
  s_obj=this;
  //alert(s_obj.offsetLeft);
  sMove(mx);
}

function setOpacity(obj,op){
  obj.style.opacity = op/100;
  obj.style.filter = "alpha(opacity="+op+")";
}

function sInterval(){
  s_op+=s_unit;
  if (s_op>100) {
    s_op=100;
    setOpacity(s_pic,s_op);
    setCords();
    clearInterval(s_timer);
  }
  else if (s_op<0) {
    s_op=0;
    if (l_layer.style.zIndex!=2){
      l_layer.style.zIndex=2;
      s_pic.src=s_galdir+"/"+s_pics[s_id][0];
    }
  }
  else if (s_op >= 0 && s_op <= 100){
    setOpacity(s_pic,s_op);
    calcSizes();
  } 
}

function infoLine(){
  var n=0;
  for (var i=0; i<s_pics.length; i++){
    if (s_pics[i]!=undefined) n++;
    if (i==s_id) break;
  } 
  c_layer.innerHTML="<span>"+s_pics[i][4]+"</span><img onclick='exitSlide();' src='"+s_icodir+"/exit.png' title='Exit' /><b>"+n+"/"+s_num+"</b>";
}

function s_show(){
  s_unit=Math.abs(s_unit);
  infoLine();
}

function s_hide(){
  s_unit=-Math.abs(s_unit);
  setUnits();
}

function setUnits(){
  s_wu=(s_pics[s_id][2]-s_pics[s_lastid][2])/Math.abs(200/s_unit);
  s_hu=(s_pics[s_id][3]-s_pics[s_lastid][3])/Math.abs(200/s_unit);
  s_cw=s_pics[s_lastid][2];
  s_ch=s_pics[s_lastid][3];
}

function calcSizes(){
  s_cw+=s_wu;
  s_ch+=s_hu;
  s_pic.style.width=c_layer.style.width=p_layer.style.width=l_layer.style.width=Math.round(s_cw)+'px';
  s_pic.style.height=l_layer.style.height=Math.round(s_ch)+'px';
  s_container.style.marginLeft=-Math.round(s_cw/2)+'px';
  s_container.style.marginTop=-Math.round(s_ch/2)+'px';
}

function setCords(){
  s_container.style.marginLeft=-Math.round(s_pics[s_id][2]/2)+'px';
  s_container.style.marginTop=-Math.round(s_pics[s_id][3]/2)+'px';
  l_layer.style.width=s_pic.style.width=p_layer.style.width=c_layer.style.width=s_pics[s_id][2]+'px';
  l_layer.style.height=s_pic.style.height=s_pics[s_id][3]+'px';
  s_offsetleft=s_container.offsetLeft;
}

function sLoad(n){
  s_timer=setInterval(sInterval, 17);
  s_lastid=s_id;
  s_id=n*1;
  if (n==s_pics.length-1) s_sn.style.display='none'; else s_sn.style.display='block';
  if (n==s_first) s_sp.style.display='none'; else s_sp.style.display='block';
  s_hide();
}

function sPrev(){
  for (var i=s_id-1; i>0; i--){
    if (s_pics[i]!=undefined){
      sLoad(i);
      return true;
    }
  }
}

function sNext(){
  for (i=s_id+1; i<s_pics.length; i++){
    if (s_pics[i]!=undefined){
      sLoad(i);
      return true;
    }
  }
}

function initSlide(num){
  s_id=num;
  s_lastid=num;
  new ajaxRequest(s_url,'pic='+num,'slideShow();');
}
