﻿
AntaWebBanner.prototype.HandlePartResize=function AntaWebBanner_HandlePartResize(height)
{
var win=this.WebPart.WebForm.Window;
if(this.RenderStyle!=7&&this.WebPart.ScrollNode!=null)
{
this.WebPart.ContentNode.style.height=this.WebPart.ScrollNode.style.height;
}
switch(this.RenderStyle)
{
case 3:
this.ShowHorizontalVisibleItems(win,this.WebPart.ContentNode.offsetWidth,this.ContainerNode,this.Items,true);
break;
case 5:
this.ShowHorizontalVisibleItems(win,this.WebPart.ContentNode.offsetWidth,this.ContainerNode,this.Items,false);
break;
case 1:
case 4:
case 6:
this.ShowVerticalVisibleItems(
win,
this.WebPart.GetHeight(),
this.WebPart.ContentNode.offsetWidth,
this.Items.length>0?win.FindOffsetY(this.Items[0].ItemNode,this.WebPart.ContentNode):0,
this.Items);
if(this.RenderStyle==6)
{
this.SetImageTextWidth(win,this.Items);
}
break;
case 2:
var choiceList=AntaCustomSelects[this.ChoiceListId];
if(choiceList!=null)
{
choiceList.HandleResize(this.WebPart.ContentNode.offsetWidth);
}
break;
case 7:
if(this.BannerCarousel!=null)
{
this.BannerCarousel.HandleResize(this.WebPart.ContentNode.offsetWidth,this.WebPart.GetHeight());
}
break;
case 8:
break;
case 9:
this.ShowImageTiles(win,this.WebPart.GetHeight(),this.Items);
break;
}
};
AntaWebBanner.prototype.InitItems=function AntaWebBanner_InitItems()
{
var win=this.WebPart.WebForm.Window;
var itemList=this.BannerProperties.Items;
if(itemList!=null)
{
for(var i=0;i<itemList.length;i++)
{
var itemNode=$(itemList[i].ItemId,win.WindowNode);
var anchorNode=$(itemList[i].AnchorId,win.WindowNode);
var imageNode=null;
var textNode=null;
if(this.RenderStyle==5||this.RenderStyle==6||this.RenderStyle==7||this.RenderStyle==9)
{
imageNode=$(itemList[i].ImageId,win.WindowNode);
if(this.RenderStyle!=7&&this.BannerProperties.ShowImageText)
{
textNode=$(itemList[i].TextId,win.WindowNode);
}
}
this.Items.push({ItemNode:itemNode,AnchorNode:anchorNode,ImageNode:imageNode,TextNode:textNode});
}
}
};
AntaWebBanner.prototype.SetImageTextWidth=function AntaWebBanner_SetImageTextWidth(win,items)
{
if(items.length==0||!this.BannerProperties.ShowImageText)
{
return;
}
for(var i=0;i<items.length;i++)
{
var itemWidth=items[i].ItemNode.offsetWidth+win.GetHorizontalMarginPaddingBorder(items[i].ItemNode);
var imageWidth=0;
if(items[i].ImageNode!=null)
{
imageWidth=items[i].ImageNode.offsetWidth+win.GetHorizontalMarginPaddingBorder(items[i].ImageNode);
}
var textWidth=itemWidth-imageWidth-win.GetHorizontalMarginPaddingBorder(items[i].TextNode);
items[i].TextNode.style.width=ToPixels(textWidth);
}
};
AntaWebBanner.prototype.ShowImageTiles=function AntaWebBanner_ShowImageTiles(win,partHeight,items)
{
if(items.length==0)
{
return;
}
if(this.BannerProperties.ShowImageText&&this.BannerProperties.WordWrap)
{
for(var i=0;i<items.length;i++)
{
items[i].TextNode.style.height="";
}
var maxHeight=0;
for(var i=0;i<items.length;i++)
{
var height=items[i].TextNode.offsetHeight-win.GetVerticalPaddingBorder(items[i].TextNode);
maxHeight=Math.max(maxHeight,height);
}
for(var i=0;i<items.length;i++)
{
items[i].TextNode.style.height=ToPixels(maxHeight);
}
}
if(partHeight!=""&&partHeight!="auto")
{
var containerHeight=FromPixels(partHeight);
var totalHeight=0;
var totalOffsetTop=0;
var stayHidden=false;
for(var i=0;i<items.length;i++)
{
ShowNode(items[i].ItemNode);
var offsetTop=win.FindOffsetY(items[i].ItemNode,this.WebPart.ContentNode);
if(!stayHidden&&offsetTop!=totalOffsetTop)
{
totalOffsetTop=offsetTop;
var height=items[i].ItemNode.offsetHeight;
if((totalHeight+height)<=containerHeight)
{
totalHeight+=height;
}
else
{
stayHidden=true;
}
}
if(stayHidden)
{
HideNode(items[i].ItemNode);
}
}
}
};
AntaWebBanner.prototype.ShowVerticalVisibleItems=function AntaWebBanner_ShowVerticalVisibleItems(win,partHeight,partWidthNum,offsetTop,items)
{
if(items.length==0)
{
return;
}
if(partHeight!=""&&partHeight!="auto")
{
var containerHeight=FromPixels(partHeight);
var totalHeight=offsetTop;
var stayHidden=false;
for(var i=0;i<items.length;i++)
{
ShowNode(items[i].ItemNode);
if(!stayHidden&&(totalHeight+items[i].ItemNode.offsetHeight)<=containerHeight)
{
totalHeight+=items[i].ItemNode.offsetHeight;
}
else
{
stayHidden=true;
HideNode(items[i].ItemNode);
}
}
}
if(this.RenderStyle==4)
{
for(var i=0;i<items.length;i++)
{
items[i].AnchorNode.style.width=ToPixels(partWidthNum-win.GetHorizontalMarginPaddingBorder(items[i].AnchorNode));
}
}
};
AntaWebBanner.prototype.ShowHorizontalVisibleItems=function AntaWebBanner_ShowHorizontalVisibleItems(win,partWidthNum,containerNode,items,resizeItems)
{
if(items.length==0)
{
return;
}
var itemsShown=resizeItems?items.length:0;
var totalWidth=0;
var totalItems=items.length;
var itemsWidth=0;
for(var i=0;i<totalItems;i++)
{
var item=items[i];
ShowNode(item.ItemNode);
item.ItemNode.style.paddingLeft=null;
if(!IsDefined(typeof(item.Width)))
{
item.Width=item.AnchorNode.offsetWidth;
if(item.Width==0&&item.ImageNode!=null)
{
item.Width=Math.max(1,FromPixels(item.ImageNode.style.width));
}
}
totalWidth+=item.Width+win.GetHorizontalMarginPaddingBorder(item.AnchorNode)+win.GetHorizontalMarginPaddingBorder(item.ItemNode);
if(!resizeItems&&totalWidth<=partWidthNum)
{
itemsShown++;
itemsWidth=totalWidth;
}
}
var widthMultiplier=resizeItems?partWidthNum/totalWidth:1;
if(itemsShown==1)
{
AntaAddCssClass(containerNode,"oneItem");
AntaRemoveCssClass(items[0].ItemNode,"floatleft");
items[0].AnchorNode.style.width=ToPixels(CalculateWidth(items[0],widthMultiplier));
}
else
{
AntaRemoveCssClass(containerNode,"oneItem");
if(itemsShown>0)
{
if(resizeItems)
{
for(var i=0;i<itemsShown;i++)
{
AntaAddCssClass(items[i].ItemNode,"floatleft");
items[i].AnchorNode.style.width=ToPixels(CalculateWidth(items[i],widthMultiplier));
}
}
else
{
AntaAddCssClass(items[0].ItemNode,"floatleft");
for(var i=1;i<(itemsShown-1);i++)
{
AntaAddCssClass(items[i].ItemNode,"floatleft");
items[i].ItemNode.style.paddingLeft=ToPixels((partWidthNum-itemsWidth)/(itemsShown-1));
}
AntaAddCssClass(items[itemsShown-1].ItemNode,"floatright");
}
}
}
for(var i=itemsShown;i<totalItems;i++)
{
HideNode(items[i].ItemNode);
}
function CalculateWidth(item,widthMultiplier)
{
var oldWidth=item.Width+win.GetHorizontalMarginPaddingBorder(item.AnchorNode)+win.GetHorizontalMarginPaddingBorder(item.ItemNode);
return Math.max(1,(oldWidth*widthMultiplier)-win.GetHorizontalMarginPaddingBorder(item.AnchorNode)-win.GetHorizontalMarginPaddingBorder(item.ItemNode));
}
};
function AntaWebBanner(bannerId,webPart,renderStyle,bannerProperties)
{
this.WebPart=webPart;
this.BannerId=bannerId;
this.RenderStyle=renderStyle;
this.BannerProperties=bannerProperties;
this.Items=[];
if(IsDefined(typeof(this.BannerProperties))&&this.BannerProperties!=null)
{
this.ContainerNode=$(this.BannerProperties.Container,this.WebPart.WebForm.Window.WindowNode);
this.InitItems();
this.WebPart.ResizeHandler=this;
}
if(renderStyle==2)
{
this.ChoiceListId=bannerProperties.ControlId;
}
if(renderStyle==7)
{
this.BannerCarousel=new AntaBannerCarousel(webPart,bannerProperties,this.Items);
}
}
function AntaRegisterWebBanner(partClientID,bannerId,renderStyle,bannerProperties)
{
var webPart=GetDomData($(partClientID),AntaWebPartKey);
webPart.WebBanner=new AntaWebBanner(bannerId,webPart,renderStyle,bannerProperties);
}
function AntaHandleBannerCarouselButtonClick(e)
{
if(!IsDefined(typeof(e))){var e=this.document.parentWindow.event;}
StoreEvent(e);
var carousel=GetDomEventData(this);
if(carousel!=null)
{
var image=GetDomData(this,"LinkedImage");
if(image!=null)
{
carousel.OpenImage(image);
}
}
}
function AntaHandeBannerCarouselNavigationClick(e)
{
if(!IsDefined(typeof(e))){var e=this.document.parentWindow.event;}
StoreEvent(e);
var carousel=GetDomEventData(this);
switch(this.Action)
{
case "First":
carousel.FirstImage();
break;
case "Previous":
carousel.PreviousImage();
break;
case "Pause":
carousel.Pause();
break;
case "Next":
carousel.NextImage();
break;
case "Last":
carousel.LastImage();
break;
}
}
function AntaBannerCarousel(webPart,carouselOptions,items)
{
InitBannerCarouselPrototypes();
this.WebPart=webPart;
this.Window=webPart.WebForm.Window;
this.CarouselOptions=carouselOptions;
this.Items=items;
this.NavigationButtons=this.CarouselOptions.NavigationButtons;
this.ButtonBar=null;
this.Buttons={};
this.Container=null;
this.CurrentImage=null;
this.CurrentSize={H:0,W:0};
this.Timer=null;
this.Speed=(this.CarouselOptions.Interval*1000);
this.FadeTimer=null;
this.FadeSpeed=33;
this.FadeStep=0.1;
this.Paused=false;
this.Init();
this.NextImage();
}
function InitBannerCarouselPrototypes()
{
AntaBannerCarousel.prototype.HandleResize=function AntaBannerCarousel_HandleResize(partWidth,partHeight)
{
if(partWidth==0||partHeight==""||partHeight=="auto")
{
return;
}
partHeight=FromPixels(partHeight);
if(this.CurrentSize.H==partHeight&&this.CurrentSize.W==partWidth)
{
return;
}
if(this.Container!=null)
{
this.Container.style.width=ToPixels(partWidth);
this.Container.style.height=ToPixels(partHeight);
}
for(var i in this.Items)
{
var imageNode=this.Items[i].ImageNode;
imageNode.style.width=ToPixels(partWidth);
imageNode.style.height=ToPixels(partHeight);
}
this.CurrentSize.H=partHeight;
this.CurrentSize.W=partWidth;
};
AntaBannerCarousel.prototype.Init=function AntaBannerCarousel_Init()
{
this.ButtonBar=$(this.CarouselOptions.ButtonBar);
this.SetOpacity(this.ButtonBar,0.8);
this.Container=$(this.CarouselOptions.Container);
if(this.NavigationButtons)
{
var button=$(this.CarouselOptions.First);
button.Action="First";
button.onclick=AntaHandeBannerCarouselNavigationClick;
SetDomEventData(button,this);
button=$(this.CarouselOptions.Previous);
button.Action="Previous";
button.onclick=AntaHandeBannerCarouselNavigationClick;
SetDomEventData(button,this);
this.PauseButton=$(this.CarouselOptions.Pause);
this.PauseButton.Action="Pause";
this.PauseButton.onclick=AntaHandeBannerCarouselNavigationClick;
SetDomEventData(this.PauseButton,this);
button=$(this.CarouselOptions.Next);
button.Action="Next";
button.onclick=AntaHandeBannerCarouselNavigationClick;
SetDomEventData(button,this);
button=$(this.CarouselOptions.Last);
button.Action="Last";
button.onclick=AntaHandeBannerCarouselNavigationClick;
SetDomEventData(button,this);
}
else
{
var index=0;
for(var i=0;i<this.CarouselOptions.Buttons.length;i++)
{
var button=this.Buttons[index]=$(this.CarouselOptions.Buttons[i]);
var image=this.Items[index];
image.LinkedButton=button;
SetDomData(button,"LinkedImage",image);
button.onclick=AntaHandleBannerCarouselButtonClick;
SetDomEventData(button,this);
index++;
}
}
this.CurrentImage=this.Items[this.Items.length-1];
};
AntaBannerCarousel.prototype.FirstImage=function AntaBannerCarousel_FirstImage()
{
if(this.Items[0]!=undefined)
{
this.OpenImage(this.Items[0]);
}
};
AntaBannerCarousel.prototype.PreviousImage=function AntaBannerCarousel_PreviousImage()
{
for(var i in this.Items)
{
if(this.Items[i]==this.CurrentImage)
{
var previous=parseInt(i)-1;
if(this.Items[previous]==undefined)
{
this.LastImage();
}
else
{
this.OpenImage(this.Items[previous]);
}
return;
}
}
};
AntaBannerCarousel.prototype.Pause=function AntaBannerCarousel_Pause()
{
if(this.Timer==undefined)
{
this.Paused=false;
this.NextImage();
this.ButtonNormal(this.PauseButton);
}
else
{
this.Paused=true;
clearTimeout(this.Timer);
this.Timer=undefined;
this.ButtonSelected(this.PauseButton);
}
};
AntaBannerCarousel.prototype.NextImage=function AntaBannerCarousel_NextImage()
{
for(var i in this.Items)
{
if(this.Items[i]==this.CurrentImage)
{
var next=parseInt(i)+1;
if(this.Items[next]==undefined)
{
this.FirstImage();
}
else
{
this.OpenImage(this.Items[next]);
}
return;
}
}
};
AntaBannerCarousel.prototype.LastImage=function AntaBannerCarousel_ListImage()
{
if(this.Items[this.Items.length-1]!=undefined)
{
this.OpenImage(this.Items[this.Items.length-1]);
}
};
AntaBannerCarousel.prototype.UnselectButton=function AntaBannerCarousel_UnselectButton(image)
{
var button=image.LinkedButton;
this.ButtonNormal(button);
};
AntaBannerCarousel.prototype.ButtonNormal=function AntaBannerCarousel_ButtonNormal(button)
{
AntaRemoveCssClass(button,"selected");
};
AntaBannerCarousel.prototype.SelectButton=function AntaBannerCarousel_SelectButton(image)
{
var button=image.LinkedButton;
this.ButtonSelected(button);
};
AntaBannerCarousel.prototype.ButtonSelected=function AntaBannerCarousel_ButtonSelected(button)
{
if(IE8)
{
setTimeout(function()
{
AntaAddCssClass(button,"selected");
button.innerHTML=button.innerHTML+"";
},1);
}
else
{
AntaAddCssClass(button,"selected");
}
};
AntaBannerCarousel.prototype.SetCurrentOnTopAndContinue=function AntaBannerCarousel_SetCurrentOnTopAndContinue()
{
this.SetOpacity(this.CurrentImage.ImageNode,0);
AddAfter(this.CurrentImage.ItemNode.parentNode.lastChild,this.CurrentImage.ItemNode);
this.AnimateFade();
if(!this.Paused)
{
var carousel=this;
this.Timer=setTimeout(function(){carousel.NextImage();},this.Speed);
}
};
AntaBannerCarousel.prototype.SetOpacity=function AntaBannerCarousel_SetOpacity(element,value)
{
element.Opacity=value;
if(element.style.opacity==undefined)
{
element.style.filter='alpha(opacity='+(value*100)+')';
}
else
{
element.style.opacity=value;
}
};
AntaBannerCarousel.prototype.AnimateFade=function AntaBannerCarousel_AnimateFade()
{
var currentValue=(this.CurrentImage.ImageNode.Opacity==undefined)?0:this.CurrentImage.ImageNode.Opacity;
var newValue=currentValue+this.FadeStep;
if(newValue>1)
{
newValue=1;
}
if(currentValue<1)
{
this.SetOpacity(this.CurrentImage.ImageNode,newValue);
var carousel=this;
this.FadeTimer=setTimeout(function(){carousel.AnimateFade();},this.FadeSpeed);
}
};
AntaBannerCarousel.prototype.OpenImage=function AntaBannerCarousel_OpenImage(image)
{
if(this.CurrentImage==image)
{
return;
}
if(this.Timer!=undefined)
{
clearTimeout(this.Timer);
}
if(this.FadeTimer!=undefined)
{
clearTimeout(this.FadeTimer);
}
this.SetOpacity(this.CurrentImage.ImageNode,1);
if(!this.NavigationButtons)
{
this.UnselectButton(this.CurrentImage);
}
this.CurrentImage=image;
this.SetCurrentOnTopAndContinue();
if(!this.NavigationButtons)
{
this.SelectButton(this.CurrentImage);
}
};
}

