
WL.Controls.SlideImage=WL.Class(WL.Controls.Control,function()
{WL.Controls.SlideImage.base.constructor.call(this);this.images=[];this.currentImage=null;},function(type)
{type.getFullImageContainer=function(){return WL.Utils.$(this.fc_id);}
type.ongenerate=function()
{var c=WL.Utils.$(this.c_id);var cs=WL.currentStyle(c);if(WL.browser.safari)
{this.autoWidth=parseInt(cs.width).NaN0()==0&&c.style.width=="";this.autoHeight=parseInt(cs.height).NaN0()==0&&c.style.height=="";}
else
{this.autoWidth=cs.width=="auto"||parseInt(cs.width).NaN0()==0;this.autoHeight=cs.height=="auto"||parseInt(cs.height).NaN0()==0;}
this.height=parseInt(cs.height).NaN0()||c.offsetHeight;if(this.autoWidth)c.style.width="99%";else{this.width=parseInt(cs.width)||c.offsetWidth;}
c.style.height="";WL.Utils.clear_container(c);WL.Utils.addCss(c,"slideimage");var fullimg=WL.Utils.$e("DIV");this.fc_id=WL.uniqueID(fullimg);fullimg.className="slideimage-fullimage-container";c.appendChild(fullimg);var waiter=WL.Utils.$e("DIV");this.w_id=WL.uniqueID(waiter);waiter.className="slideimage-waiter";fullimg.appendChild(waiter);}
type.setSize=function(width,height)
{var c=WL.Utils.$(this.c_id);this.autoWidth=!width;this.autoHeight=!height;c.style.width=this.autoWidth?"":(width+"px");this.width=width;this.height=height;}
type.calculateSize=function()
{if(this.autoWidth)
this.width=WL.Utils.$(this.c_id).offsetWidth;if(this.autoHeight)
{this.height=0;for(var i=0;i<this.images.length;++i)
this.height=Math.max(this.height,Math.min(this.images[i].height,this.width*this.images[i].height/this.images[i].width));this.height=Math.floor(Math.min(this.height,window.screen.availHeight*0.6));}
var fc=WL.Utils.$(this.fc_id);fc.style.width=(this.width+2)+"px";fc.style.height=(this.height+2)+"px";this.thumbnailWidth=Math.min(100,Math.floor(this.width/4));this.thumbnailHeight=this.thumbnailWidth;}
type.getImagesList=function(){return this.images;}
type.setImagesList=function(imagesList)
{this.images=imagesList;var c=WL.Utils.$(this.c_id);while(c.childNodes.length>1)c.removeChild(c.lastChild);this.calculateSize();if(this.images.length>1)
{var table=WL.Utils.$e("TABLE");table.className="slideimage-thumbnails-table";table.cellSpacing="0px";table.cellPadding="0px";table.style.width=this.width+"px";var tbody=WL.Utils.$e("TBODY");var tr=WL.Utils.$e("TR");var thumbs=WL.Utils.$e("DIV");thumbs.className="slideimage-thumbnails-container";thumbs.style.overflow="hidden";thumbs.style.whiteSpace="nowrap";var tsl=WL.Utils.$e("TD");tsl.className="slideimage-thumbnails-l";tr.appendChild(tsl);var tleft=WL.Utils.$e("TD");tleft.className="slideimage-thumbnails-left";tleft.style.display="none";tleft.appendChild(WL.Utils.$e("DIV"));tleft.firstChild.onmousedown=startThumbScroll.bindWA(this,WL.uniqueID(thumbs),-10);tr.appendChild(tleft);var td=WL.Utils.$e("TD");td.className="slideimage-thumbnails-center";for(var i=0;i<this.images.length;++i)
{var image=this.images[i];var img=WL.Utils.$e("IMG");img.src=String.format("image.ashx?image={0}&size=Thumbnail",image.id);if(image.alt)img.title=img.alt=image.alt;img.onclick=thumbnail_click.bindWA(this,image.id);var size=WLImage.getImageDisplayMinimizeSize(image.width,image.height,this.thumbnailWidth,this.thumbnailHeight);img.width=size.width;img.height=size.height;thumbs.appendChild(img);}
td.appendChild(thumbs);tr.appendChild(td);var tright=WL.Utils.$e("TD");tright.className="slideimage-thumbnails-right";tright.style.display="none";tright.appendChild(WL.Utils.$e("DIV"));tright.firstChild.onmousedown=startThumbScroll.bindWA(this,WL.uniqueID(thumbs),+10);tr.appendChild(tright);var tsr=WL.Utils.$e("TD");tsr.className="slideimage-thumbnails-r";tr.appendChild(tsr);tbody.appendChild(tr);table.appendChild(tbody);c.appendChild(table);if(thumbs.offsetWidth<thumbs.scrollWidth)
{tleft.style.display="";tright.style.display="";}}
this.showImageByIndex(0);}
var startThumbScroll=function(thumbs_id,dx,e)
{stopItemsScroll.call(this);this.__thumb_dx=dx;this.__thumb_cookie=window.setInterval(processThumbScroll.bindWA(this,thumbs_id),50);this.__stopThumbScroll=stopItemsScroll.bind(this);WL.attachListener(document,"mouseup",this.__stopThumbScroll);}
var processThumbScroll=function(thumbs_id){WL.Utils.$(thumbs_id).scrollLeft+=this.__thumb_dx;this.__thumb_dx*=1.1;}
var stopItemsScroll=function()
{if(this.__thumb_cookie)
{window.clearInterval(this.__thumb_cookie);this.__thumb_cookie=0;}
if(this.__stopThumbScroll!=null)
{WL.detachListener(document,"mouseup",this.__stopThumbScroll);this.__stopThumbScroll=null;}}
type.showImage=function(image)
{var pool=WL.queryElementsPool();var fc=WL.Utils.$(this.fc_id);while(fc.childNodes.length>1)pool.put(fc.lastChild);this.currentImage=image;if(image==null){update_waiting_status.call(this);return;}
image.img_full_id="__slideImage_image_"+image.id;var img=WL.Utils.$(image.img_full_id);if(img==null)
{img=WL.Utils.$e("IMG");img.wlstate="load";img.id=image.img_full_id;pool.put(img);if(image.alt)
img.alt=img.title=image.alt;update_waiting_status.call(this);img.onload=full_readystatechange.bindWA(this,img.id,"complete");img.onerror=full_readystatechange.bindWA(this,img.id,"error");img.onabort=full_readystatechange.bindWA(this,img.id,"abort");img.src=String.format("image.ashx?image={0}&size=Normal",image.id);}
var size=WLImage.getImageDisplayMinimizeSize(image.width,image.height,this.width,this.height);if(img.wlstate=="complete")
{img.width=size.width;img.height=size.height;fc.appendChild(img);}
update_waiting_status.call(this);}
var updateImage=function(){this.showImage(this.currentImage);}
type.showImageByIndex=function(index){this.showImage(this.images[index]);}
type.showImageByID=function(id){this.showImage(this.images.find(finder_by_id.bind(id)));}
var finder_by_id=function(it){return this==it.id;}
var thumbnail_click=function(imageID)
{this.showImageByID(imageID);}
var full_readystatechange=function(img_id,state)
{var img=WL.Utils.$(img_id);if(img)
{img.wlstate=state;if(state=="complete"&&this.currentImage&&this.currentImage.img_full_id==img_id)
{this.showImage(this.currentImage);return;}}
update_waiting_status.call(this);}
var update_waiting_status=function()
{var waiting=this.currentImage!=null&&this.currentImage.img_full_id!=null;var img=null;if(waiting)
{img=WL.Utils.$(this.currentImage.img_full_id);waiting=img!=null&&img.wlstate=="load";}
var w=WL.Utils.$(this.w_id);if(waiting)
{var size=WLImage.getImageDisplayMinimizeSize(this.currentImage.width,this.currentImage.height,this.width,this.height);w.style.display="block";w.style.left=img.offsetLeft+(this.width-w.offsetWidth)/2+"px";w.style.top=img.offsetTop+(size.height-w.offsetHeight)/2+"px";}
else w.style.display="none";}
type.ondisabled=function(state)
{}
type.onunload=function()
{this.unloadHTMLImages();}
type.unloadHTMLImages=function()
{if(this.images.length>0)
{for(var i=0;i<this.images.length;++i)
if(this.images[i].img_full_id!=null)
{var element=WL.Utils.$(this.images[i].img_full_id);if(element&&element.parentNode)
element.parentNode.removeChild(element);this.images[i].img_full_id=null;}}}});
