/**
 * created by: Pavel Spacil, licence: LGPL, v. 0.9.17
 * modified by: 
 */ 
function Gallery(_wr,_g){this.wr=null;if(_wr!=undefined)
this.wr=(_wr=='*')?document.body:SJEL.$(_wr);if((this.wr!=null)&&(_g==undefined))
return;this.gn=_g;if(this.wr!=null)
this.as=SJEL.$A(this.wr,'rel',this.gn,'a');this.imgs=new Array();this.ai=-1;if(this.wr==null)
this.ai=0;this.imi=0;this.thw=0;this.thww=0;this.thm=0;this.opened=false;this.pbi=null;this.m2=new SJEL.Morph("easyboth");this.slsOn=false;this.ti=new SJEL.Timer(OnTimer);var ref=this;this.lImgs=0;this.imLoaded=false;this.gaCreated=false;this.previous="prev";this.next="next";this.image="image";this.slideshow="slideshow";this.helpInfo="";this.loading="loading ...";this.bgOpacity=0.7;this.thumbOpacity=0.5;this.slWait=2700;this.Create=function(){window.scroll(0,0);if(this.opened){document.body.appendChild(this.g_bg);document.body.appendChild(this.g_nav);this.g_navi.appendChild(this.g_img);this.LoadImage(this.ai);this.thm=0;SJEL.SStyle(this.g_thi,{marginLeft:"0px"});SJEL.AddEvent(document,"keyup",this.OnKeyUp);return;}
this.opened=true;this.g_bg=SJEL.CE("div");SJEL.AddClass(this.g_bg,"g_bg");SJEL.SStyle(this.g_bg,{opacity:this.bgOpacity});this.g_nav=SJEL.CE("div");SJEL.AddClass(this.g_nav,"g_navigator");this.g_navi=SJEL.CE("div");SJEL.AddClass(this.g_navi,"g_navigator_in");this.g_al=SJEL.CE("a");SJEL.AddClass(this.g_al,"g_arrow_left");this.g_th=SJEL.CE("div");SJEL.AddClass(this.g_th,"g_thumbs");this.g_thi=SJEL.CE("div");SJEL.AddClass(this.g_thi,"g_thumbs_in");this.g_ar=SJEL.CE("a");SJEL.AddClass(this.g_ar,"g_arrow_right");this.g_inf=SJEL.CE("div");SJEL.AddClass(this.g_inf,"g_info");this.g_buts=SJEL.CE("div");SJEL.AddClass(this.g_buts,"g_buts");this.g_pr=SJEL.CE("a");SJEL.AddClass(this.g_pr,"g_but_prev");this.g_pr.href="#";this.g_pr.innerHTML=this.previous;this.g_ne=SJEL.CE("a");SJEL.AddClass(this.g_ne,"g_but_next");this.g_ne.href="#";this.g_ne.innerHTML=this.next;this.g_pager=SJEL.CE("span");this.g_sl=SJEL.CE("a");SJEL.AddClass(this.g_sl,"g_but_slideshow");this.g_sl.href="#";this.g_sl.innerHTML=this.slideshow;this.g_cr=SJEL.CE("div");SJEL.AddClass(this.g_cr,"g_cross");this.g_hein=SJEL.CE("div");SJEL.AddClass(this.g_hein,"g_help_info");this.g_hein.innerHTML=this.helpInfo;this.g_lo=SJEL.CE("div");SJEL.AddClass(this.g_lo,"g_loading");this.g_lo.innerHTML=this.loading;this.g_img=SJEL.CE("div");SJEL.AddClass(this.g_img,"g_img");SJEL.AddEvent(this.g_bg,"click",function(){ref.Close();});SJEL.AddEvent(this.g_cr,"click",function(){ref.Close();});SJEL.AddEvent(this.g_img,"click",function(){ref.Close();});this.OnPrevClick=function(){ref.SetActive(ref.ai-1);ref.SlideshowOff();}
this.OnNextClick=function(){ref.SetActive(ref.ai+1);ref.SlideshowOff();}
SJEL.AddEvent(this.g_pr,"click",this.OnPrevClick);SJEL.AddEvent(this.g_ne,"click",this.OnNextClick);this.OnSlideshowClick=function(){if(ref.slsOn)
ref.SlideshowOff();else
ref.SlideshowOn();}
SJEL.AddEvent(this.g_sl,"click",this.OnSlideshowClick);for(var i=0;i<this.imgs.length;i++)
this.imgs[i].CreateThumb();this.OnThumbLeftClick=function(){ref.SlideThumbs("left");ref.SlideshowOff();}
this.OnThumbRightClick=function(){ref.SlideThumbs("right");ref.SlideshowOff();}
SJEL.AddEvent(this.g_al,"click",this.OnThumbLeftClick);SJEL.AddEvent(this.g_ar,"click",this.OnThumbRightClick);this.g_th.appendChild(this.g_thi);this.g_buts.appendChild(this.g_pr);this.g_buts.appendChild(this.g_ne);this.g_buts.appendChild(this.g_pager);this.g_buts.appendChild(this.g_sl);this.g_navi.appendChild(this.g_al);this.g_navi.appendChild(this.g_th);this.g_navi.appendChild(this.g_ar);this.g_navi.appendChild(this.g_inf);this.g_navi.appendChild(this.g_buts);this.g_navi.appendChild(this.g_cr);this.g_navi.appendChild(this.g_hein);this.g_navi.appendChild(this.g_lo);this.g_navi.appendChild(this.g_img);this.g_nav.appendChild(this.g_navi);document.body.appendChild(this.g_bg);document.body.appendChild(this.g_nav);this.thww=parseInt(SJEL.GStyle(this.g_th,"width"));this.thm=0;SJEL.SStyle(this.g_thi,{marginLeft:"0px"});this.LoadImage(this.ai);this.SetPager();SJEL.AddEvent(document,"keyup",this.OnKeyUp);this.gaCreated=true;if(this.imLoaded)
this.CalculateThumbsWidths();}
this.Close=function(){document.body.removeChild(this.g_bg);document.body.removeChild(this.g_nav);this.g_navi.removeChild(this.g_img);SJEL.RemoveEvent(document,"keyup",this.OnKeyUp);this.SlideshowOff();}
this.ThumbOn=function(_i){var im=this.imgs[_i];this.g_inf.innerHTML=im.t;SJEL.SStyle(im.th,{opacity:1.0});SJEL.AddClass(im.th,"g_thumb_active");this.SetPager();}
this.OnKeyUp=function(_e){if(!_e)
_e=event;switch(_e.keyCode){case 27:ref.Close();break;case 100:ref.OnPrevClick();break;case 102:ref.OnNextClick();break;case 104:ref.OnThumbRightClick();break;case 101:ref.OnThumbLeftClick();break;case 96:ref.OnSlideshowClick();break;case 103:ref.SetActive(0);break;case 105:ref.SetActive(ref.imgs.length-1);break;}}
this.ThumbOff=function(_i){this.g_inf.innerHTML=this.imgs[this.ai].t;SJEL.SStyle(this.imgs[_i].th,{opacity:this.thumbOpacity});SJEL.RemoveClass(this.imgs[_i].th,"g_thumb_active");}
this.CalculateThumbsWidths=function(){if(this.thw==0){var thmbs=SJEL.$T(this.g_thi,"a");var h=0;this.thw=0;for(var i=0;i<thmbs.length;i++){h=thmbs[i].offsetWidth;this.imgs[i].w=h;this.imgs[i].slt=this.thw+(h/2);this.thw+=h;}
this.SetActive(this.ai);}}
this.SlideThumbs=function(_d,_c){if(this.thww>this.thw)
return;var c=_c||-1;var d=(_d=="left")?1:-1;var h=0;if(c==-1)
h=this.thm+d*this.thww;else
h=c;if(h>=this.thww)
h=-(this.thw-this.thww);else if((h>0)&&(h<this.thww))
h=0;else if(h==-this.thw)
h=0;else if(h<-(this.thw-this.thww))
h=-(this.thw-this.thww);this.thm=h;this.m2.Init(this.g_thi,{marginLeft:this.thm+"px"},600);this.m2.Morph();}
this.SetActive=function(_i,_js){if(_js!=undefined){this.ai=_i;return;}
if(this.ai!=-1)
this.ThumbOff(this.ai);var o=this.ai;var l=this.imgs.length;if(_i>=l)
this.ai=0;else if(_i<0)
this.ai=l-1;else
this.ai=_i;if(this.imgs[this.ai].slt!=0)
this.SlideThumbs((o<this.ai)?"left":"right",-this.imgs[this.ai].slt+(this.thww/2));this.ThumbOn(this.ai);this.LoadImage(this.ai);}
this.SetPager=function(){this.g_pager.innerHTML=this.image+" <strong>"+(this.ai+1)+"</strong>"+" / "+this.imgs.length;}
this.SlideshowOn=function(){this.slsOn=true;SJEL.AddClass(this.g_sl,"g_buts_active");this.ti.SetSpeed(this.slWait);this.ti.Start(true);}
this.SlideshowOff=function(){if(this.slsOn){this.slsOn=false;SJEL.RemoveClass(this.g_sl,"g_buts_active");this.ti.Stop();}}
function OnTimer(_r){ref.SetActive(ref.ai+1);}
function GImg(_r,_bi,_si,_t,_id,_a){var re=this;this.bi=_bi;this.si=_si;this.t=_t;this.id=_id;this.a=_a||null;this.w=0;this.th=null;this.slt=0;this.bImg=SJEL.CE("img");this.bImg.loaded=false;this.bImg.r=this;SJEL.AddEvent(this.bImg,"load",function(_e){re.bImg.loaded=true;ref.ShowImage(re.bImg);});if(this.a!=null){this.a.href="#";SJEL.AddEvent(this.a,"click",function(_e){if(!ref.gaCreated)
ref.SetActive(re.id,true);else
ref.SetActive(re.id);ref.Create();return false;});}
this.LoadImg=function(){if(!this.bImg.loaded){this.bImg.src=this.bi;return false;}else
return true;}
this.CreateThumb=function(){this.th=SJEL.CE("a");SJEL.SStyle(this.th,{opacity:ref.thumbOpacity});SJEL.AddEvent(this.th,"mouseover",function(){ref.ThumbOn(re.id);});SJEL.AddEvent(this.th,"mouseout",function(){if(re.id!=ref.ai)
ref.ThumbOff(re.id);});SJEL.AddEvent(this.th,"click",function(){ref.SlideshowOff();ref.SetActive(re.id);return false;});this.th.href="#";var im=SJEL.CE("img");im.r=this;this.th.appendChild(im);SJEL.AddEvent(im,"load",function(){ref.lImgs++;if(ref.lImgs==ref.imgs.length)
ref.imLoaded=true;if(ref.gaCreated&&ref.imLoaded)
ref.CalculateThumbsWidths();});im.src=this.si;ref.g_thi.appendChild(this.th);}}
this.LoadImage=function(_id){if(_id==undefined)
return;var im=this.imgs[_id];this.g_lo.innerHTML=this.loading;if(im.LoadImg())
this.ShowImage(im.bImg);}
this.ShowImage=function(_im){this.g_lo.innerHTML="";if(this.pbi!=null)
this.g_img.removeChild(this.pbi);this.g_img.appendChild(_im);this.pbi=_im;}
this.AddImage=function(_bi,_si,_t,_a){this.imgs.push(new GImg(this,_bi,_si,_t,this.imi++,_a));}
if(this.wr!=null){var ti="",hr="",im=null;for(var i=0;i<this.as.length;i++){im=SJEL.$T(this.as[i],"img");if(im.length!=0){im=im[0];ti=(im.alt)?im.alt:((this.as[i].title)?this.as[i].title:"");this.AddImage(this.as[i].href,im.src,ti,this.as[i]);}}}}