var YouTubeWidget=Class.create(Widget,{widgetIdentifier:"com-apple-iweb-widget-YouTube",thumbnailURL:null,initialize:function($super,f,a,b,e,d,c){if(f){$super(f,a,b,e,d,c);if(this.runningInApp){window.onresize=this.resize.bind(this)}var g=this.div("youTube");this.m_views={};this.m_views.movie=new YouTubeMovieView(this,g);if(c){this.m_views["no-movie-status"]=new YouTubeNoMovieStatus(this,g);this.m_views["invalid-url-status"]=new YouTubeInvalidURLStatus(this,g);this.m_views["user-offline-status"]=new YouTubeUserOfflineStatus(this,g)}else{this.m_views["no-movie-status"]=new YouTubePublishedErrorStatus(this,g);this.m_views["invalid-url-status"]=this.m_views["no-movie-status"];this.m_views["user-offline-status"]=this.m_views["no-movie-status"]}this.showView("no-movie-status");this.setPreferenceForKey(false,"x-snapshotAvailable",false);this.updateFromPreferences()}},changedPreferenceForKey:function(a){var b=this.div();if(this.preferenceForKey("x-online")===false){this.showView("user-offline-status")}else{if((a=="showRelatedVideos")||(a=="address")){this.updateFromPreferences()}else{if(a=="x-thumbnailMode"){if(this.thumbnailURL!=null){if(this.preferenceForKey(a)){this.m_views.movie.showThumbnail(true)}else{this.m_views.movie.showThumbnail(false)}}else{}}}}},updateFromPreferences:function(){if(!this.normalizingAddress){this.normalizingAddress=true;var a=this.preferenceForKey("address");var h="no-movie-status";if(a&&(a.length>0)){var j=this.preferenceForKey("movieURL");if(a!=this.preferenceForKey("lastNormalizedAddress")){j=null;this.setPreferenceForKey(0,"x-mediaDuration",false);var k=this.p_scrapeYouTubeURLFromString(a);var c=this.p_scrapeVideoGUIDFromString(k);var b=k.toQueryParams();if(c&&c.length>0){var f={};["color1","color2","border"].each(function(n){var m=b[n];if(m){f[n]=m}});j="http://www.youtube.com/v/"+c;var e=$H(f).toQueryString();j+=((e.length==0)?"":("&"+e));if(j!=this.preferenceForKey("movieURL")){this.redoThumbnail(c)}var d="http://www.youtube.com/watch?v="+c;this.setPreferenceForKey(d,"lastNormalizedAddress",false);this.setPreferenceForKey(d,"address",false);var l=b.rel;if(l!==undefined){this.setPreferenceForKey((l!=="0"),"showRelatedVideos",false)}this.setPreferenceForKey(true,"x-snapshotAvailable",false)}}var g=this.preferenceForKey("showRelatedVideos");if(j&&(g!==undefined)){var i=$H(j.httpURLQueryString().toQueryParams());if(g){i.unset("rel")}else{i.set("rel","0")}j=j.split("&")[0];var e=i.toQueryString();j+=((e.length==0)?"":("&"+e))}if(j!=this.preferenceForKey("movieURL")){this.setPreferenceForKey(j,"movieURL",false)}var h=(j&&j.isHTTPURL&&j.isHTTPURL()?"movie":"invalid-url-status");this.m_views[h].render()}this.m_currentViewName=h;this.showView(h);this.normalizingAddress=undefined}},redoThumbnail:function(a){this.thumbnailURL=null;var b=null;new Ajax.Request("http://gdata.youtube.com/feeds/api/videos/"+a,{method:"get",onFailure:function(c){this.setPreferenceForKey(false,"x-snapshotAvailable",false);this.render()}.bind(this),onSuccess:function(e){var j=ajaxGetDocumentElement(e);var f="http://search.yahoo.com/mrss/";var c="http://gdata.youtube.com/schemas/2007";var h=j.getElementsByTagNameNS(f,"group");if(h&&h[0]){var k=0;var g=h[0].getElementsByTagNameNS(f,"thumbnail");$A(g).each(function(m){var l=parseInt(m.getAttribute("height"));if(l>k){k=l;b=m.getAttribute("url")}}.bind(this));this.m_views.movie.setThumbnailURL(b);this.thumbnailImage=IWCreateImage(b);this.thumbnailImage.load(function(){this.thumbnailURL=b;this.setPreferenceForKey(true,"x-snapshotAvailable",false);this.setPreferenceForKey(true,"x-snapshotReady",false)}.bind(this));var d=h[0].getElementsByTagNameNS(c,"duration");if(d&&d[0]){var i=parseFloat(d[0].getAttribute("seconds"));if(i>0){this.setPreferenceForKey(i,"x-mediaDuration",false)}}}}.bind(this)})},resize:function(){$H(this.m_views).each(function(a){a.value.resize()})},onload:function(){if(!this.runningInApp){}},onunload:function(){},p_scrapeYouTubeURLFromString:function(c){var a=c;var b=c.match(/(value|src)\s*\=\s*([']([^']+)[']|["]([^"]+)["])/);if(b&&b.length==5){a=b[3]||b[4]}return a.strip()},p_scrapeVideoGUIDFromString:function(d){var a=null;var c=d.match(/^([a-zA-Z0-9_\-]*\d[a-zA-Z0-9_\-]*)$/);if(c){a=c[1]}else{c=d.match(/^(http[s]?:\/\/)?(\w+\.)?youtube\.com(\/.+)$/);if(c&&c.length==4){var b=c[3];var e=d.toQueryParams();var a=e.v;if(a==null){c=b.match(/^\/v\/([^\/&\?]+)/);if(c){a=c[1]}}}}return a}});var YouTubeMovieView=Class.create(View,{m_divId:"movie",m_divClass:"YouTubeMovie",m_thumbnailURL:"",setThumbnailURL:function(a){if(this.m_thumbnailURL!=a){this.m_thumbnailURL=a;this.render()}},render:function(){if(this.preferences&&this.preferences.postNotification){this.m_widget.preferences.postNotification("BLWidgetIsSafeToDrawNotification",0)}var a='<img style="visibility: hidden; position: absolute; width:100%; height:100%;" src="'+this.m_thumbnailURL+'" /><object style="visibility: visible; position:absolute; width:100%; height:100%"><param name="movie" value="'+this.m_widget.preferenceForKey("movieURL")+'"></param><param name="wmode" value="transparent"><embed src="'+this.m_widget.preferenceForKey("movieURL")+'" type="application/x-shockwave-flash" wmode="transparent" width="100%" height="100%"></embed></object>';this.ensureDiv().update(a);if(this.runningInApp){setTimeout(function(){if(this.preferences&&this.preferences.postNotification){this.m_widget.preferences.postNotification("BLWidgetIsSafeToDrawNotification",1)}if(this.m_widget.preferenceForKey("x-snapshotAvailable")===false){this.m_widget.setPreferenceForKey(true,"x-timeElapsedAfterMovieLoad",false)}}.bind(this),1000)}},showThumbnail:function(a){var c=this.ensureDiv().select("img")[0];var b=this.ensureDiv().select("object")[0];if(c&&b){if(a){b.setStyle({visibility:"hidden"});c.setStyle({visibility:"visible"})}else{c.setStyle({visibility:"hidden"});b.setStyle({visibility:"visible"})}}}});var YouTubeNoMovieStatus=Class.create(StatusView,{m_divId:"no-movie-status",m_divClass:"YouTubeStatusView",badgeImage:"youtube-placeholder.png",badgeImageWidth:128,badgeImageHeight:69});var YouTubeInvalidURLStatus=Class.create(StatusView,{m_divId:"invalid-url-status",m_divClass:"YouTubeStatusView",badgeImage:"youtube-placeholder_disabled.png",badgeImageWidth:128,badgeImageHeight:69,statusMessageKey:"<b>The YouTube URL you entered is invalid.</b><br />Double-check the URL on YouTube, and then try again.",upperRightBadge:"error-glyph.png",upperRightBadgeWidth:24,upperRightBadgeHeight:19});var YouTubeUserOfflineStatus=Class.create(StatusView,{m_divId:"user-offline-status",m_divClass:"YouTubeStatusView",badgeImage:"youtube-placeholder_disabled.png",badgeImageWidth:128,badgeImageHeight:69,statusMessageKey:"<b>You must be connected to the Internet to view the YouTube movie.</b>",upperRightBadge:"error-glyph.png",upperRightBadgeWidth:24,upperRightBadgeHeight:19});var YouTubePublishedErrorStatus=Class.create(StatusView,{m_divId:"published-error-status",m_divClass:"YouTubeStatusView",badgeImage:"youtube-placeholder.png",badgeImageWidth:128,badgeImageHeight:69});