var BlogSummaryWidget=Class.create(JSONFeedRendererWidget,{widgetIdentifier:"com-apple-iweb-widget-blogSummary",initialize:function($super,instanceID,widgetPath,sharedPath,sitePath,preferences,runningInApp){if(instanceID){$super(instanceID,widgetPath,sharedPath,sitePath,preferences,runningInApp);this.contentID="summary-content";this.itemTemplateID="item-template";this.itemID="item";this.separatorTemplateID="separator-template";this.selectState=null;this.sfrShadow=null;this.disableShadows=isEarlyWebKitVersion;this.styleThreeMaximumWidth=0.65;this.debugBorders=(location.href.indexOf("summaryBorders")!=-1);this.debugCompiledHtml=(location.href.indexOf("summaryCompiledHtml")!=-1);this.debugFinalHtml=(location.href.indexOf("summaryFinalHtml")!=-1);this.debugTrace=(location.href.indexOf("summaryTrace")!=-1);if(this.debugTrace)trace=print;if(this.privateInitialize){this.privateInitialize();}
document.blogSummaryWidget=this;this.initializingPreferences=true;this.initializeDefaultPreferences({"htmlTemplate":"","excerpt-length":"100","extraSpace":0,"headerOnTop":false,"imageSize":"25","imageSizeOverride":"","imagePosition":"Left","imageOutside":false,"imageVisibility":true,"rss-for-archive":false,"photoProportions":"Landscape"});delete this.initializingPreferences;this.dotMacAccount=this.preferenceForKey("dotMacAccount")||"";this.updateTemplate();this.applyUpgrades();this.fetchAndRenderRSS();}},sizeDidChange:function(){this.invalidateFeedItems("sizeDidChange");},onload:function($super){$super();this.changedPreferenceForKey("htmlTemplate");this.changedPreferenceForKey("sfr-stroke");this.changedPreferenceForKey("sfr-reflection");this.changedPreferenceForKey("sfr-shadow");},changedPreferenceForKey:function($super,key){try{if(this.initializingPreferences){return;}
if(this.privateChangedPreferenceForKey){this.privateChangedPreferenceForKey(key);}
if(key=="htmlTemplate"){this.updateTemplate();}
if(key=="rss-for-archive"){this.fetchAndRenderRSS();}
if(key=="photoProportions"){this.invalidateFeedItems(key);}}
catch(e){debugPrintException(e);}
$super(key);},applyUpgrades:function(){var upgrades=this.preferenceForKey("upgrades");if(upgrades===undefined){upgrades={};}
if((!upgrades["styleThreeWidthScale"])){if(this.imagePlacementStyle()==3){var oldImageSize=this.preferenceForKey("imageSize");var newImageSize=Math.floor(oldImageSize/this.styleThreeMaximumWidth);this.setPreferenceForKey(newImageSize,"imageSize",false);trace("Upgrading image size from %s to %s",oldImageSize,newImageSize);}
upgrades["styleThreeWidthScale"]=true;this.setPreferenceForKey(upgrades,"upgrades",false);}},updateTemplate:function(){var html=this.preferenceForKey("htmlTemplate");html=html.replace(/<div class=["']clear:[ ]*both;?['"] ?\/>/g,"<div style='clear:both'></div>");html=html.replace(/<div style=["']clear:[ ]*both;?['"] ?\/>/g,"<div style='clear:both'></div>");if(html==""){var markup;if(this.preferenceForKey("rss-for-archive"))
markup=BlogSummaryShared.defaultArchiveMarkup;else
markup=BlogSummaryShared.defaultSummaryMarkup;trace("** brand-new widget html being compiled from source markup");if(markup){html=BlogSummaryShared.compileMarkup(markup);}}
if(html){if(html.indexOf("<span class='bl-localized'>")==-1){if(html.indexOf("Read more...")!=-1)
html=html.replace(/Read more\.\.\./g,"<span class='bl-localized'>Read more...</span>");else if(html.indexOf("More...")!=-1)
html=html.replace(/More\.\.\./g,"<span class='bl-localized'>More...</span>");}
var contentDiv=this.getElementById(this.contentID);if(contentDiv){if(this.debugCompiledHtml)print("\n\n%s\n\n",html);html=html.replace(/\$WIDGET_ID/g,this.instanceID);contentDiv.innerHTML=html;this.resetRenderingState=true;this.invalidateFeedItems("updateTemplate");optOutOfCSSBackgroundPNGFix(contentDiv);}}},commentCountText:function(count,enabled){if(count==0){if(enabled){return this.localizedString("No Comments");}
else{return"";}}
else if(count==1){return this.localizedString("1 Comment");}
else{return String.stringWithFormat(this.localizedString("%s Comments"),count);}},replaceLinkTargets:function(node,replaceArray){var byteToPercentEscapeValue=function(ch){ch=ch&0xFF;var hiChar="0123456789ABCDEF".charAt(ch/16);var loChar="0123456789ABCDEF".charAt(ch%16);return"%"+hiChar+loChar;};var sanitizeUrlStringForIE6=function(s){var result="";for(var i=0;i<s.length;++i){var ch=s.charCodeAt(i);if(ch<128)
result+=s.charAt(i);else
result+=byteToPercentEscapeValue(ch);}
return result;};var links=$(node).select('a');for(var j=0;j<links.length;++j){var linkTarget=links[j].getAttribute("href");if(linkTarget&&linkTarget.length>0){for(var i=0;i<replaceArray.length;++i){linkTarget=linkTarget.replace(replaceArray[i][0],replaceArray[i][1]);}
if(linkTarget){if(windowsInternetExplorer&&effectiveBrowserVersion<7){linkTarget=sanitizeUrlStringForIE6(linkTarget);}
links[j].setAttribute("href",linkTarget);}}}},renderCommentCount:function(itemNode,index,enabled,count){var commentCountText=this.commentCountText(count,enabled);var spans=itemNode.select(".bl-value-comment-count");$A(spans).each(function(node){node.update(commentCountText);});var commentFieldNode=this.getElementById("comment-field",index);if(commentFieldNode){commentFieldNode.style.display=(commentCountText.length===0)?"none":"";}},applyLocalization:function(parent){var localizedSpans=$(parent).select(".bl-localized");localizedSpans.each(function(span){var key=getTextFromNode(span);span.update(this.localizedString(key));}.bind(this));},imagePlacementStyle:function(){var result;var headerOnTop=this.preferenceForKey("headerOnTop");var imageOutside=this.preferenceForKey("imageOutside");var imagePosition=this.preferenceForKey("imagePosition");var imageSizeOverride=this.preferenceForKey("imageSizeOverride");var settings=[imagePosition,imageOutside,headerOnTop,imageSizeOverride!=''];if(settings.isEqual(['Left',false,true,false]))
result=1;else if(settings.isEqual(['Left',false,false,false]))
result=2;else if(settings.isEqual(['Left',true,false,false]))
result=3;else if(settings.isEqual(['Right',false,false,false]))
result=4;else if(settings.isEqual(['Left',false,true,true]))
result=5;return result;},renderFeedItems:function(){trace('renderFeedItems(%s)',arguments[0]);if(this.pendingRender){clearTimeout(this.pendingRender);this.pendingRender=null;}
if(this.onloadReceived==false){this.invalidateFeedItems();return;}
if(this.blogFeed.itemCount()===0){trace(' exit: no items');return;}
if(this.resetRenderingState){this.lastRerenderImageSettings=[];this.lastRedoLayoutSettings=[];this.resetRenderingState=false;}
var itemTemplateNode=this.getElementById(this.itemTemplateID);var separatorTemplateNode=this.getElementById(this.separatorTemplateID);if(itemTemplateNode===null){trace(' exit: no template');return;}
var parentNode=itemTemplateNode.parentNode;var shouldDisableLinks=this.enableSubSelection;var excerptLength=this.preferenceForKey("excerpt-length");var imageSize=this.preferenceForKey("imageSize");var imageSizeOverride=this.preferenceForKey("imageSizeOverride");var imagePosition=this.preferenceForKey("imagePosition");var showPhotosOption=this.preferenceForKey("imageVisibility");var extraSpace=this.preferenceForKey("extraSpace");var imageOutside=this.preferenceForKey("imageOutside");var headerOnTop=this.preferenceForKey("headerOnTop");var photoProportions=this.preferenceForKey("photoProportions");var isArchive=this.preferenceForKey("rss-for-archive");var sfrShadowText=this.preferenceForKey("sfr-shadow");var sfrReflectionText=this.preferenceForKey("sfr-reflection");var sfrStrokeText=this.preferenceForKey("sfr-stroke");var showImages=showPhotosOption&&(excerptLength!==0);var imagePlacementStyle=this.imagePlacementStyle();if(this.preferences&&this.preferences.postNotification)
this.preferences.postNotification("BLWidgetIsSafeToDrawNotification",0);if(this.runningInApp&&((this.lastImagePlacementStyle!==undefined)&&(this.lastImagePlacementStyle!=imagePlacementStyle))){var tempLastImagePlacementStyle=this.lastImagePlacementStyle;this.lastImagePlacementStyle=imagePlacementStyle;if(imagePlacementStyle==3){imageSize=Math.min(Math.ceil(imageSize/this.styleThreeMaximumWidth),100);this.setPreferenceForKey(imageSize,"imageSize",false);return;}
else if(tempLastImagePlacementStyle==3){imageSize=Math.max(10,Math.ceil(imageSize*this.styleThreeMaximumWidth));this.setPreferenceForKey(imageSize,"imageSize",false);return;}}
this.lastImagePlacementStyle=imagePlacementStyle;if((imagePlacementStyle==3)&&!showImages){imageOutside=false;imagePlacementStyle=2;}
if(this.imagePlacementStyle()==3){var oldImageSize=imageSize;imageSize=Math.min(Math.max(10,Math.ceil(imageSize*this.styleThreeMaximumWidth)),100);trace("imageSize is %s but using %s because this is style 3",oldImageSize,imageSize);}
if(imageSizeOverride!==""){imageSize=Number(imageSizeOverride);}
var paddingLeft=0;var paddingRight=0;var contentDiv=this.getElementById(this.contentID);if(this.debugBorders)contentDiv.style.border="1px solid orange";var node=this.getElementById("image");if(node){while((node!==null)&&(node!==contentDiv)){if(node.style){paddingLeft+=parseFloat(node.style.paddingLeft||0);paddingRight+=parseFloat(node.style.paddingRight||0);}
node=node.parentNode;}}
var imageWidth=imageSize/100.0*($(parentNode).getWidth()-(paddingLeft+paddingRight));if(imageSizeOverride!==""&&this.sfrStroke){var strokeExtra=this.sfrStroke.strokeExtra();imageWidth-=(strokeExtra.left+strokeExtra.right);}
if(this.preferences&&this.preferences.postNotification){this.preferences.postNotification("BLBlogSummaryWidgetThumbnailWidthNotification",imageWidth);}
var rerenderImageSettings=[extraSpace,showImages,imageWidth,imagePosition,imageOutside,headerOnTop,sfrShadowText,sfrReflectionText,sfrStrokeText,photoProportions];var redoLayoutSettings=[imagePosition,extraSpace,imageOutside,imageWidth,headerOnTop,sfrStrokeText,showImages];var rerenderImage=(this.lastRerenderImageSettings===undefined||(rerenderImageSettings.isEqual(this.lastRerenderImageSettings)==false));var redoLayout=(this.lastRedoLayoutSettings===undefined||(redoLayoutSettings.isEqual(this.lastRedoLayoutSettings)==false));this.lastRerenderImageSettings=rerenderImageSettings;this.lastRedoLayoutSettings=redoLayoutSettings;var maxItems=this.blogFeed.maximumItemsToDisplay();for(var i=0;i<maxItems;++i){var item=this.blogFeed.itemAtIndex(i);var itemNode=this.getElementById(this.itemID,i);if(itemNode===null){itemNode=itemTemplateNode.cloneNode(true);itemNode.id=this.getInstanceId(this.itemID);adjustNodeIds(itemNode,i);var divClearBoth=document.createElement("div");divClearBoth.style.clear="both";parentNode.insertBefore(divClearBoth,itemTemplateNode);parentNode.insertBefore(itemNode,itemTemplateNode);}
if(shouldDisableLinks){disableLinks(itemNode);}
if(!item.dateString){if(item.date){item.dateString=item.date.stringWithICUDateFormat(this.blogFeed.dateFormat(),this);}}
substituteSpans(itemNode,{"bl-value-title":["html",item.title||""],"bl-value-date":["text",item.dateString],"bl-value-excerpt":["html",this.summaryExcerpt(item.description||"",excerptLength)]});if(this.runningInApp){this.renderCommentCount(itemNode,i,item.commentingEnabled,item.commentCount);this.replaceLinkTargets(itemNode,[[/\$link\$/g,item.relativeURL.toURLString()],[/\$comment-link\$/g,item.relativeCommentURL.toURLString()]]);}
else{var linkReplacer=function(item,itemNode){var itemCommentLink=item.relativeURL.toURLString()+"#comment_layer";this.replaceLinkTargets(itemNode,[[/\$link\$/g,item.relativeURL.toURLString()],[/\$comment-link\$/g,itemCommentLink]]);}.bind(this,item,itemNode);if(this.dotMacAccount!=""){this.fetchCommentCountInfoForItem(item,i,itemNode,linkReplacer);}
else{linkReplacer();}}
var isEquivalentToEmpty=function(s){return(s===undefined)||(s===null)||(s==="");}
var entryHasImage=(!isEquivalentToEmpty(item.imageUrlString));var badgeType=item.badgeType;var imgDiv=$(this.getElementById("image",i));var imgGroupDiv=$(this.getElementById("image-group",i));var headerNode=$(this.getElementById("header",i));if(headerNode){if(headerOnTop){imgDiv.parentNode.insertBefore(headerNode,imgDiv);}
else{imgDiv.parentNode.insertBefore(headerNode,imgDiv.nextSibling);}}
if(imgDiv){if(showImages){if(rerenderImage){this.rerenderImage(imgGroupDiv,imgDiv,item.imageUrlString,entryHasImage,photoProportions,imageWidth,this.addBadge.bind(this,badgeType,imgDiv));}}
if(redoLayout){$(imgDiv).setStyle({cssFloat:imagePosition});$(itemNode).setStyle({cssFloat:"none"});var strokeWidth=0;var strokeHeight=0;if(this.sfrStroke){var strokeExtra=null;if(this.sfrStroke.strokeExtra){strokeExtra=this.sfrStroke.strokeExtra();}
if(strokeExtra){strokeWidth=(strokeExtra.left+strokeExtra.right);strokeHeight=(strokeExtra.top+strokeExtra.bottom);}}
if(imageOutside){if(imagePosition=="Left"){var leftInset=(imageWidth+extraSpace+strokeWidth);if((windowsInternetExplorer&&effectiveBrowserVersion<7)||isFirefox)
leftInset+=paddingLeft;var marginLeft=-1*leftInset;$(imgDiv).setStyle({marginLeft:px(marginLeft),marginRight:0,paddingBottom:0,paddingLeft:0,paddingRight:0});if(this.debugBorders)imgDiv.style.border="1px solid blue";if(windowsInternetExplorer&&effectiveBrowserVersion<7)
itemNode.style.paddingLeft=0;else
itemNode.style.paddingLeft=px(imageWidth+extraSpace+strokeWidth+paddingLeft);itemNode.style.paddingRight=0;if(this.debugBorders)itemNode.style.border="1px solid red";itemNode.style.width=px(depx(this.div().style.width)-leftInset-paddingLeft-paddingRight);$(itemNode).setStyle({cssFloat:"right"});}
else if(imagePosition=="Right"){$(imgDiv).setStyle({marginLeft:0,marginRight:px(-1*(imageWidth+extraSpace)),paddingBottom:0,paddingLeft:0,paddingRight:0});$(itemNode).setStyle({paddingLeft:0,paddingRight:px(imageWidth+extraSpace),width:""});}}
else{if(imagePosition=="Left"){$(imgDiv).setStyle({marginLeft:0,marginRight:0,paddingBottom:px(extraSpace+strokeHeight),paddingLeft:0,paddingRight:px(extraSpace+strokeWidth)});$(itemNode).setStyle({paddingLeft:0,paddingRight:0,width:""})}
else if(imagePosition=="Right"){$(imgDiv).setStyle({marginLeft:0,marginRight:0,paddingBottom:px(extraSpace+strokeHeight),paddingLeft:px(extraSpace),paddingRight:px(strokeWidth)});$(itemNode).setStyle({paddingLeft:0,paddingRight:0,width:""});}}}
if(showImages&&entryHasImage){if(imgDiv.style.display!=""){imgDiv.style.display="";}}
else{if(imgDiv.style.display!="none")
imgDiv.style.display="none";itemNode.style.paddingLeft=0;itemNode.style.paddingRight=0;}}
var newSep=null;if(separatorTemplateNode&&(i<this.blogFeed.itemCount()-1)){newSep=this.getElementById(this.separatorTemplateID,i);if(newSep==null){newSep=separatorTemplateNode.cloneNode(true);adjustNodeIds(newSep,i);parentNode.insertBefore(newSep,itemTemplateNode);}}
this.applyLocalization(itemNode);itemNode.style.display="";if(newSep){newSep.style.display="";}}
var index=maxItems;while(true){if(index>0){var sep=this.getElementById(this.separatorTemplateID,index-1);if(sep){sep.parentNode.removeChild(sep);}}
var node=this.getElementById(this.itemID,index);if(node===null){break;}
node.parentNode.removeChild(node);index++;}
var pusherSpan=$("pusher");if(pusherSpan==null){pusherSpan=document.createElement("span");pusherSpan.innerHTML="&nbsp;";pusherSpan.id="pusher";itemTemplateNode.parentNode.insertBefore(pusherSpan,null);}
pusherSpan.style.display=(imagePlacementStyle==3)?"":"none";if(windowsInternetExplorer){fixAllIEPNGs(transparentGifURL());setTimeout(fixupIEPNGBGsInTree.bind(null,contentDiv,true),1);if(effectiveBrowserVersion>=8){joltLater(this.div());}}
if(this.privateSummaryDidRender){this.privateSummaryDidRender();}
if(this.debugFinalHtml){setTimeout(function(){print(contentDiv.outerHTML);},5000);this.debugFinalHtml=false;}
trace(" exit: done",this.blogFeed.itemCount(),"items");},fetchAndRenderRSS:function(){var isArchiveWidget=this.preferenceForKey("rss-for-archive");this.blogFeed=new BlogFeed(BlogRootURLString(location.href),isArchiveWidget,function(){this.invalidateFeedItems("renderSummaryFromRSS");}.bind(this));},fetchCommentCountInfoForItem:function(item,index,itemNode,postRenderCallback){var commentSummaryURL=item.absoluteURL.toURLString()+"?wsc=summary.js&ts="+new Date().getTime();var renderItemCommentSummary=function(request){if(request.responseText){var r=request.responseText.match(/.*=((true)|(false));.*\n.*=(\d+)/);if(r){var enabled=(r[1]=="true");var count=Number(r[4]);this.renderCommentCount(itemNode,index,enabled,count);}}
postRenderCallback();}.bind(this);new Ajax.Request(commentSummaryURL,{method:'get',onComplete:renderItemCommentSummary});},addBadge:function(badgeType,imageDiv){if(badgeType=="movie"||badgeType=="audio"){var cropDiv=imageDiv.down('.crop');var kBadgeHeight=16.0;var blackBarElem=new Element('div',{className:'badge-fill'});blackBarElem.setStyle({backgroundColor:'black',opacity:0.75,position:'absolute',left:0,bottom:0,width:px(cropDiv.offsetWidth),height:px(kBadgeHeight)});cropDiv.appendChild(blackBarElem);var badgeImageFilename=((badgeType=="movie")?"Overlay-Movie.png":"Overlay-Audio.png");var badgeSrc=this.widgetPath+"/"+badgeImageFilename;var badgeElem=new Element('img',{className:'badge-overlay',src:badgeSrc});badgeElem.setStyle({position:'absolute',bottom:0,left:0});if(windowsInternetExplorer){badgeElem.setStyle(" filter","progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+IEConvertURLForPNGFix(badgeSrc)+" ', sizingMethod='scale');");badgeElem.writeAttribute(badgeSrc,transparentGifURL());}
cropDiv.appendChild(badgeElem);}}});
