
var animations=new Object();
var timeout=null;
var fps=25;
var id=0;
var imgId=0;
var actualImg=null;

var box=function(link) {
 if(!link || !link.parentNode)
  return;

 link.blur();

 var box=link.parentNode;
 var icon=link.getElementsByTagName("span")[0];
 var img=link.getElementsByTagName("img")[0];
 var content=box.getElementsByTagName("div")[0];

 if(!link.animId)
  link.animId=id++;

 if(!animations[link.animId])
  animations[link.animId]=new Object;

/* CONTENT[ */
 if(!link.contentHeight) {
  content.style.height="auto";
  link.contentHeight=content.offsetHeight-2;
  content.style.height="100px";
 }

 animations[link.animId]["contentHeight"]=new Object();
 animations[link.animId]["contentHeight"]["from"]=content.offsetHeight-2;
 animations[link.animId]["contentHeight"]["func"]=function(val,content){content.style.height=val+"px";};
 animations[link.animId]["contentHeight"]["arg1"]=content;
 animations[link.animId]["contentHeight"]["step"]=10;
/* ]CONTENT */

/* IMG[ */
 if(link.imgOpacity==null)
  link.imgOpacity=100;

 animations[link.animId]["imgOpacity"]=new Object();
 animations[link.animId]["imgOpacity"]["from"]=link.imgOpacity;
 animations[link.animId]["imgOpacity"]["func"]=function(val,img,link,content) {
  content.style.zIndex=0;
  setOpacity(img,val);
  link.imgOpacity=val;
  if(val==0)
   content.style.zIndex=80;
 };
 animations[link.animId]["imgOpacity"]["arg1"]=img;
 animations[link.animId]["imgOpacity"]["arg2"]=link;
 animations[link.animId]["imgOpacity"]["arg3"]=content;
 animations[link.animId]["imgOpacity"]["step"]=5;
/* ]IMG */

 if(link.opened) {
  link.opened=false;
  animations[link.animId]["contentHeight"]["to"]=100;
  animations[link.animId]["imgOpacity"]["to"]=100;
  icon.style.backgroundImage="url(icon/arrow_off.gif)";
 }
 else {
  link.opened=true;
  animations[link.animId]["contentHeight"]["to"]=link.contentHeight;
  animations[link.animId]["imgOpacity"]["to"]=0;
  icon.style.backgroundImage="url(icon/arrow_on.gif)";
 }
 startAnimations();

 return false;
}

var startAnimations=function() {
 if(!timeout)
  timeout=window.setTimeout(animate,1000/fps);
}

var animate=function() {
 timeout=null;
 var runAgain=false;

 for(var i in animations) {
  if(typeof animations[i]!="object")
   continue;
  for(var j in animations[i]) {
   if(animations[i][j]==null)
    continue;

   if(animations[i][j]["min"]==null)
    animations[i][j]["min"]=(animations[i][j]["from"]>animations[i][j]["to"]);

   var step=animations[i][j]["step"]*50/fps;

   if(animations[i][j]["min"])
    animations[i][j]["from"]-=step;
   else
    animations[i][j]["from"]+=step;
 
   if((animations[i][j]["min"] && animations[i][j]["from"]<animations[i][j]["to"]) || (!animations[i][j]["min"] && animations[i][j]["from"]>animations[i][j]["to"]))
    animations[i][j]["from"]=animations[i][j]["to"];
 
   animations[i][j]["func"](Math.round(animations[i][j]["from"]),animations[i][j]["arg1"],animations[i][j]["arg2"],animations[i][j]["arg3"]);
 
   if(animations[i][j]["from"]==animations[i][j]["to"]) {
    animations[i][j]=null;
    continue;
   }
 
   runAgain=true;
  }
 }
 if(runAgain)
  timeout=window.setTimeout(animate,1000/fps);
}

var showImg=function(link) {
 link.blur();

 var bg=document.getElementById("bg");
 var black=bg.getElementsByTagName("div")[0];

 imgDummy(bg);

 var scrollTop=0;
 if(self.pageYOffset)
  scrollTop=self.pageYOffset;
 else if(document.documentElement && document.documentElement.scrollTop)
  scrollTop=document.documentElement.scrollTop;
 else if(document.body)
  scrollTop=document.body.scrollTop;

 if(black.opac==null) {
  setOpacity(black,0);
  black.opac=0;
 }

 if(!animations["bg"])
  animations["bg"]=new Object();

 if(bg.style.display=="block") {
  animations["bg"]["top"]=new Object();
  animations["bg"]["top"]["from"]=parseInt(bg.offsetTop);
  animations["bg"]["top"]["to"]=scrollTop+50;
  animations["bg"]["top"]["func"]=function(val,bg){bg.style.top=val+"px";};
  animations["bg"]["top"]["arg1"]=bg;
  animations["bg"]["top"]["step"]=25;

  animations["bg"]["height"]=new Object();
  animations["bg"]["height"]["from"]=parseInt(bg.offsetHeight);
  animations["bg"]["height"]["to"]=250;
  animations["bg"]["height"]["func"]=function(val,bg){bg.style.height=val+"px";};
  animations["bg"]["height"]["arg1"]=bg;
  animations["bg"]["height"]["step"]=25;
 }
 else {
  animations["bg"]["top"]=null;
  animations["bg"]["height"]=null;
  bg.style.top=(scrollTop+50)+"px";
  bg.style.height="250px";
 }

 animations["bg"]["opac"]=new Object();
 animations["bg"]["opac"]["from"]=black.opac;
 animations["bg"]["opac"]["to"]=75;
 animations["bg"]["opac"]["func"]=function(val,black){black.opac=val;setOpacity(black,val);};
 animations["bg"]["opac"]["arg1"]=black;
 animations["bg"]["opac"]["step"]=5;

 black.style.background="black url(icon/loader.gif) center center no-repeat";
 bg.style.display="block";

 startAnimations();

 var url=link.href;
 var i=new Image();
 i.onload=function() {
  if(this.imgId!=actualImg)
   return;

  var bg=document.getElementById("bg");
  var img=bg.getElementsByTagName("img")[0];
  var black=bg.getElementsByTagName("div")[0];

  black.style.background="black";

  if(!animations["img"])
   animations["img"]=new Object();

  setOpacity(img,0);
  animations["img"]["opac"]=new Object();
  animations["img"]["opac"]["from"]=0;
  animations["img"]["opac"]["to"]=100;
  animations["img"]["opac"]["func"]=function(val,img){setOpacity(img,val);};
  animations["img"]["opac"]["arg1"]=img;
  animations["img"]["opac"]["step"]=2;

  img.src=this.src;
  img.width=this.width;
  img.height=this.height;
  img.style.marginLeft=(-this.width/2)+"px";

  if(!animations["bg"])
   animations["bg"]=new Object();

  animations["bg"]["height"]=new Object();
  animations["bg"]["height"]["from"]=parseInt(bg.offsetHeight);
  animations["bg"]["height"]["to"]=this.height+100;
  animations["bg"]["height"]["func"]=function(val,bg){bg.style.height=val+"px";};
  animations["bg"]["height"]["arg1"]=bg;
  animations["bg"]["height"]["step"]=25;

  startAnimations();
 }
 i.src=url;
 i.imgId=imgId++;

 actualImg=i.imgId;

 return false;
}

function hideImg(link) {
 actualImg=null;
 var bg=document.getElementById("bg");
 var black=bg.getElementsByTagName("div")[0];

 imgDummy(bg);

 if(!animations["bg"])
  animations["bg"]=new Object();

 animations["bg"]["opac"]=new Object();
 animations["bg"]["opac"]["from"]=black.opac;
 animations["bg"]["opac"]["to"]=0;
 animations["bg"]["opac"]["func"]=function(val,black,bg){black.opac=val;setOpacity(black,val);if(val==0)bg.style.display="none";};
 animations["bg"]["opac"]["arg1"]=black;
 animations["bg"]["opac"]["arg2"]=bg;
 animations["bg"]["opac"]["step"]=10;
 startAnimations();
}

function imgDummy(bg) {
 var img=bg.getElementsByTagName("img")[0];

 img.src="img/dummy.gif";
 img.width=1;
 img.height=1;
 img.style.marginLeft="0px";
}

function setOpacity(ele,val) {
 ele.style.opacity=val/100;
 ele.style.MozOpacity=val/100;
 ele.style.KhtmlOpacity=val/100;
 ele.style.filter="alpha(opacity="+val+")";
}