]> gitweb.michael.orlitzky.com - dead/whatever-dl.git/commitdiff
Added the ability to download Youtube videos.
authormjo <mjo@mjo.(none)>
Tue, 2 Sep 2008 22:13:40 +0000 (18:13 -0400)
committermjo <mjo@mjo.(none)>
Tue, 2 Sep 2008 22:13:40 +0000 (18:13 -0400)
Fixed a typo in the main executable which was causing a crash.
Added the progress bar tests back to the suite.
Added a Youtube class and the accompanying unit tests/fixtures.

bin/whatever-dl
src/websites/youtube.rb [new file with mode: 0644]
test/fixtures/youtube/SudixyugiX4.html [new file with mode: 0644]
test/test_suite.rb
test/youtube_test.rb [new file with mode: 0644]

index cde9e4dbbaaac2e3eb25790a2767d1c4d59d3c2c..970e0e09eb809097d83059ee615c3dfadcbfa039 100755 (executable)
@@ -106,7 +106,7 @@ if (__FILE__ == $0) then
   rescue Errno::ECONNREFUSED => e
     puts 'The connection to the server (to download the video file) was refused. Check your connection, and try again later.'
     Kernel.exit(EXIT_CONNECTION_REFUSED)
-  rescue Errno:EACCES => e
+  rescue Errno::EACCES => e
     puts "Access denied. Check that you have write permission to the output file/directory. Details: #{e.message}."
   rescue OpenURI::HTTPError => e
     puts "An HTTP error occurred while downloading the video file: #{e.message}."
diff --git a/src/websites/youtube.rb b/src/websites/youtube.rb
new file mode 100644 (file)
index 0000000..6766af2
--- /dev/null
@@ -0,0 +1,107 @@
+#
+# Copyright Michael Orlitzky
+#
+# http://michael.orlitzky.com/
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# http://www.fsf.org/licensing/licenses/gpl.html
+#
+
+require 'src/website'
+
+# Needed to download the page, which is in turn
+# needed because it contains the video URL.
+require 'net/http'
+require 'uri'
+
+
+class Youtube < Website
+
+  VALID_YOUTUBE_URL_REGEX = /^(http:\/\/)?(www\.)?youtube\.com\/((watch\?v=)|(v\/))[[:alnum:]]+(\&.*)?$/
+  
+  def self.owns_url?(url)
+    return url =~ VALID_YOUTUBE_URL_REGEX
+  end
+
+  
+  def get_video_url(url)
+    video_id = self.parse_video_id(url)
+
+    # The video's URL (the "page data" URL) may be different from the
+    # URL that was passed to the program. We support the /v/video_id
+    # URL format, but that is *not* the main video page where we can
+    # retrieve the "t" parameter. We can only get that from the
+    # /watch?v=video_id form.
+    page_data_url = "http://www.youtube.com/watch?v=#{video_id}"
+    page_data = self.get_page_data(page_data_url)
+
+    # Magic.
+    t_parameter = self.parse_t_parameter(page_data)
+    
+    video_url = "http://www.youtube.com/get_video?video_id=#{video_id}&t=#{t_parameter}"
+      
+    return video_url
+  end
+
+  
+  protected;
+
+  # Get the video id from the URL. Should be relatively easy,
+  # unless Youtube supports some URL formats of which I'm unaware.
+  def parse_video_id(url)
+    # Return nil if we get no matches below.
+    video_id = nil
+    
+    # Both URLs are fairly easy to parse if you handle
+    # them one at a time. The only tricky situation is when
+    # parameters like "&hl=en" are tacked on to the end.
+    # We'll call /watch?v=video_id the "first form."
+    first_form_video_id_regex = /v=([[:alnum:]]+)$/
+    first_form_matches = first_form_video_id_regex.match(url)
+    return first_form_matches[1] if not (first_form_matches.nil? ||
+                                         first_form_matches.length < 2)
+
+    # First form didn't work? Try the second.
+    second_form_video_id_regex = /\/v\/([[:alnum:]]+)/
+    second_form_matches = second_form_video_id_regex.match(url)
+    video_id = second_form_matches[1] if not (second_form_matches.nil? ||
+                                              second_form_matches.length < 2)
+    
+    return video_id
+  end
+
+
+  # Parse out the "t" parameter from the video's page. I'm not sure
+  # what "t" stands for, but it's located in some JSON, and is required
+  # for the final video URL to work.
+  def parse_t_parameter(page_data)
+    t_parameter = nil
+    
+    t_parameter_regex = /\"t\"\:[[:space:]]\"([[:alnum:]]+)\"/
+    matches = t_parameter_regex.match(page_data)
+    t_parameter = matches[1] if not (matches.nil? || matches.length < 2)
+
+    return t_parameter
+  end
+
+  
+  def get_page_data(url)
+    uri = URI.parse(url)
+
+    response = Net::HTTP.start(uri.host, uri.port) do |http|
+      http.get(uri.request_uri)
+    end
+
+    return response.body
+  end
+  
+end
diff --git a/test/fixtures/youtube/SudixyugiX4.html b/test/fixtures/youtube/SudixyugiX4.html
new file mode 100644 (file)
index 0000000..80688bc
--- /dev/null
@@ -0,0 +1,1916 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
+
+
+       <html lang="en">
+
+<!-- machid: 467 -->
+<head>
+
+       
+       <title>YouTube - Domino Domino Logic</title>
+
+       <link rel="stylesheet" href="http://s.ytimg.com/yt/css/base_all-vfl52184.css" type="text/css">
+
+       <link rel="search" type="application/opensearchdescription+xml" href="/opensearch?locale=en_US" title="YouTube Video Search">
+       <link rel="icon" href="http://s.ytimg.com/yt/favicon-vfl1123.ico" type="image/x-icon">
+       <link rel="shortcut icon" href="http://s.ytimg.com/yt/favicon-vfl1123.ico" type="image/x-icon">
+
+
+       <meta name="title" content="Domino Domino Logic">
+       <meta name="description" content="Create OR, AND and XOR gates out of dominoes.  Replacement for TTL and CMOS.http://neil.fraser.name/">
+       <meta name="keywords" content="Domino, Boolean, Logic, And, Or, Xor">
+
+       <link rel="alternate" type="application/rss+xml" title="YouTube - [RSS]" href="/rssls">
+
+       <link rel="alternate" media="handheld" href="http://m.youtube.com/details?desktop_uri=%2Fwatch%3Fv%3DSudixyugiX4&v=SudixyugiX4">
+
+
+       <script type="text/javascript" src="http://s.ytimg.com/yt/js/base_all_with_bidi-vfl52265.js"></script>
+
+       <script type="text/javascript">
+
+                       function _hbLink (a,b) { return false; }
+                       function urchinTracker (a) { }
+                       function urchinTrackerDefer(a) { }
+
+               
+       var gXSRF_token = '';
+       var gXSRF_field_name = '';
+       var gXSRF_ql_pair = '';
+       var onLoadFunctionList = onLoadFunctionList || [];
+
+               gXSRF_token = '4SetlqGLxGPZwoe6DudnzX0yFkV8MTIyMDQ3NTc0MQ==';
+               gXSRF_field_name = 'session_token';
+               onLoadFunctionList.push(function() { populate_session_token() });
+
+               gXSRF_ql_pair = 'session_token=7yjlMnALkvpaAsLR5Xz9nB6xu058MA==';
+
+
+               var gGoogleSuggest = false;
+               var gPixelGif = 'http://s.ytimg.com/yt/img/pixel-vfl73.gif';
+
+               var gIsResultsPage = false;
+       </script>
+
+
+       <script type="text/javascript">
+
+               initWatchQueue(true);
+
+               var MSG_Hide = 'Hide';
+               var MSG_Show = 'Show';
+               var MSG_Login = 'Please sign in to perform this operation.';
+               var MSG_Loading = 'Loading...';
+               var MSG_ShowingAll = 'Showing All Videos';
+               var MSG_LoginFavorites = 'You must be logged in to add this video to your favorites';
+               var MSG_LoginAddPlaylist = 'You must be logged in to add this video to a playlist.';
+               var MSG_LoginReportConcern = 'You must be logged in to report a concern.';
+               var MSG_FlagDefault = 'Select a Reason';
+
+               var isLoggedIn =  false ;
+               
+
+               var swfUrl = canPlayV9Swf() ? 'http://s.ytimg.com/yt/swf/watch-vfl53404.swf' : 'http://s.ytimg.com/yt/swf/watch_v8-vfl53404.swf';
+               var swfArgs = {"q": "SudixyugiX4", "vq": null, "sourceid": "ys", "video_id": "SudixyugiX4", "l": 206, "sk": "TFPpDxTG1IaZpNnQF3EQhJ0k_t9E5Tp8C", "fmt_map": "", "t": "OEgsToPDskLQUAntWWpzhEMhBMlgqHdo", "hl": "en", "plid": "AARV8Ak0G-0EYBjyAAACoAQ4YAA"};
+
+               var additionalStatsHonorsUrl = '/watch_ajax?v=SudixyugiX4&action_get_honors=1&l=EN';
+               var additionalAudioInfoUrl = '/watch_ajax?v=SudixyugiX4&action_get_audio_info=1&l=EN';
+               var watchMapUrl = '/watch_ajax?v=SudixyugiX4&action_get_map=1';
+               var fullscreenUrl = '/watch_fullscreen?fs=1&q=SudixyugiX4&vq=None&sourceid=ys&video_id=SudixyugiX4&l=206&sk=TFPpDxTG1IaZpNnQF3EQhJ0k_t9E5Tp8C&fmt_map=&t=OEgsToPDskLQUAntWWpzhEMhBMlgqHdo&hl=en&plid=AARV8Ak0G-0EYBjyAAACoAQ4YAA&title=Domino Domino Logic';
+               var watchGamUrl = null;
+               var watchDCUrl = null;
+               var watchTrackWithHitbox = false;
+               var watchIsPlayingAll = false;
+               var watchUsername = 'Odo987';
+               var pageVideoId = 'SudixyugiX4';
+               var pageVideoSearchQueryStr = ' Domino Boolean Logic And Or Xor';
+               var pageFillRelatedVideoStartIndex = 14;
+               var pageFillRelatedVideoEndIndex = 40;
+               var relatedVideoGridUrl = '/related_ajax?action_get_related&video_id=SudixyugiX4&view_type=G&watch3=1&search=%20Domino%20Boolean%20Logic%20And%20Or%20Xor';
+               var relatedVideoListUrl = '/related_ajax?action_get_related&video_id=SudixyugiX4&view_type=L&watch3=1&search=%20Domino%20Boolean%20Logic%20And%20Or%20Xor';
+               var playnextFrom = '';
+               var playnextCount = '0';
+               var qlAutoscrollDestination = 0;
+               var watchSetWmode = false;
+               var embedUrl = 'http://www.youtube.com/v/SudixyugiX4&hl=en&fs=1';
+               var ytLocale = 'en_US';
+       
+               var ad_eurl = null;
+
+                       onLoadFunctionList.push(function() { checkVideoQualitySettings() });
+                
+               var axc = '';
+               var subscribeaxc = '';
+               
+
+
+
+                       function showCommentReplyForm(form_id, reply_parent_id, is_main_comment_form) {
+               var msg = new Object();
+               msg["post"] = "Please sign in to post a comment.";
+               showCommentReplyForm_js(form_id, reply_parent_id, is_main_comment_form, msg);
+       }
+
+       function updateCharCount(charCount_id, label_id, textArea) {
+               var msg = new Object();
+               msg["exceeded"] = "Number of characters over the limit: ";
+               msg["remaining"] = "Remaining character count: "; 
+               updateCharCount_js(charCount_id, label_id, textArea, 500, msg)
+       }
+
+       function loginMsg(div_id, display_val) {
+               var msg = new Object();
+               msg["login"] = 'Please sign in';
+               loginMsg_js(div_id, display_val, msg);
+       }
+
+       function printCommentReplyForm(form_id, reply_parent_id, is_main_comment_form) {
+               var msg = new Object();
+               msg["post"] = "Post Comment";
+               msg["remaining"] = "Remaining character count: ";
+               msg["discard"] = "Discard"; 
+               printCommentReplyForm_js(form_id, reply_parent_id, is_main_comment_form, 'V', 'top.goog.i18n.bidi.setDirAttribute(event,this)', 'video_id', 'SudixyugiX4', '', 500, msg);
+       }
+
+       function postThreadedComment(comment_form_id) {
+               var msg = new Object();
+               msg["add"] = "Adding comment...";
+               postThreadedComment_js(comment_form_id, msg);
+       }
+
+       function commentApproved(xmlHttpRequest) {
+               alert("Comment approved.")
+       }
+
+       function ThreadedCommentHandler(comment_form, comment_form_id) {
+               var msg = new Object();
+               msg["empty"] = "You must enter a comment!";
+               msg["toolong"] = "Your comment must be shorter than 500 characters!";
+               return ThreadedCommentHandler_js(comment_form, comment_form_id, msg);
+       }
+
+       function commentResponse(xmlHttpRequest) {
+               var msg = new Object();
+               msg["ok"] = "Comment Posted!";
+               msg["pending"] = "Comment Pending Approval!";
+               msg["toolong"] = "The comment you have entered is too long. Limit is 500 characters. Please write a shorter comment and try again";
+               msg["tooshort"] = "The comment you have entered is too short. Please write a longer comment and try again";
+               msg["toosoon"] = "Commenting Limit Exceeded";
+               msg["email"] = "You must confirm your email address before you can submit comments.  Click OK to confirm your email address.";
+               msg["captchFail"] = "The response to the letters on the image was not correct, please try again.";
+               msg["default"] = "Post Comment"; 
+               commentResponse_js(xmlHttpRequest, msg);
+       }
+
+       function load_all_comments(video_id, is_watch2) {
+               var msg = new Object();
+               msg["remove"] = "Loading Comments...";
+               load_all_comments_js(video_id, is_watch2, msg);
+       }
+
+
+
+
+               onLoadFunctionList.push(function() { applyUserPrefs() });
+
+
+
+
+
+       </script>
+
+</head>
+
+
+<body onload="performOnLoadFunctions();" class="en_US is-english">
+
+
+
+<div id="baseDiv" class="date-20080902 video-info">
+       
+               <div id="masthead">
+               <a href="/" onmousedown="urchinTracker('/Events/Header/YouTubeLogo');" class="logo"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" width="132" height="63" border="0" alt=""/></a>
+               <div id="non-logo-masthead">
+                       <div id="top-margin-links-wrapper">
+                               <div class="user-info">
+                                       
+
+                                       
+
+
+
+
+       <div id="util-links" class="normal-utility-links">
+
+               <span class="util-item first"><b><a class="hLink" href="        /signup?next=/watch%3Fv%3DSudixyugiX4
+" onclick="_hbLink('SignUp','UtilityLinks');" onmousedown="urchinTracker('/Events/Header/UtilLinks/SignUp');">Sign Up</a></b></span>
+               <span class="util-item"><a class="hLink" href="/watch_queue?all" onmousedown="urchinTracker('/Events/Header/UtilLinks/QuickList');">QuickList</a> (<span id="quicklist-utility">0</span>)</span>
+               <span class="util-item"><a class="hLink" href="http://help.youtube.com/support/youtube/bin/static.py?page=start.cs" onmousedown="urchinTracker('/Events/Header/UtilLinks/Help');">Help</a></span>
+                               <span class="util-item"><a class="hLink" href="         /login?next=/watch%3Fv%3DSudixyugiX4
+" onmousedown="urchinTracker('/Events/Header/UtilLinks/SignIn');">Sign In</a></span>
+       </div>
+
+       <form name="logoutForm" method="post" target="_top" action="/index">
+               <input type="hidden" name="action_logout" value="1">
+       </form>
+
+
+
+                               </div>
+                               <div id="lang-locale-picker-links-wrapper">
+                                                       <span class="util-item first with-flag"><a href="#" class="contentRegionPickerLink eLink" onclick="loadFlagImgs();toggleDisplay('contentRegionPickerBox');return false;" onmousedown="urchinTracker('/Events/Header/UtilLinks/I18n/text');">Worldwide</a></span>
+               <span class="util-item"><a href="#" class="uiLanguagePickerLink eLink" onclick="loadFlagImgs();toggleDisplay('uiLanguagePickerBox');return false;" onmousedown="urchinTracker('/Events/Header/UtilLinks/I18n/text');">English</a></span>
+
+                               </div>
+                                               <div id="contentRegionPickerBox">
+               <div class="picker-top">
+                       <div class="picker-close-link"><a href="#" onclick="closeContentRegionPicker(); return false;"><img onclick="closeContentRegionPicker()" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="Close"></a></div>
+                       <div class="picker-help-link"><a href="#" class="eLink" onclick="toggleDisplay('region-picker-help'); return false;">(What is this?)</a></div>
+                       <h2>Set Your Country Content Preference</h2>
+                               <div id="region-picker-help">Choose which country's videos, channels, and activity filters (for example, "Most Viewed"), you would like to view.</div>
+               </div>
+       <div class="flagDiv">
+                       <script type="text/javascript">
+                               var gContentRegions = [
+                               ['en_US','US','Worldwide (All)']                                                                        ,                               ['en_AU','AU','Australia']                                                                      ,                               ['en_CA','CA','Canada']                                                                 ,                               ['en_IN','IN','India']                                                                  ,                               ['en_IE','IE','Ireland']                                                                        ,                               ['en_NZ','NZ','New Zealand']                                                                    ,                               ['en_GB','GB','UK']                                                                     ,                               ['pt_BR','BR','Brazil']                                                                 ,                               ['de_DE','DE','Germany']                                                                        ,                               ['es_ES','ES','Spain']                                                                  ,                               ['fr_FR','FR','France']                                                                 ,                               ['zh_HK','HK','Hong Kong']                                                                      ,                               ['it_IT','IT','Italy']                                                                  ,                               ['ja_JP','JP','Japan']                                                                  ,                               ['ko_KR','KR','South Korea']                                                                    ,                               ['es_MX','MX','Mexico']                                                                 ,                               ['nl_NL','NL','Netherlands']                                                                    ,                               ['pl_PL','PL','Poland']                                                                 ,                               ['ru_RU','RU','Russia']                                                                 ,                               ['zh_TW','TW','Taiwan']                         
+                               ];
+                       </script>
+                       <div id="flagDivInnerContentRegion">
+                       </div>
+       </div>
+       </div>
+
+                                               <div id="uiLanguagePickerBox">
+               <div class="picker-top">
+                       <div class="picker-close-link"><img onclick="closeUILanguagePicker()" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="Close"></div>
+                       <div class="picker-help-link"><a href="#" class="eLink" onclick="toggleDisplay('language-picker-help'); return false;">(What is this?)</a></div>
+                       <h2>Set Your Language Preference</h2>
+                       <div id="language-picker-help">Choose the language in which you want to view YouTube. This will only change the interface, not any text entered by other users.</div>
+               </div>
+       <div class="flagDiv">
+                       <script type="text/javascript">
+                               var gUILanguages = [
+                               ['zh-CN','&#20013;&#25991; (&#31616;&#20307;)']                                                                 ,                               ['zh-TW','&#20013;&#25991; (&#32321;&#39636;)']                                                                 ,                               ['ja','&#26085;&#26412;&#35486;']                                                                       ,                               ['ko','&#54620;&#44397;&#50612;']                                                                       ,                               ['de','Deutsch']                                                                        ,                               ['en-GB','English (UK)']                                                                        ,                               ['en','English (US)']                                                                   ,                               ['es','Espa&#241;ol (Espa&#241;a)']                                                                     ,                               ['es-MX','Espa&#241;ol (Latinoam&#233;rica)']                                                                   ,                               ['fr','Fran&#231;ais']                                                                  ,                               ['it','Italiano']                                                                       ,                               ['nl','Nederlands']                                                                     ,                               ['pl','Polski']                                                                 ,                               ['pt','Portugu&#234;s (Brasil)']                                                                        ,                               ['ru','Pycc&#312;&#1080;&#1081;']                               
+                               ];
+                       </script>
+                       <div id="flagDivInnerUILanguage">
+                       </div>
+       </div>
+       </div>
+
+                               
+
+               </div>
+       </div>
+               <div class="nav" id="tab-wrapper">
+                       <div class="nav-item first" id="nav-item-home">
+                               <span class="leftcap"></span>
+                               <a class="content" href="/" onmousedown="urchinTracker('/Events/Header/MainTabs/HomeTab');">Home</a>
+                               <span class="rightcap"></span>
+                       </div>
+                       <div class="nav-item selected" id="nav-item-videos">
+                               <div class="nav-tab">
+                                       <span class="leftcap"></span>
+                                       <a class="content" href="/browse?s=mp" onmousedown="urchinTracker('/Events/Header/MainTabs/VideosTab');">Videos</a>
+                                       <span class="rightcap"></span>
+                               </div>
+                       </div>
+                       <div class="nav-item" id="nav-item-channels">
+                               <div class="nav-tab">
+                                       <span class="leftcap"></span>
+                                       <a class="content" href="/members" onmousedown="urchinTracker('/Events/Header/MainTabs/ChannelsTab');">Channels</a>
+                                       <span class="rightcap"></span>
+                               </div>
+                       </div>
+                       <div class="nav-item" id="nav-item-community">
+                               <div class="nav-tab">
+                                       <span class="leftcap"></span>
+                                       <a class="content" href="/community" onmousedown="urchinTracker('/Events/Header/MainTabs/CommunityTab');">Community</a>
+                                       <span class="rightcap"></span>
+                               </div>
+                       </div>
+               </div>
+
+               <form action="/results" method="get" name="searchForm" onsubmit="return submitRegularSearchRequest()">
+
+               <div class="bar">
+                       <span class="leftcap"></span>
+                       <div class="search-bar">
+                               <a href="/my_videos_upload" onmousedown="urchinTracker('/Events/Header/UploadButton');" id="upload-button" class="action-button">
+                                       <span class="action-button-leftcap"></span>
+                                       <span class="action-button-text">Upload</span>
+                                       <span class="action-button-rightcap"></span>
+                               </a>
+                               <div id="search-form">
+                                       <input id="search-term" name="search_query" type="text" tabindex="1" onkeyup = "top.goog.i18n.bidi.setDirAttribute(event,this)"  value="" maxlength="128" />
+                                       <select class="search-type" name="search_type">
+                                               <option value="">Videos</option>
+                                               <option value="search_users" >Channels</option>
+                                       </select>
+                                       <input id="search-button" type="submit" value="Search" />
+                               </div>
+                               <script type="text/javascript">
+                                       var gGeoTooltipText =  'Move this marker to a new location then click Search to find videos recorded in that area.';
+                                       var gGeoTooltipMoreText= 'Zoom in/out to change the radius for your search.';
+                                       var gGeoTooltipButton = "<div class='alignC marT4'><button onclick='onGeoTooltipSearch(this);'>" + 'Search' + "</button></div>";
+                                       var gGeoTooltipMore = "<a href='#' onclick='marker.openInfoWindowHtml(gGeoTooltipMore); return false;'>" + 'more' + "&raquo;</a>";
+                                       var gGeoTooltip = "<div style='width: 200px; padding-right: 10px'>" + gGeoTooltipText + gGeoTooltipMore + gGeoTooltipButton + "</div>";
+                                       var gGeoTooltipMore = "<div style='width: 200px; padding-right: 10px'>" + gGeoTooltipText + gGeoTooltipMoreText + gGeoTooltipButton + "</div>";
+                                       var gGeoSelectedLocationText = 'Selected location';
+                               </script>
+                               <div class="search-settings-link">
+                               <a href="#" class="eLink" onmousedown="urchinTracker('/Events/Header/AdvancedSearch');" onClick="return toggleAdvSearch('', '', '', '', '', '', '', '')">
+                                       advanced
+                               </a></div>
+                       </div>
+                       <span class="rightcap"></span>
+               </div>
+
+               </form>
+
+               <div id="search-advanced-form" class="hid">
+                       <div class="search-setting-inner alignC">Loading...</div>
+               </div>
+
+               <div class="clear"></div>
+       </div> 
+       <div id="search-settings-clr" class="hid"></div>
+
+       
+       
+       
+
+
+
+
+<div id="watch-vid-title" class="title">
+       <div >Domino Domino Logic</div>
+</div>
+
+<div id="watch-this-vid">
+       <div id="watch-player-div" class="flash-player">
+               <div id="watch-noplayer-div">
+                       <noscript>Hello, you either have JavaScript turned off or an old version of Adobe's Flash Player. <a href="http://www.macromedia.com/go/getflashplayer/" onmousedown="urchinTracker('/Events/VideoWatch/GetFlash');">Get the latest Flash player</a>.</noscript>
+                       <script type="text/javascript">
+                               document.write('Hello, you either have JavaScript turned off or an old version of Adobe\'s Flash Player. <a href=\"http://www.macromedia.com/go/getflashplayer/\" onmousedown=\"urchinTracker(\'/Events/VideoWatch/GetFlash\');\">Get the latest Flash player</a>.');
+                       </script>
+               </div>
+       </div> 
+       <script type="text/javascript">
+               var fo = writeMoviePlayer("watch-player-div");
+       </script>
+
+
+
+
+       <div id="watch-ratings-views">
+               <div id="watch-rating-div" class="ratingSingleline">
+                       <div class="statLabel floatL">Rate:</div>
+                       
+
+               <script language="javascript">
+
+
+               document.getElementById('watch-rating-div').onmouseover = function() { hideDiv('defaultRatingMessage'); showDiv('hoverMessage'); };
+               document.getElementById('watch-rating-div').onmouseout = function() { showDiv('defaultRatingMessage'); hideDiv('hoverMessage'); };
+       
+               </script>
+
+<div id="ratingWrapper"><div class="floatL" onclick="urchinTracker('/Events/VideoWatch/Rated');"><div id="ratingStars" class="floatL"><img class="ratingL ratingL-4.5" alt="4.5" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" /></div><div id="ratingMessage"><div id="defaultRatingMessage"><span class="smallText">557 ratings</span></div><div id="hoverMessage" style="width:100%" class="hid"><a href="                /login?next=/watch%3Fv%3DSudixyugiX4
+">Sign in</a> to rate</div></div></div></div>
+
+               </div>
+
+               <div id="watch-views-div">
+                       <div class="floatR">
+                               <span class="statLabel number-of-views">Views:</span>
+                               <span id="watch-view-count">141,905</span>
+                       </div>
+
+
+
+                       <div class="clear"></div>
+               </div>
+
+               <div class="clear"></div>
+       </div>
+
+       <div id="watch-actions-area">
+               <table cellpadding="0" cellspacing="0" class="watch-tabs">
+                       <tr>
+                               <td id="watch-tab-share" onclick="if (hasClass(this, 'watch-tab-sel') && _gel('watch-share-video-div').style.display !='block') {urchinTracker('/Events/VideoWatch/ShareTab/OpensMore/en_US');processShareVideo('SudixyugiX4','watch-share-video-div', 'all');}; watchSelectTab(this);" class="watch-tab-sel watch-tab-first">
+                                       <a id="watch-action-share-link" href="#" class="watch-action-link" onclick="return false;">
+                                               <img id="watch-action-share" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="Share" />
+                                               <span class="watch-action-text">Share</span>
+                                       </a>
+                               </td>
+                               <td id="watch-tab-favorite" onclick="if (!hasClass(this, 'disabled')) { addToFaves('addToFavesForm',event); }">
+                                       <a id="watch-action-favorite-link" href="#" class="watch-action-link" onclick="return false;">
+                                               <img id="watch-action-favorite" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="Favorite" />
+                                               <span class="watch-action-text">Favorite</span>
+                                       </a>
+                               </td>
+                               <td id="watch-tab-playlists" onclick="addToPlaylist('SudixyugiX4',event);">
+                                       <a id="watch-action-playlists-link" href="#" class="watch-action-link" onclick="return false">
+                                               <img id="watch-action-playlists" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="Add to Playlists" />
+                                               <span class="watch-action-text">Playlists</span>
+                                       </a>
+                               </td>
+                               <td id="watch-tab-flag" onclick="if (!hasClass(this, 'disabled')) { reportConcern('SudixyugiX4',event); }" title="Report video as inappropriate">
+                                       <a id="watch-action-flag-link" href="#" class="watch-action-link" onclick="return false">
+                                               <img id="watch-action-flag" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="Report video as inappropriate" />
+                                               <span class="watch-action-text">Flag</span>
+                                       </a>
+                               </td>
+                       </tr>
+               </table>
+               <div class="clear"></div>
+               <div class="watch-tab-contents">
+                       <div id="watch-tab-share-body" class="watch-tab-body watch-tab-sel">
+                               <div id="aggregationServicesDiv" class="alignC">        
+                                                               <div class="watch-recent-shares-div">
+                               <div class="watch-recent-share">
+                                               <a href="http://www.myspace.com/Modules/PostTo/Pages/?t=Domino%20Domino%20Logic&amp;c=%3Cobject%20width%3D%22425%22%20height%3D%22355%22%3E%3Cparam%20name%3D%22movie%22%20value%3D%22http%3A//www.youtube.com/v/SudixyugiX4%26hl%3Den%26rel%3D0%22%3E%3C/param%3E%3Cembed%20src%3D%22http%3A//www.youtube.com/v/SudixyugiX4%26hl%3Den%26rel%3D0%22%20type%3D%22application/x-shockwave-flash%22%20width%3D%22425%22%20height%3D%22355%22%3E%3C/embed%3E%3C/object%3E&amp;u=http%3A//www.youtube.com/watch%3Fv%3DSudixyugiX4&amp;l=1" target="_blank" onclick="recordServiceUsage('MYSPACE', 'SudixyugiX4', 'en_US');openPopup('http://www.myspace.com/Modules/PostTo/Pages/?t=Domino%20Domino%20Logic&amp;c=%3Cobject%20width%3D%22425%22%20height%3D%22355%22%3E%3Cparam%20name%3D%22movie%22%20value%3D%22http%3A//www.youtube.com/v/SudixyugiX4%26hl%3Den%26rel%3D0%22%3E%3C/param%3E%3Cembed%20src%3D%22http%3A//www.youtube.com/v/SudixyugiX4%26hl%3Den%26rel%3D0%22%20type%3D%22application/x-shockwave-flash%22%20width%3D%22425%22%20height%3D%22355%22%3E%3C/embed%3E%3C/object%3E&amp;u=http%3A//www.youtube.com/watch%3Fv%3DSudixyugiX4&amp;l=1', 'YouTube', 650, 1024, true);urchinTracker('/Events/VideoWatch/ShareAggr/MySpace/en_US');return false;">
+                                                       <img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="icn_share_promoted_myspace" width="16" height="16" alt=""/>
+                                                       <span>MySpace</span>
+                                               </a>
+                               </div>
+                       </div>
+                       <div class="watch-recent-shares-div">
+                               <div class="watch-recent-share">
+                                               <a href="http://www.facebook.com/sharer.php?u=http%3A//www.youtube.com/watch%3Fv%3DSudixyugiX4&amp;t=Domino%20Domino%20Logic" target="_blank" onclick="recordServiceUsage('FACEBOOK', 'SudixyugiX4', 'en_US');openPopup('http://www.facebook.com/sharer.php?u=http%3A//www.youtube.com/watch%3Fv%3DSudixyugiX4&amp;t=Domino%20Domino%20Logic', 'YouTube', 440, 620, true);urchinTracker('/Events/VideoWatch/ShareAggr/Facebook/en_US');return false;">
+                                                       <img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="icn_share_promoted_facebook" width="16" height="16" alt=""/>
+                                                       <span>Facebook</span>
+                                               </a>
+                               </div>
+                       </div>
+                       <div class="watch-recent-shares-div">
+                               <div class="watch-recent-share">
+                                               <a href="http://digg.com/submit?phase=2&amp;url=http%3A//www.youtube.com/watch%3Fv%3DSudixyugiX4&amp;title=Domino%20Domino%20Logic&amp;bodytext=Create%20OR%2C%20AND%20and%20XOR%20gates%20out%20of%20dominoes.%20%20Replacement%20for%20TTL%20and%20CMOS.%0D%0A%0D%0Ahttp%3A//neil.fraser.name/&amp;topic=videos_educational" target="_blank" onclick="recordServiceUsage('DIGG', 'SudixyugiX4', 'en_US');openPopup('http://digg.com/submit?phase=2&amp;url=http%3A//www.youtube.com/watch%3Fv%3DSudixyugiX4&amp;title=Domino%20Domino%20Logic&amp;bodytext=Create%20OR%2C%20AND%20and%20XOR%20gates%20out%20of%20dominoes.%20%20Replacement%20for%20TTL%20and%20CMOS.%0D%0A%0D%0Ahttp%3A//neil.fraser.name/&amp;topic=videos_educational', 'YouTube', 650, 1024, true);urchinTracker('/Events/VideoWatch/ShareAggr/Digg/en_US');return false;">
+                                                       <img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="icn_share_promoted_digg" width="16" height="16" alt=""/>
+                                                       <span>Digg</span>
+                                               </a>
+                               </div>
+                       </div>
+       <div class="watch-sharetab-options smgrayText">
+               <div class="watch-sharetab-options-txt" id="more-options">(<a href="#" onclick="urchinTracker('/Events/VideoWatch/Share/MoreOptions/en_US');processShareVideo('SudixyugiX4','watch-share-video-div', 'all'); return false;" rel="nofollow">more share options</a>)</div>
+               <div class="watch-sharetab-options-txt" style="display: none;" id="fewer-options">(<a href="#" onclick="resetSharing(); return false;" rel="nofollow">fewer share options</a>)</div>
+       </div>
+
+                                       <div class="clear"></div>
+                               </div> 
+                               <div id="addToBlogResult" class="watch-action-result">This video will appear on your blog shortly.</div>
+                               <div id="watch-share-video-div" class="watch-more-action-share">Loading...</div>
+                               <div id="shareVideoEmailDiv" class="watch-more-action martT0">Loading...</div>
+                               <div id="shareMessageQuickDiv" class="watch-more-action">Loading...</div> 
+                               <div id="watch-share-blog-quick" class="watch-more-action">Loading...</div> 
+                               <div id="shareVideoResult" class="watch-action-result">Thank you for sharing this video!</div>
+                               
+                       </div>
+                       <div id="watch-tab-favorite-body" class="watch-tab-body">
+                               <div id="watch-add-faves-div" class="watch-more-action">
+                                       <form method="post" action="/watch_ajax" name="addToFavesForm">
+                                               
+                                               <input type="hidden" name="action_add_favorite_video" value="1" />
+                                               <input type="hidden" name="video_id" value="SudixyugiX4" />
+                                               <input type="checkbox" checked name="add_to_favorite" />
+                                       </form>
+                               </div>
+                               <div id="watch-add-faves-loading" class="watch-more-action">Saving...</div>
+                               <div id="watch-remove-faves-div" class="watch-more-action">
+                                       <form method="post" action="/watch_ajax" name="removeFromFavesForm">
+                                               
+                                               <input type="hidden" name="action_remove_favorite_video" value="1" />
+                                               <input type="hidden" name="video_id" value="SudixyugiX4" />
+                                               <input type="checkbox" checked name="remove_from_favorite" />
+                                       </form>
+                               </div>
+                               <div id="watch-add-faves-result">
+                                       <div id="watch-remove-faves" class="watch-action-result">
+                                               <div class="close">(<a href="#" title="close this layer" class="eLink" onclick="watchSelectTab(_gel('watch-tab-share')); return false;">close</a>)</div>
+                                               <div class="spacer">&nbsp;</div>
+                                               This video has been added to your <a href="/my_favorites">favorites</a>.<br/><br/>
+                                       </div>
+                                       <div id="watch-add-faves" class="watch-action-result">
+                                               <div class="close">(<a href="#" title="close this layer" class="eLink" onclick="watchSelectTab(_gel('watch-tab-share')); return false;">close</a>)</div>
+                                               <div class="spacer">&nbsp;</div>
+                                               This video has been removed from your <a href="/my_favorites">favorites</a>.<br/><br/>
+                                       </div>
+                               </div>
+                               <div id="watch-add-to-faves-switch" class="hid">
+                                       <a id="watch-remove-faves-btn" href="#" onclick="removeFromFaves('removeFromFavesForm',event); return false;" class="edit-button">
+                                               <span class="edit-button-leftcap"></span>
+                                               <span class="edit-button-text">Remove from Favorites</span>
+                                               <span class="edit-button-rightcap"></span>
+                                       </a>
+                                       <a id="watch-add-faves-btn" class="edit-button hid" href="#" onclick="addToFaves('addToFavesForm',event); return false;">
+                                               <span class="edit-button-leftcap"></span>
+                                               <span class="edit-button-text">Add to Favorites</span>
+                                               <span class="edit-button-rightcap"></span>
+                                       </a>
+                                       <div class="clear"></div>
+                               </div>
+                                       <div id="addToFavesLogin" class="signInBoxPadding">
+                                                                       <div class="signInBoxBorder">
+       <div class="signInBoxContent">
+                       <strong>Want to add to Favorites?</strong><br/>
+               <a href="               /login?next=/watch%3Fv%3DSudixyugiX4
+"><strong>Sign in to YouTube now!</strong></a>
+               <div class="homepage-border-dotted"></div>
+               <span class="smgrayText">
+               <a href="https://www.google.com/accounts/ServiceLogin?service=youtube&amp;hl=en_US&amp;passive=true&amp;continue=http%3A//www.youtube.com/signup%3Fhl%3Den_US">Sign in with your Google Account!</a>
+               </span>
+               <a href="#" onClick="window.open('/t/help_gaia','login_help','width=580,height=480,resizable=yes,scrollbars=yes,status=0').focus();" rel="nofollow"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0" class="alignMid gaiaHelpBtn" alt=""></a>
+       </div>                  </div>  
+
+                                       </div>
+                       </div>
+                       <div id="watch-tab-playlists-body" class="watch-tab-body">
+                               <div id="addToPlaylistDiv" class="watch-more-action">Loading...</div>
+                               <div id="addToPlaylistResult" class="watch-action-result">The video has been added to your playlist.</div>
+                                       <div id="addToPlaylistLogin" class="signInBoxPadding">
+                                                                       <div class="signInBoxBorder">
+       <div class="signInBoxContent">
+                       <strong>Want to add to Playlists?</strong><br/>
+               <a href="               /login?next=/watch%3Fv%3DSudixyugiX4
+"><strong>Sign in to YouTube now!</strong></a>
+               <div class="homepage-border-dotted"></div>
+               <span class="smgrayText">
+               <a href="https://www.google.com/accounts/ServiceLogin?service=youtube&amp;hl=en_US&amp;passive=true&amp;continue=http%3A//www.youtube.com/signup%3Fhl%3Den_US">Sign in with your Google Account!</a>
+               </span>
+               <a href="#" onClick="window.open('/t/help_gaia','login_help','width=580,height=480,resizable=yes,scrollbars=yes,status=0').focus();" rel="nofollow"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0" class="alignMid gaiaHelpBtn" alt=""></a>
+       </div>                  </div>  
+
+                                       </div>
+                       </div>
+                       <div id="watch-tab-flag-body" class="watch-tab-body">
+                               <div id="inappropriateVidDiv" class="watch-more-action">Loading...</div>
+                               <div id="inappropriateMsgsDiv" class="hid"></div>
+                                       <div id="inappropriateMsgLogin" class="signInBoxPadding">
+                                                                       <div class="signInBoxBorder">
+       <div class="signInBoxContent">
+                       <strong>Want to flag a video?</strong><br/>
+               <a href="               /login?next=/watch%3Fv%3DSudixyugiX4
+"><strong>Sign in to YouTube now!</strong></a>
+               <div class="homepage-border-dotted"></div>
+               <span class="smgrayText">
+               <a href="https://www.google.com/accounts/ServiceLogin?service=youtube&amp;hl=en_US&amp;passive=true&amp;continue=http%3A//www.youtube.com/signup%3Fhl%3Den_US">Sign in with your Google Account!</a>
+               </span>
+               <a href="#" onClick="window.open('/t/help_gaia','login_help','width=580,height=480,resizable=yes,scrollbars=yes,status=0').focus();" rel="nofollow"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0" class="alignMid gaiaHelpBtn" alt=""></a>
+       </div>                  </div>  
+
+                                       </div>
+                       </div>
+               </div>
+       </div>
+
+       
+
+
+
+       <div id="watch-comments-stats">
+               <table cellpadding="0" cellspacing="0" class="watch-tabs">
+                       <tr>
+                               <td id="watch-tab-commentary" onclick="watchSelectTab(this); urchinTracker('/Events/VideoWatch/InfoTab/Commentary');" class="watch-tab-sel watch-tab-first">
+                                       <a href="#" onclick="return false">Commentary</a>
+                               </td>
+                               <td id="watch-tab-stats" onclick="watchSelectTab(this); watchExpandStatBody(); urchinTracker('/Events/VideoWatch/InfoTab/Stats');">
+                                       <a href="#" onclick="return false">Statistics &amp; Data</a>
+                               </td>
+                       </tr>
+               </table>
+               <div class="watch-tab-contents">
+                       <div id="watch-tab-commentary-body" class="watch-tab-body watch-tab-sel">
+                                       <div id="watch-comments-summary">
+               Video Responses: <span id="watch-comments-numresponses">0</span>
+               Text Comments: <span class="number-of-comments">180</span>
+       </div>
+
+       <div class="expand-panel 
+ small-expand-panel">
+                       <div class="floatR">
+                                       <a class="hLink bold" href="    /login?next=/video_response_upload%3Fv%3DSudixyugiX4
+" onclick="urchinTracker('/Events/VideoWatch/PostVideoResponseSignIn');">Sign in to post a Video Response</a>
+                       </div>
+               <a href="#" onclick="togglePanel(this.parentNode); this.blur(); return false;" class="expand-header"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="" class="arrow" />Video Responses <span class="expand-header-stat">(0)</span></a>
+               <div id="watch-video-responses-none" class="expand-content">
+                       This video has <b>no Responses</b>. Be the first to <a class="bold" href="/video_response_upload?v=SudixyugiX4">Post a Video Response</a>.
+               </div>
+       </div>
+
+       <div class="expand-panel expanded small-expand-panel">
+               <div id="watch-comment-post-comment">
+                       <a href="#" class="hLink bold" onclick="showCommentReplyForm('main_comment2', '', false); urchinTracker('/Events/VideoWatch/PostTextCommentSignin'); return false;" id="post_text_comment_link" rel="nofollow">Sign in to post a Comment</a>
+               </div>
+               <a href="#" onclick="togglePanel(this.parentNode); this.blur(); return false;" class="expand-header"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="" class="arrow" />Text Comments <span class="expand-header-stat">(180)</span></a>
+
+               <div class="clear"></div>
+               <div class="expand-content">
+                               <div id="watch-comment-filter">
+                                               <div style="margin:5px;">
+               <form action="" name="comments_filter">
+                       <span class="smallText"><b>Show:</b></span>
+                       <select class="xsmallText" name="commentthreshold" onChange="showLoading('recent_comments', this.value);getUrlXMLResponseAndFillDiv('/watch_ajax?v=SudixyugiX4&amp;savethreshold=yes&amp;action_get_comments=1&amp;p=1&amp;page_size=10&amp;commentthreshold='+this.value, 'recent_comments');">
+                               <option  value="-1000">all comments</option>
+                               <option  value="10">excellent (+10 or better)</option>
+                               <option  value="5">great (+5 or better)</option>
+                               <option  value="0">good (0 or better)</option>
+                               <option  selected="selected"  value="-5">average (-5 or better)</option>
+                               <option  value="-10">poor (-10 or better)</option>
+                       </select> 
+                       <span class="smallText">
+                               <a href="#" class="eLink" onClick="return false;" onMouseover="showDiv('commentsHelp');return false;" onMouseout="hideDiv('commentsHelp');">Help</a>
+                               <span id="commentsHelp" class="smallText watch-comments-tooltip">
+                               Change this to see only comments above a certain value.<br>Change the value of a comment by clicking on a thumb.
+                               </span>
+                       </span>
+               </form>
+       </div>
+
+                               </div>
+
+                       <div id="div_main_comment2"></div>
+
+                               <div id="recent_comments" class="comments">
+                                                                       
+
+
+
+
+
+
+                       <div id="WnqSelYkE0c" class="watch-comment-entry">
+
+
+               <div class="watch-comment-head">
+                       <div class="watch-comment-info">
+                               <a class="watch-comment-auth" href="/user/cyborgtroy" rel="nofollow">cyborgtroy</a>
+                               <span class="watch-comment-time"> (1 week ago) </span>
+                               <a id="show_link_WnqSelYkE0c"  class="watch-comment-head-link" onclick="displayHideCommentLink('WnqSelYkE0c')">Show</a>
+                               <a id="hide_link_WnqSelYkE0c" class="watch-comment-head-link" onclick="displayShowCommentLink('WnqSelYkE0c')">Hide</a>
+                       </div>
+                                       <div id="comment_vote_WnqSelYkE0c" class="watch-comment-voting">
+        
+               <span class="watch-comment-score watch-comment-gray"> 0</span>
+
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-down" title="Poor comment" alt="Poor comment" onMouseover="loginMsg('WnqSelYkE0c', 1);" onMouseout="loginMsg('WnqSelYkE0c', 0);"></a>
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-up" title="Good comment" alt="Good comment" onMouseover="loginMsg('WnqSelYkE0c', 1);" onMouseout="loginMsg('WnqSelYkE0c', 0);"></a>
+               <span id="comment_msg_WnqSelYkE0c" class="watch-comment-msg"></span>
+       </div>
+
+                       
+       <span id="comment_spam_bug_WnqSelYkE0c" class="watch-comment-spam-bug">Marked as spam</span>
+       <div id="reply_comment_form_id_WnqSelYkE0c" class="watch-comment-action">
+                       <a onclick="showCommentReplyForm('comment_form_id_WnqSelYkE0c', 'WnqSelYkE0c', false)">Reply</a> 
+
+
+
+
+
+
+       </div>
+
+                       <div class="clearL"></div>
+               </div>
+                       <div id="comment_body_WnqSelYkE0c" >
+                               <div  class="watch-comment-body">
+                                       I think I tried to do this sort of thing once. AND gates rather befuddled me.<br/><br/>And how would NOT work?
+                               </div>
+                               <div id="div_comment_form_id_WnqSelYkE0c"></div>
+                       </div>
+
+
+       </div> 
+
+
+
+                       <div id="DwB-xH8Sdfc" class="watch-comment-entry">
+
+
+               <div class="watch-comment-head">
+                       <div class="watch-comment-info">
+                               <a class="watch-comment-auth" href="/user/jefersonrod" rel="nofollow">jefersonrod</a>
+                               <span class="watch-comment-time"> (2 weeks ago) </span>
+                               <a id="show_link_DwB-xH8Sdfc"  class="watch-comment-head-link" onclick="displayHideCommentLink('DwB-xH8Sdfc')">Show</a>
+                               <a id="hide_link_DwB-xH8Sdfc" class="watch-comment-head-link" onclick="displayShowCommentLink('DwB-xH8Sdfc')">Hide</a>
+                       </div>
+                                       <div id="comment_vote_DwB-xH8Sdfc" class="watch-comment-voting">
+        
+               <span class="watch-comment-score watch-comment-gray"> 0</span>
+
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-down" title="Poor comment" alt="Poor comment" onMouseover="loginMsg('DwB-xH8Sdfc', 1);" onMouseout="loginMsg('DwB-xH8Sdfc', 0);"></a>
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-up" title="Good comment" alt="Good comment" onMouseover="loginMsg('DwB-xH8Sdfc', 1);" onMouseout="loginMsg('DwB-xH8Sdfc', 0);"></a>
+               <span id="comment_msg_DwB-xH8Sdfc" class="watch-comment-msg"></span>
+       </div>
+
+                       
+       <span id="comment_spam_bug_DwB-xH8Sdfc" class="watch-comment-spam-bug">Marked as spam</span>
+       <div id="reply_comment_form_id_DwB-xH8Sdfc" class="watch-comment-action">
+                       <a onclick="showCommentReplyForm('comment_form_id_DwB-xH8Sdfc', 'DwB-xH8Sdfc', false)">Reply</a> 
+
+
+
+
+
+
+       </div>
+
+                       <div class="clearL"></div>
+               </div>
+                       <div id="comment_body_DwB-xH8Sdfc" >
+                               <div  class="watch-comment-body">
+                                       awesome
+                               </div>
+                               <div id="div_comment_form_id_DwB-xH8Sdfc"></div>
+                       </div>
+
+
+       </div> 
+
+
+
+                       <div id="Tg6hosve84k" class="watch-comment-entry">
+
+
+               <div class="watch-comment-head">
+                       <div class="watch-comment-info">
+                               <a class="watch-comment-auth" href="/user/Tehw00tz" rel="nofollow">Tehw00tz</a>
+                               <span class="watch-comment-time"> (2 weeks ago) </span>
+                               <a id="show_link_Tg6hosve84k"  class="watch-comment-head-link" onclick="displayHideCommentLink('Tg6hosve84k')">Show</a>
+                               <a id="hide_link_Tg6hosve84k" class="watch-comment-head-link" onclick="displayShowCommentLink('Tg6hosve84k')">Hide</a>
+                       </div>
+                                       <div id="comment_vote_Tg6hosve84k" class="watch-comment-voting">
+        
+               <span class="watch-comment-score watch-comment-gray"> 0</span>
+
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-down" title="Poor comment" alt="Poor comment" onMouseover="loginMsg('Tg6hosve84k', 1);" onMouseout="loginMsg('Tg6hosve84k', 0);"></a>
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-up" title="Good comment" alt="Good comment" onMouseover="loginMsg('Tg6hosve84k', 1);" onMouseout="loginMsg('Tg6hosve84k', 0);"></a>
+               <span id="comment_msg_Tg6hosve84k" class="watch-comment-msg"></span>
+       </div>
+
+                       
+       <span id="comment_spam_bug_Tg6hosve84k" class="watch-comment-spam-bug">Marked as spam</span>
+       <div id="reply_comment_form_id_Tg6hosve84k" class="watch-comment-action">
+                       <a onclick="showCommentReplyForm('comment_form_id_Tg6hosve84k', 'Tg6hosve84k', false)">Reply</a> 
+
+
+
+
+
+
+       </div>
+
+                       <div class="clearL"></div>
+               </div>
+                       <div id="comment_body_Tg6hosve84k" >
+                               <div  class="watch-comment-body">
+                                       Jesus you must have a lot of patience to be able to knock those dominos down and put them back up just to knock them down again
+                               </div>
+                               <div id="div_comment_form_id_Tg6hosve84k"></div>
+                       </div>
+
+
+       </div> 
+
+
+
+                       <div id="otkc1wtuTKQ" class="watch-comment-entry">
+
+
+               <div class="watch-comment-head">
+                       <div class="watch-comment-info">
+                               <a class="watch-comment-auth" href="/user/iamneuron" rel="nofollow">iamneuron</a>
+                               <span class="watch-comment-time"> (3 weeks ago) </span>
+                               <a id="show_link_otkc1wtuTKQ"  class="watch-comment-head-link" onclick="displayHideCommentLink('otkc1wtuTKQ')">Show</a>
+                               <a id="hide_link_otkc1wtuTKQ" class="watch-comment-head-link" onclick="displayShowCommentLink('otkc1wtuTKQ')">Hide</a>
+                       </div>
+                                       <div id="comment_vote_otkc1wtuTKQ" class="watch-comment-voting">
+        
+       <span class="watch-comment-score watch-comment-red">&nbsp;-2</span>
+
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-down" title="Poor comment" alt="Poor comment" onMouseover="loginMsg('otkc1wtuTKQ', 1);" onMouseout="loginMsg('otkc1wtuTKQ', 0);"></a>
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-up" title="Good comment" alt="Good comment" onMouseover="loginMsg('otkc1wtuTKQ', 1);" onMouseout="loginMsg('otkc1wtuTKQ', 0);"></a>
+               <span id="comment_msg_otkc1wtuTKQ" class="watch-comment-msg"></span>
+       </div>
+
+                       
+       <span id="comment_spam_bug_otkc1wtuTKQ" class="watch-comment-spam-bug">Marked as spam</span>
+       <div id="reply_comment_form_id_otkc1wtuTKQ" class="watch-comment-action">
+                       <a onclick="showCommentReplyForm('comment_form_id_otkc1wtuTKQ', 'otkc1wtuTKQ', false)">Reply</a> 
+
+
+
+
+
+
+       </div>
+
+                       <div class="clearL"></div>
+               </div>
+                       <div id="comment_body_otkc1wtuTKQ" >
+                               <div  class="watch-comment-body">
+                                       Where is NAND?
+                               </div>
+                               <div id="div_comment_form_id_otkc1wtuTKQ"></div>
+                       </div>
+
+
+       </div> 
+
+
+
+                       <div id="1RMbbU9Emuc" class="watch-comment-entry">
+
+               <div class="watch-comment-entry-reply">
+
+               <div class="watch-comment-head">
+                       <div class="watch-comment-info">
+                               <a class="watch-comment-auth" href="/user/TiCLer" rel="nofollow">TiCLer</a>
+                               <span class="watch-comment-time"> (2 weeks ago) </span>
+                               <a id="show_link_1RMbbU9Emuc"  class="watch-comment-head-link" onclick="displayHideCommentLink('1RMbbU9Emuc')">Show</a>
+                               <a id="hide_link_1RMbbU9Emuc" class="watch-comment-head-link" onclick="displayShowCommentLink('1RMbbU9Emuc')">Hide</a>
+                       </div>
+                                       <div id="comment_vote_1RMbbU9Emuc" class="watch-comment-voting">
+       
+               <span class="watch-comment-score watch-comment-green">+2</span>
+
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-down" title="Poor comment" alt="Poor comment" onMouseover="loginMsg('1RMbbU9Emuc', 1);" onMouseout="loginMsg('1RMbbU9Emuc', 0);"></a>
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-up" title="Good comment" alt="Good comment" onMouseover="loginMsg('1RMbbU9Emuc', 1);" onMouseout="loginMsg('1RMbbU9Emuc', 0);"></a>
+               <span id="comment_msg_1RMbbU9Emuc" class="watch-comment-msg"></span>
+       </div>
+
+                       
+       <span id="comment_spam_bug_1RMbbU9Emuc" class="watch-comment-spam-bug">Marked as spam</span>
+       <div id="reply_comment_form_id_1RMbbU9Emuc" class="watch-comment-action">
+                       <a onclick="showCommentReplyForm('comment_form_id_1RMbbU9Emuc', '1RMbbU9Emuc', false)">Reply</a> 
+
+
+
+
+
+
+       </div>
+
+                       <div class="clearL"></div>
+               </div>
+                       <div id="comment_body_1RMbbU9Emuc" >
+                               <div  class="watch-comment-body">
+                                       Lurk moar!
+                               </div>
+                               <div id="div_comment_form_id_1RMbbU9Emuc"></div>
+                       </div>
+
+               </div>
+
+       </div> 
+
+
+
+                       <div id="UxBA-AmVCh8" class="watch-comment-entry">
+
+
+               <div class="watch-comment-head">
+                       <div class="watch-comment-info">
+                               <a class="watch-comment-auth" href="/user/smasher32" rel="nofollow">smasher32</a>
+                               <span class="watch-comment-time"> (3 weeks ago) </span>
+                               <a id="show_link_UxBA-AmVCh8"  class="watch-comment-head-link" onclick="displayHideCommentLink('UxBA-AmVCh8')">Show</a>
+                               <a id="hide_link_UxBA-AmVCh8" class="watch-comment-head-link" onclick="displayShowCommentLink('UxBA-AmVCh8')">Hide</a>
+                       </div>
+                                       <div id="comment_vote_UxBA-AmVCh8" class="watch-comment-voting">
+        
+       <span class="watch-comment-score watch-comment-red">&nbsp;-3</span>
+
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-down" title="Poor comment" alt="Poor comment" onMouseover="loginMsg('UxBA-AmVCh8', 1);" onMouseout="loginMsg('UxBA-AmVCh8', 0);"></a>
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-up" title="Good comment" alt="Good comment" onMouseover="loginMsg('UxBA-AmVCh8', 1);" onMouseout="loginMsg('UxBA-AmVCh8', 0);"></a>
+               <span id="comment_msg_UxBA-AmVCh8" class="watch-comment-msg"></span>
+       </div>
+
+                       
+       <span id="comment_spam_bug_UxBA-AmVCh8" class="watch-comment-spam-bug">Marked as spam</span>
+       <div id="reply_comment_form_id_UxBA-AmVCh8" class="watch-comment-action">
+                       <a onclick="showCommentReplyForm('comment_form_id_UxBA-AmVCh8', 'UxBA-AmVCh8', false)">Reply</a> 
+
+
+
+
+
+
+       </div>
+
+                       <div class="clearL"></div>
+               </div>
+                       <div id="comment_body_UxBA-AmVCh8" >
+                               <div  class="watch-comment-body">
+                                       dont quite understand the logic behind it, but seems interesting.
+                               </div>
+                               <div id="div_comment_form_id_UxBA-AmVCh8"></div>
+                       </div>
+
+
+       </div> 
+
+
+
+                       <div id="Sgu4Il3LYWY" class="watch-comment-entry">
+
+
+               <div class="watch-comment-head">
+                       <div class="watch-comment-info">
+                               <a class="watch-comment-auth" href="/user/MBieroegel" rel="nofollow">MBieroegel</a>
+                               <span class="watch-comment-time"> (3 weeks ago) </span>
+                               <a id="show_link_Sgu4Il3LYWY"  class="watch-comment-head-link" onclick="displayHideCommentLink('Sgu4Il3LYWY')">Show</a>
+                               <a id="hide_link_Sgu4Il3LYWY" class="watch-comment-head-link" onclick="displayShowCommentLink('Sgu4Il3LYWY')">Hide</a>
+                       </div>
+                                       <div id="comment_vote_Sgu4Il3LYWY" class="watch-comment-voting">
+        
+               <span class="watch-comment-score watch-comment-gray"> 0</span>
+
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-down" title="Poor comment" alt="Poor comment" onMouseover="loginMsg('Sgu4Il3LYWY', 1);" onMouseout="loginMsg('Sgu4Il3LYWY', 0);"></a>
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-up" title="Good comment" alt="Good comment" onMouseover="loginMsg('Sgu4Il3LYWY', 1);" onMouseout="loginMsg('Sgu4Il3LYWY', 0);"></a>
+               <span id="comment_msg_Sgu4Il3LYWY" class="watch-comment-msg"></span>
+       </div>
+
+                       
+       <span id="comment_spam_bug_Sgu4Il3LYWY" class="watch-comment-spam-bug">Marked as spam</span>
+       <div id="reply_comment_form_id_Sgu4Il3LYWY" class="watch-comment-action">
+                       <a onclick="showCommentReplyForm('comment_form_id_Sgu4Il3LYWY', 'Sgu4Il3LYWY', false)">Reply</a> 
+
+
+
+
+
+
+       </div>
+
+                       <div class="clearL"></div>
+               </div>
+                       <div id="comment_body_Sgu4Il3LYWY" >
+                               <div  class="watch-comment-body">
+                                       Yeah cool... now i know, how it work's ;-)
+                               </div>
+                               <div id="div_comment_form_id_Sgu4Il3LYWY"></div>
+                       </div>
+
+
+       </div> 
+
+
+
+                       <div id="b9g4OklU3GU" class="watch-comment-entry">
+
+
+               <div class="watch-comment-head">
+                       <div class="watch-comment-info">
+                               <a class="watch-comment-auth" href="/user/AnotherGlenn" rel="nofollow">AnotherGlenn</a>
+                               <span class="watch-comment-time"> (3 weeks ago) </span>
+                               <a id="show_link_b9g4OklU3GU"  class="watch-comment-head-link" onclick="displayHideCommentLink('b9g4OklU3GU')">Show</a>
+                               <a id="hide_link_b9g4OklU3GU" class="watch-comment-head-link" onclick="displayShowCommentLink('b9g4OklU3GU')">Hide</a>
+                       </div>
+                                       <div id="comment_vote_b9g4OklU3GU" class="watch-comment-voting">
+       
+               <span class="watch-comment-score watch-comment-green">+3</span>
+
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-down" title="Poor comment" alt="Poor comment" onMouseover="loginMsg('b9g4OklU3GU', 1);" onMouseout="loginMsg('b9g4OklU3GU', 0);"></a>
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-up" title="Good comment" alt="Good comment" onMouseover="loginMsg('b9g4OklU3GU', 1);" onMouseout="loginMsg('b9g4OklU3GU', 0);"></a>
+               <span id="comment_msg_b9g4OklU3GU" class="watch-comment-msg"></span>
+       </div>
+
+                       
+       <span id="comment_spam_bug_b9g4OklU3GU" class="watch-comment-spam-bug">Marked as spam</span>
+       <div id="reply_comment_form_id_b9g4OklU3GU" class="watch-comment-action">
+                       <a onclick="showCommentReplyForm('comment_form_id_b9g4OklU3GU', 'b9g4OklU3GU', false)">Reply</a> 
+
+
+
+
+
+
+       </div>
+
+                       <div class="clearL"></div>
+               </div>
+                       <div id="comment_body_b9g4OklU3GU" >
+                               <div  class="watch-comment-body">
+                                       LOL, nerdier than me :)
+                               </div>
+                               <div id="div_comment_form_id_b9g4OklU3GU"></div>
+                       </div>
+
+
+       </div> 
+
+
+
+                       <div id="TsZyLndcTxw" class="watch-comment-entry">
+
+
+               <div class="watch-comment-head">
+                       <div class="watch-comment-info">
+                               <a class="watch-comment-auth" href="/user/thailsoff" rel="nofollow">thailsoff</a>
+                               <span class="watch-comment-time"> (3 weeks ago) </span>
+                               <a id="show_link_TsZyLndcTxw"  class="watch-comment-head-link" onclick="displayHideCommentLink('TsZyLndcTxw')">Show</a>
+                               <a id="hide_link_TsZyLndcTxw" class="watch-comment-head-link" onclick="displayShowCommentLink('TsZyLndcTxw')">Hide</a>
+                       </div>
+                                       <div id="comment_vote_TsZyLndcTxw" class="watch-comment-voting">
+       
+               <span class="watch-comment-score watch-comment-green">+3</span>
+
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-down" title="Poor comment" alt="Poor comment" onMouseover="loginMsg('TsZyLndcTxw', 1);" onMouseout="loginMsg('TsZyLndcTxw', 0);"></a>
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-up" title="Good comment" alt="Good comment" onMouseover="loginMsg('TsZyLndcTxw', 1);" onMouseout="loginMsg('TsZyLndcTxw', 0);"></a>
+               <span id="comment_msg_TsZyLndcTxw" class="watch-comment-msg"></span>
+       </div>
+
+                       
+       <span id="comment_spam_bug_TsZyLndcTxw" class="watch-comment-spam-bug">Marked as spam</span>
+       <div id="reply_comment_form_id_TsZyLndcTxw" class="watch-comment-action">
+                       <a onclick="showCommentReplyForm('comment_form_id_TsZyLndcTxw', 'TsZyLndcTxw', false)">Reply</a> 
+
+
+
+
+
+
+       </div>
+
+                       <div class="clearL"></div>
+               </div>
+                       <div id="comment_body_TsZyLndcTxw" >
+                               <div  class="watch-comment-body">
+                                       O my f***ing GOD ! the Xor is PERFECT ! lol ! very very good movie.
+                               </div>
+                               <div id="div_comment_form_id_TsZyLndcTxw"></div>
+                       </div>
+
+
+       </div> 
+
+
+
+                       <div id="CyW_Ji2DUgA" class="watch-comment-entry">
+
+
+               <div class="watch-comment-head">
+                       <div class="watch-comment-info">
+                               <a class="watch-comment-auth" href="/user/smartinp" rel="nofollow">smartinp</a>
+                               <span class="watch-comment-time"> (3 weeks ago) </span>
+                               <a id="show_link_CyW_Ji2DUgA"  class="watch-comment-head-link" onclick="displayHideCommentLink('CyW_Ji2DUgA')">Show</a>
+                               <a id="hide_link_CyW_Ji2DUgA" class="watch-comment-head-link" onclick="displayShowCommentLink('CyW_Ji2DUgA')">Hide</a>
+                       </div>
+                                       <div id="comment_vote_CyW_Ji2DUgA" class="watch-comment-voting">
+        
+               <span class="watch-comment-score watch-comment-gray"> 0</span>
+
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-down" title="Poor comment" alt="Poor comment" onMouseover="loginMsg('CyW_Ji2DUgA', 1);" onMouseout="loginMsg('CyW_Ji2DUgA', 0);"></a>
+               <a href="/login?next=/watch%3Fv%3DSudixyugiX4"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="watch-comment-up" title="Good comment" alt="Good comment" onMouseover="loginMsg('CyW_Ji2DUgA', 1);" onMouseout="loginMsg('CyW_Ji2DUgA', 0);"></a>
+               <span id="comment_msg_CyW_Ji2DUgA" class="watch-comment-msg"></span>
+       </div>
+
+                       
+       <span id="comment_spam_bug_CyW_Ji2DUgA" class="watch-comment-spam-bug">Marked as spam</span>
+       <div id="reply_comment_form_id_CyW_Ji2DUgA" class="watch-comment-action">
+                       <a onclick="showCommentReplyForm('comment_form_id_CyW_Ji2DUgA', 'CyW_Ji2DUgA', false)">Reply</a> 
+
+
+
+
+
+
+       </div>
+
+                       <div class="clearL"></div>
+               </div>
+                       <div id="comment_body_CyW_Ji2DUgA" >
+                               <div  class="watch-comment-body">
+                                       WOW xD
+                               </div>
+                               <div id="div_comment_form_id_CyW_Ji2DUgA"></div>
+                       </div>
+
+
+       </div> 
+
+
+
+               <div class="watch-comment-pagination">
+<div class="floatR">
+
+<span class="watch-comment-pnum"><a href="#" onclick="showLoading('recent_comments');;getUrlXMLResponseAndFillDiv('/watch_ajax?v=SudixyugiX4&action_get_comments=1&p=2&commentthreshold=-5&page_size=10', 'recent_comments'); urchinTracker('/Events/VideoWatch/NextCommentPage'); return false;">Next</a></span>
+</div>
+
+<div class="floatL">
+       <span class="watch-comment-pnum">Pages:</span>
+                       <span class="watch-comment-pnum">1</span>
+                       <span class="watch-comment-pnum"><a href="#" onclick="showLoading('recent_comments');getUrlXMLResponseAndFillDiv('/watch_ajax?v=SudixyugiX4&action_get_comments=1&p=2&commentthreshold=-5&page_size=10', 'recent_comments'); urchinTracker('/Events/VideoWatch/SpecificCommentPage'); return false;">2</a></span>
+                       <span class="watch-comment-pnum"><a href="#" onclick="showLoading('recent_comments');getUrlXMLResponseAndFillDiv('/watch_ajax?v=SudixyugiX4&action_get_comments=1&p=3&commentthreshold=-5&page_size=10', 'recent_comments'); urchinTracker('/Events/VideoWatch/SpecificCommentPage'); return false;">3</a></span>
+               &#160;...&#160;
+               </b>
+</div>
+<div class="clear"></div>
+</div>
+
+
+                               </div> <!-- end recent_comments -->
+
+                                       <div id="watch-comment-view-all"><a href="/comment_servlet?all_comments&amp;v=SudixyugiX4&amp;fromurl=/watch%3Fv%3DSudixyugiX4" class="hLink" onmousedown="urchinTracker('/Events/VideoWatch/ViewAllComments');" rel="nofollow">View all 180 comments</a></div>
+
+                               <div id="watch-comment-post">
+                                       <h2>Would you like to comment?</h2>
+                                       <div>
+                                               <a href="/signup?next=/watch%3Fv%3DSudixyugiX4">Join YouTube</a> for a free account, or
+                                               <a href="/login?next=/watch%3Fv%3DSudixyugiX4">sign in</a> if you are already a member.
+                                       </div>
+                               </div> <!-- end post a comment section -->
+
+                               <div id="div_main_comment"></div>
+               </div> 
+       </div> 
+
+
+                       </div>
+                       <div id="watch-tab-stats-body" class="watch-tab-body">
+                                       <table id="watch-some-stats" cellpadding="0" cellspacing="0">
+               <tr>
+                       <td class="post-date">Added: <span class="watch-stat">June 29, 2008</span></td>
+                       <td class="number-of-views">Views: <span class="watch-stat">141,905</span></td>
+                       <td>Ratings: <span class="watch-stat">557</span></td>
+               </tr>
+               <tr>
+                       <td>Responses: <a class="hLink bold" href="/video_response_view_all?v=SudixyugiX4" onmousedown="urchinTracker('/Events/VideoWatch/WatchVideoResponses');">0</a></td>
+                       <td>Comments: <a href="/comment_servlet?all_comments&amp;v=SudixyugiX4" class="hLink bold">180</a></td>
+                       <td>
+                               <span class="watch-stat"><span class="lightLabel">Favorited:</span> 575 times</span>
+                       </td>
+               </tr>
+       </table>
+
+
+
+
+       
+
+       <div id="watch-honors" class="expand-panel small-expand-panel">
+               <a href="#" onclick="toggleFullStats(); this.blur(); return false;" class="expand-header"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="" class="arrow" />Honors for this video <span class="expand-header-stat">(0)</span></a>
+               <div class="expand-content">
+                       <div id="additionalStatsDiv" class="watch-full-stats-class">Loading...</div>
+               </div>
+       </div>
+
+
+       <div id="watch-refer-div" class="expand-panel expanded small-expand-panel">
+               <a href="#" onclick="toggleLinkStats(); this.blur(); return false;" class="expand-header"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="" class="arrow" />Sites linking to this video <span class="expand-header-stat">(5)</span></a>
+               <div class="expand-content">
+       
+                       <div id="watch-refer-list">
+                                                               <div class="header">
+                               <div class="watch-ref-item">Clicks</div>
+                               <div class="floatL">URL</div>
+                               <div class="clearL"></div>
+                       </div>
+
+                                       <div class="watch-ref-item">7,590</div>
+                                       <div>
+                                               <a class="hLink" rel="nofollow" href="http://www.wykop.pl/link/79525/logiczne-domino" target="_top">http://www.wykop.pl/link/79525/logiczne-domino</a>
+                                       
+                                       </div>
+                               <div class="clearL"></div>
+                                       <div class="watch-ref-item">5,955</div>
+                                       <div>
+                                               <a class="hLink" rel="nofollow" href="http://www.microsiervos.com/" target="_top">http://www.microsiervos.com/</a>
+                                       
+                                       </div>
+                               <div class="clearL"></div>
+                                       <div class="watch-ref-item">5,763</div>
+                                       <div>
+                                               <a class="hLink" rel="nofollow" href="http://www.boingboing.net/" target="_top">http://www.boingboing.net/</a>
+                                       
+                                       </div>
+                               <div class="clearL"></div>
+                                       <div class="watch-ref-item">4,691</div>
+                                       <div>
+                                               <a class="hLink" rel="nofollow" href="http://boingboing.net/" target="_top">http://boingboing.net/</a>
+                                       
+                                       </div>
+                               <div class="clearL"></div>
+                                       <div class="watch-ref-item">3,874</div>
+                                       <div>
+                                               <a class="hLink" rel="nofollow" href="http://www.hardocp.com/" target="_top">http://www.hardocp.com/</a>
+                                       
+                                       </div>
+                               <div class="clearL"></div>
+               <div class="clearL"></div>
+
+                       </div>
+               </div>
+       </div>
+
+
+
+                       </div>
+               </div>
+       </div>
+
+</div> 
+
+<div id="watch-other-vids">
+
+
+       <div id="watch-channel-vids-div" class="watch-wrapper vcard">
+               <div id="watch-channel-vids-top">
+                       <div id="watch-channel-icon" class="user-thumb-medium"><div>
+                               <a class="url" href="/user/Odo987" onmousedown="urchinTracker('/Events/VideoWatch/ChannelIconLink');"><img src="/img/no_videos_140.jpg" class="photo" alt="Channel Icon"></a>
+                       </div></div>
+                       <div id="subscribeDiv" class="watch-channel-subscribe">
+                               <a class="action-button" onclick="subscribe(watchUsername, subscribeaxc, true); return false;" title="subscribe to Odo987's videos">
+                                       <span class="action-button-leftcap"></span>
+                                       <span class="action-button-text">Subscribe</span>
+                                       <span class="action-button-rightcap"></span>
+                               </a>
+                       </div>
+                       <div id="unsubscribeDiv" class="hid watch-channel-subscribe">
+                               <a class="action-button inactive" onclick="unsubscribe(watchUsername, subscribeaxc); return false;">
+                                       <span class="action-button-leftcap"></span>
+                                       <span class="action-button-text">Unsubscribe</span>
+                                       <span class="action-button-rightcap"></span>
+                               </a>
+                       </div>
+                       <div id="watch-channel-stats">
+                               <span class="watch-channel-stat">From: </span> <a href="/user/Odo987" onmousedown="urchinTracker('/Events/VideoWatch/ChannelNameLink');" class="fn n contributor">Odo987</a><br>
+                               <span class="watch-channel-stat">Joined:</span> 2 years ago<br>
+                               <span class="watch-channel-stat">Videos:</span> <span id="watch-channel-videos">5</span>
+                       </div>
+                       <div class="clear"></div>
+               </div> 
+               <div id="subscribeMessage"></div>
+
+               <div id="subscribeLoginInvite" class="signInBoxBorder" style="background-color:#ffffff;margin-top:8px;display:none;">
+                                               <div class="signInBoxContent">
+                       <strong>Want to Subscribe?</strong><br/>
+               <a href="               /login?next=/watch%3Fv%3DSudixyugiX4
+"><strong>Sign in to YouTube now!</strong></a>
+               <div class="homepage-border-dotted"></div>
+               <span class="smgrayText">
+               <a href="https://www.google.com/accounts/ServiceLogin?service=youtube&amp;hl=en_US&amp;passive=true&amp;continue=http%3A//www.youtube.com/signup%3Fhl%3Den_US">Sign in with your Google Account!</a>
+               </span>
+               <a href="#" onClick="window.open('/t/help_gaia','login_help','width=580,height=480,resizable=yes,scrollbars=yes,status=0').focus();" rel="nofollow"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0" class="alignMid gaiaHelpBtn" alt=""></a>
+       </div>  
+
+               </div> 
+
+                       <div id="watch-video-details" class="expand-panel">
+               <div id="watch-video-details-inner">
+
+                       <div class="collapse-content">
+                               <div>
+                                       <span class="watch-channel-stat">Added:</span>
+                                       <span class="watch-video-added post-date">June 29, 2008</span>
+                                       <span class="smallText">(<a href="#" class="eLink" onClick="togglePanel(ref('watch-video-details')); urchinTracker('/Events/VideoWatch/VideoDescMoreInfo'); savePanelState(); return false;">More info</a>)</span>
+                               </div>
+
+                               <div  class="watch-video-desc">
+                                       <span  class="description">Create OR, AND and XOR gates out of dominoes.  ... </span>
+                               </div>
+                       </div>
+       
+                       <div class="expand-content">
+                               <div>
+                                       <span class="watch-channel-stat">Added:</span>
+                                       <span class="watch-video-added post-date">June 29, 2008</span>
+                                       <span class="smallText">(<a href="#" class="eLink" onClick="togglePanel(ref('watch-video-details')); urchinTracker('/Events/VideoWatch/VideoDescLessInfo'); savePanelState(); return false;">Less info</a>)</span>
+                               </div>
+                               
+                               <div  class="watch-video-desc description">
+                                       <span >Create OR, AND and XOR gates out of dominoes.  Replacement for TTL and CMOS.<br/><br/><a href="http://neil.fraser.name/" target="_blank" title="http://neil.fraser.name/" rel="nofollow" dir="ltr">http://neil.fraser.name/</a> </span> 
+                               </div>
+
+                               <div>
+                                       <span class="watch-channel-stat">Category:&nbsp;</span>
+                                       <a href="/browse?s=mp&amp;t=t&amp;c=28" class="hLink category" onmousedown="urchinTracker('/Events/VideoWatch/VideoCategoryLink');">Science & Technology</a>
+                               </div>
+
+                               <div id="watch-video-tags-div">
+                                       <div class="floatL">
+                                               <span class="watch-channel-stat">Tags:&nbsp;</span>
+                                       </div>
+                                       <div id="watch-video-tags" class="floatL">
+                                                       <a href="/results?search_query=Domino&amp;search=tag" class="hLink">Domino</a>&nbsp;
+                                                       <a href="/results?search_query=Boolean&amp;search=tag" class="hLink">Boolean</a>&nbsp;
+                                                       <a href="/results?search_query=Logic&amp;search=tag" class="hLink">Logic</a>&nbsp;
+                                                       <a href="/results?search_query=And&amp;search=tag" class="hLink">And</a>&nbsp;
+                                                       <a href="/results?search_query=Or&amp;search=tag" class="hLink">Or</a>&nbsp;
+                                                       <a href="/results?search_query=Xor&amp;search=tag" class="hLink">Xor</a>&nbsp;
+                                       </div>
+                                       <div class="clearL"></div>
+                               </div>
+
+
+                               <div id="watch-url-div">
+                                       <form action="" name="urlForm" id="urlForm">
+                                       <label for="watch-url-field">URL:</label>
+                                       <input name="video_link" id="watch-url-field" type="text" class="email-video-url" value="http://www.youtube.com/watch?v=SudixyugiX4" onClick="javascript:document.urlForm.video_link.focus();document.urlForm.video_link.select();" onmousedown="urchinTracker('/Events/VideoWatch/CopyPasteLinkFromMoreInfo');" readonly>
+                                       </form>
+                               </div>
+                       </div> 
+
+
+                       <div id="watch-embed-div">
+                               <div class="floatR">
+                                               <label id="watch-embed-customize" class="eLink" onclick="customizeEmbed(); urchinTracker('/Events/VideoWatch/CustomizeEmbed'); return false;">Customize</label>
+                               </div>
+                               <div>
+                                       <label for="embed_code">Embed:</label>&nbsp;
+                               </div>
+                               <div class="clearR"></div>
+                               <div>
+                                       <form action="" name="embedForm" id="embedForm">
+                                               <input id="embed_code" name="embed_code" type="text" value='&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/SudixyugiX4&amp;hl=en&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/SudixyugiX4&amp;hl=en&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;' onClick="javascript:document.embedForm.embed_code.focus();document.embedForm.embed_code.select();" readonly />
+                                       </form>
+                               </div>
+                       </div> 
+               </div> 
+
+                       <form id="watch-customize-embed-div" name="embedCustomizeForm">Loading...</form>
+
+               <div id="watch-attributions-div">
+       
+
+       
+               </div> 
+
+
+
+       </div> 
+
+
+
+       </div> 
+
+
+
+
+
+       <div class="watch-wrapper">
+                       <div id="more-from-panel" class="expand-panel 
+" onExpanded="toggleChannelVideos('Odo987');">
+               <a href="#" class="expand-header" onclick="togglePanel(this.parentNode); savePanelState(); return false;" onmousedown="urchinTracker('/Events/VideoWatch/MoreFromPanel');"><img class="arrow" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="" />More From: Odo987</a>
+               <div id="watch-more-from" class="watch-body expand-content">
+                               <div class="alignC">Loading...</div>
+               </div>
+       </div>
+
+       </div>
+
+       
+       <div id="quicklistDiv" class="hide">
+                       <div id="quicklist-panel" class="expand-panel watch-wrapper expanded">
+               <div class="expand-content floatR">
+                       <span id="playall_QL" class="smallText watch-playlist-action ">
+                               <a href="#" onclick="return autoNext('QL');">Play All</a>
+                       </span>
+                       <span id="playingall_QL" class="smallText watch-playlist-action hide">
+                               <a href="#" onclick="return autoNextOff('QL');">Stop Autoplaying</a>
+                       </span>
+                       <span class="smallText grayText">|</span>
+                       <span class="smallText">
+                               <a href="#" onclick="playnextFrom='QL';gotoNext(); return false;">Play Next</a>
+                       </span>
+               </div>
+
+
+               <a class="expand-header" href="#" onClick="togglePanel(this.parentNode); savePanelState(); return false;"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="" class="arrow" /><span >QuickList</span> <span class="watch-quicklist-count">(<span id="playlistVideoCount_QL">0</span>)</span></a>
+
+
+               <div id="playlistContainer_QL" class="expand-content watch-playlist-container watch-playlist-auto-height">
+                       <div id="playlistRows_QL">
+                                                       
+
+
+       <div id="playlistRow_placeholder_QL" class="hide watch-playlist-row   ">
+               <a href="" class="watch-playlist-row-link" onclick="window.location=this.href; return false;">
+                       <div class="watch-playlist-index">
+                                       <span id="playlistRowIndex_placeholder_QL" class="phIndex"> 1</span>
+                       </div>
+                       <div class="watch-playlist-row-left"><div class="v50WrapperOuter"><div class="v50WrapperInner">
+                               <img class="vimg50" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="" title=""/>
+                       </div></div></div>
+                       <div class="watch-playlist-row-middle">
+                               <div class="vtitle" 
+ style="text-decoration:underline;">
+                                       
+                               </div>
+                               <div class="vfacets phUsername" style="color:black">
+                                       
+                               </div>
+                       </div>
+               </a>
+               <div class="watch-playlist-row-right">
+                       <span class="watch-playlist-item-duration">
+                               
+                       </span>                 <img class="watch-playlist-row-deleter" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" onclick="watchRemoveVideo('QL', this)" alt=""/>
+               </div>  
+       </div>
+
+       
+               
+
+       
+
+                       </div>
+               </div>
+
+               <div id="watch-playlist-actions" class="expand-content">
+                               <span class="smallText">
+                                       <a href="#" onClick="clearWatchQueue(); urchinTracker('/Events/VideoWatch/QuickList+ClearLink'); return false;" title="Remove all videos from QuickList" rel="nofollow">Clear</a> <span class="smallText grayText">|</span>
+                                       <a href="/edit_playlist_info?watch_queue=1" title="Save all videos into a permanent playlist" onmousedown="urchinTracker('/Events/VideoWatch/QuickList+SaveLink');" rel="nofollow">Save</a>
+                               </span>
+               </div>
+
+       </div> 
+
+       </div>
+
+       <div id="watch-related-videos-panel" class="watch-wrapper expand-panel expanded">
+               <div id="watch-related-vids-toggle" class="expand-content">
+                       <img id="btn-listview-on" title="List View" alt="List View" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif"><a href="#" onclick="return showRelatedAsGrid()"><img id="btn-gridview-off" title="Grid View" alt="Grid View" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif"></a><a href="#" onclick="return showRelatedAsList()"><img id="btn-listview-off" title="List View" alt="List View" class="hide" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif"></a><img id="btn-gridview-on" class="hide" title="Grid View" alt="Grid View" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif">
+               </div>
+               <a href="#" onclick="togglePanel(this.parentNode); savePanelState(); this.blur(); return false;" class="expand-header"><img src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="" class="arrow" />Related Videos</a>
+               <div class="watch-body expand-content">
+                       <div id="watch-related-vids-body" class="watch-discoverbox-list-view">
+                                               <div class="watch-discoverbox" style="height:302px" onscroll="performDelayLoad('related')">
+                               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=m2ECfgmwaRg&amp;feature=related"   rel="nofollow"><img title="Domino Half Adder 01"   src="http://i2.ytimg.com/vi/m2ECfgmwaRg/default.jpg" class="vimg90" qlicon="m2ECfgmwaRg" alt="Domino Half Adder 01"></a><div class="addtoQL90"><a href="#"  ql="m2ECfgmwaRg" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i2.ytimg.com/vi/m2ECfgmwaRg/default.jpg', 'Domino Half Adder 01')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=m2ECfgmwaRg&amp;feature=related">  Domino Half Adder 01  </a></div>
+                               <div>
+                                       <span class="smallText"> 00:04 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/kybernetikos" class="hLink">kybernetikos</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">11,526</span></div>
+
+                       </div>
+               </div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=L9tKb80hg7o&amp;feature=related"   rel="nofollow"><img title="Most Amazing Domino Trick Ever - wait till the end!"   src="http://i1.ytimg.com/vi/L9tKb80hg7o/default.jpg" class="vimg90" qlicon="L9tKb80hg7o" alt="Most Amazing Domino Trick Ever - wait till the end!"></a><div class="addtoQL90"><a href="#"  ql="L9tKb80hg7o" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i1.ytimg.com/vi/L9tKb80hg7o/default.jpg', 'Most Amazing Domino Trick Ever - wait till the end!')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=L9tKb80hg7o&amp;feature=related">  Most Amazing Domino Trick Ever - wait till the end!  </a></div>
+                               <div>
+                                       <span class="smallText"> 01:31 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/user363" class="hLink">user363</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">98,811</span></div>
+
+                       </div>
+               </div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=YU8Q0SMDhQs&amp;feature=related"   rel="nofollow"><img title="dominos"   src="http://i2.ytimg.com/vi/YU8Q0SMDhQs/default.jpg" class="vimg90" qlicon="YU8Q0SMDhQs" alt="dominos"></a><div class="addtoQL90"><a href="#"  ql="YU8Q0SMDhQs" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i2.ytimg.com/vi/YU8Q0SMDhQs/default.jpg', 'dominos')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=YU8Q0SMDhQs&amp;feature=related">  dominos  </a></div>
+                               <div>
+                                       <span class="smallText"> 00:30 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/martinouze" class="hLink">martinouze</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">2,087,610</span></div>
+
+                       </div>
+               </div>
+                       <div class="watch-discoverbox-grid-divider"></div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=H-53TVR9EOw&amp;feature=related"   rel="nofollow"><img title="Logic gates using toys"   src="http://i1.ytimg.com/vi/H-53TVR9EOw/default.jpg" class="vimg90" qlicon="H-53TVR9EOw" alt="Logic gates using toys"></a><div class="addtoQL90"><a href="#"  ql="H-53TVR9EOw" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i1.ytimg.com/vi/H-53TVR9EOw/default.jpg', 'Logic gates using toys')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=H-53TVR9EOw&amp;feature=related">  Logic gates using toys  </a></div>
+                               <div>
+                                       <span class="smallText"> 02:36 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/mlittman" class="hLink">mlittman</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">20,389</span></div>
+
+                       </div>
+               </div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=MCLv_PmB4v8&amp;feature=related"   rel="nofollow"><img title="Re: Domino Contest no1"   src="http://i2.ytimg.com/vi/MCLv_PmB4v8/default.jpg" class="vimg90" qlicon="MCLv_PmB4v8" alt="Re: Domino Contest no1"></a><div class="addtoQL90"><a href="#"  ql="MCLv_PmB4v8" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i2.ytimg.com/vi/MCLv_PmB4v8/default.jpg', 'Re: Domino Contest no1')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=MCLv_PmB4v8&amp;feature=related">  Re: Domino Contest no1  </a></div>
+                               <div>
+                                       <span class="smallText"> 01:15 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/sslycat" class="hLink">sslycat</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">1,315</span></div>
+
+                       </div>
+               </div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=uGaFjgrjZjI&amp;feature=related"   rel="nofollow"><img title="Domino Day 2006 II"   src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="vimg90"
+ onload="delayLoad('related', this, 'http://i2.ytimg.com/vi/uGaFjgrjZjI/default.jpg')" qlicon="uGaFjgrjZjI" alt="Domino Day 2006 II"></a><div class="addtoQL90"><a href="#"  ql="uGaFjgrjZjI" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i2.ytimg.com/vi/uGaFjgrjZjI/default.jpg', 'Domino Day 2006 II')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=uGaFjgrjZjI&amp;feature=related">  Domino Day 2006 II  </a></div>
+                               <div>
+                                       <span class="smallText"> 07:35 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/pasandolaenholanda" class="hLink">pasandolaenholanda</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">485,163</span></div>
+
+                       </div>
+               </div>
+                       <div class="watch-discoverbox-grid-divider"></div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=XvOcNlggo0s&amp;feature=related"   rel="nofollow"><img title="domino world"   src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="vimg90"
+ onload="delayLoad('related', this, 'http://i1.ytimg.com/vi/XvOcNlggo0s/default.jpg')" qlicon="XvOcNlggo0s" alt="domino world"></a><div class="addtoQL90"><a href="#"  ql="XvOcNlggo0s" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i1.ytimg.com/vi/XvOcNlggo0s/default.jpg', 'domino world')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=XvOcNlggo0s&amp;feature=related">  domino world  </a></div>
+                               <div>
+                                       <span class="smallText"> 00:12 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/zugbun" class="hLink">zugbun</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">954</span></div>
+
+                       </div>
+               </div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=Zd37C4PykzU&amp;feature=related"   rel="nofollow"><img title="Add-O-Matic Adding Machine Antique circa 1937"   src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="vimg90"
+ onload="delayLoad('related', this, 'http://i3.ytimg.com/vi/Zd37C4PykzU/default.jpg')" qlicon="Zd37C4PykzU" alt="Add-O-Matic Adding Machine Antique circa 1937"></a><div class="addtoQL90"><a href="#"  ql="Zd37C4PykzU" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i3.ytimg.com/vi/Zd37C4PykzU/default.jpg', 'Add-O-Matic Adding Machine Antique circa 1937')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=Zd37C4PykzU&amp;feature=related">  Add-O-Matic Adding Machine Antique circa 1937  </a></div>
+                               <div>
+                                       <span class="smallText"> 00:52 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/rregister" class="hLink">rregister</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">4,796</span></div>
+
+                       </div>
+               </div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=Kt2Bb32zfXM&amp;feature=related"   rel="nofollow"><img title="Coin Domino"   src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="vimg90"
+ onload="delayLoad('related', this, 'http://i4.ytimg.com/vi/Kt2Bb32zfXM/default.jpg')" qlicon="Kt2Bb32zfXM" alt="Coin Domino"></a><div class="addtoQL90"><a href="#"  ql="Kt2Bb32zfXM" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i4.ytimg.com/vi/Kt2Bb32zfXM/default.jpg', 'Coin Domino')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=Kt2Bb32zfXM&amp;feature=related">  Coin Domino  </a></div>
+                               <div>
+                                       <span class="smallText"> 02:20 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/benhossi" class="hLink">benhossi</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">178,326</span></div>
+
+                       </div>
+               </div>
+                       <div class="watch-discoverbox-grid-divider"></div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=f1zIR_SVxkE&amp;feature=related"   rel="nofollow"><img title="Japanese domino effect"   src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="vimg90"
+ onload="delayLoad('related', this, 'http://i3.ytimg.com/vi/f1zIR_SVxkE/default.jpg')" qlicon="f1zIR_SVxkE" alt="Japanese domino effect"></a><div class="addtoQL90"><a href="#"  ql="f1zIR_SVxkE" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i3.ytimg.com/vi/f1zIR_SVxkE/default.jpg', 'Japanese domino effect')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=f1zIR_SVxkE&amp;feature=related">  Japanese domino effect  </a></div>
+                               <div>
+                                       <span class="smallText"> 09:11 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/pubtor" class="hLink">pubtor</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">116,308</span></div>
+
+                       </div>
+               </div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=5_tXcRYOYZ0&amp;feature=related"   rel="nofollow"><img title="Domino PCs: The Real Thing: 86 PCs in a row! The Original"   src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="vimg90"
+ onload="delayLoad('related', this, 'http://i2.ytimg.com/vi/5_tXcRYOYZ0/default.jpg')" qlicon="5_tXcRYOYZ0" alt="Domino PCs: The Real Thing: 86 PCs in a row! The Original"></a><div class="addtoQL90"><a href="#"  ql="5_tXcRYOYZ0" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i2.ytimg.com/vi/5_tXcRYOYZ0/default.jpg', 'Domino PCs: The Real Thing: 86 PCs in a row! The Original')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=5_tXcRYOYZ0&amp;feature=related">  Domino PCs: The Real Thing: 86 PCs in a row! The Original  </a></div>
+                               <div>
+                                       <span class="smallText"> 00:29 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/eharbison" class="hLink">eharbison</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">3,123,118</span></div>
+
+                       </div>
+               </div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=QWF6MSzLVh4&amp;feature=related"   rel="nofollow"><img title="domino toppler"   src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="vimg90"
+ onload="delayLoad('related', this, 'http://i2.ytimg.com/vi/QWF6MSzLVh4/default.jpg')" qlicon="QWF6MSzLVh4" alt="domino toppler"></a><div class="addtoQL90"><a href="#"  ql="QWF6MSzLVh4" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i2.ytimg.com/vi/QWF6MSzLVh4/default.jpg', 'domino toppler')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=QWF6MSzLVh4&amp;feature=related">  domino toppler  </a></div>
+                               <div>
+                                       <span class="smallText"> 02:17 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/Vswe" class="hLink">Vswe</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">2,565</span></div>
+
+                       </div>
+               </div>
+                       <div class="watch-discoverbox-grid-divider"></div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=z6mLPURj3_k&amp;feature=related"   rel="nofollow"><img title="Domona Lisa"   src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="vimg90"
+ onload="delayLoad('related', this, 'http://i3.ytimg.com/vi/z6mLPURj3_k/default.jpg')" qlicon="z6mLPURj3_k" alt="Domona Lisa"></a><div class="addtoQL90"><a href="#"  ql="z6mLPURj3_k" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i3.ytimg.com/vi/z6mLPURj3_k/default.jpg', 'Domona Lisa')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=z6mLPURj3_k&amp;feature=related">  Domona Lisa  </a></div>
+                               <div>
+                                       <span class="smallText"> 04:31 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/FlippyCat" class="hLink">FlippyCat</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">752,240</span></div>
+
+                       </div>
+               </div>
+               <div class="watch-discoverbox-divider"></div>
+               <div class="watch-discoverbox-entry">
+                       <div class="watch-discoverbox-thumb">
+                                       <div class="v90WrapperOuter"><div class="v90WrapperInner"><a href="/watch?v=DMgpckykmJU&amp;feature=related"   rel="nofollow"><img title="Millions of Dominos"   src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" class="vimg90"
+ onload="delayLoad('related', this, 'http://i1.ytimg.com/vi/DMgpckykmJU/default.jpg')" qlicon="DMgpckykmJU" alt="Millions of Dominos"></a><div class="addtoQL90"><a href="#"  ql="DMgpckykmJU" title="Add Video to QuickList"><img class="QLIconImg" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" border="0"
+       onclick="return onQuickAddClick(this, this.parentNode.getAttribute('ql'), 'http://i1.ytimg.com/vi/DMgpckykmJU/default.jpg', 'Millions of Dominos')"
+       onmouseover="mouseOverQuickAdd(this)"
+       onmouseout="mouseOutQuickAdd(this)"></a><div class="hid quicklist-inlist"><a href="/watch_queue?all">Added</a></div></div>
+</div></div>
+                       </div>
+                       <div class="watch-discoverbox-facets">
+                               <div  class="vtitle"><a class="hLink" href="/watch?v=DMgpckykmJU&amp;feature=related">  Millions of Dominos  </a></div>
+                               <div>
+                                       <span class="smallText"> 02:36 </span>
+                                       <span class="watch-discoverbox-list-facet-alt smallLabel">From:</span>  <span class="watch-discoverbox-list-facet-alt watch-discoverbox-username"><a href="/user/marekszym1987" class="hLink">marekszym1987</a></span>
+                               </div>
+                               <div class="watch-discoverbox-list-facet"><span class="smallLabel">Views:</span> <span class="smallText">1,057,680</span></div>
+
+                       </div>
+               </div>
+               <div class="watch-discoverbox-divider"></div>
+
+
+               <div id="watch-related-video-list-loading-div" class="clear alignC padT5 padB10 bold" style="display:none">Loading...</div>
+               <div class="clear alignC padT5 padB10 bold">
+                       <a href="/results?search=related&search_query=%20Domino%20Boolean%20Logic%20And%20Or%20Xor&v=SudixyugiX4&page=2">See all 40 videos</a>
+               </div>
+       </div>
+
+                       </div> 
+               </div>
+               <div class="clearL"></div>
+       </div> 
+
+       <div class="watch-wrapper expand-panel expanded">
+               <span class="expand-header">Promoted Videos</span>
+               <div class="watch-body expand-content" id="watch-promoted-container">
+                               <div class="watch-promoted-vid">
+                                       
+
+
+       <div class="v75WideEntry">
+       
+       <div class="v75WrapperOuter"><div class="v75WrapperInner"><a href="/cthru?key=8GXch06a1nZMZ8yg6455JhhTjEfaS9Q8GwqzsmAKbXSBmYxrSjxYusWt9dHITETH8o3LuGn4HkDcTxfGujgyuFfdH7k6RByuyFivi17icxtJ-gtLdqfZY6O-u9tRh_TkcDycpeAku3NV6-jwd-XOSYND0CCztJfzZArpyljc4urfNXCxx08aizmV8RqPe9A0IysrEG8b0yY="  onmousedown="urchinTracker('/Events/VideoWatch/PromotedVideos');" rel="nofollow"><img title="Happy Tree Friends - Ka-Pow! Coming Soon"   src="http://i4.ytimg.com/vi/gyLF14S5ZO4/default.jpg" class="vimg75"  alt="Happy Tree Friends - Ka-Pow! Coming Soon"></a></div></div>
+
+               <!--div class="vtitle smallText" style="font-weight: normal;"-->
+               <div >
+                       <a href="/cthru?key=8GXch06a1nZMZ8yg6455JhhTjEfaS9Q8GwqzsmAKbXSBmYxrSjxYusWt9dHITETH8o3LuGn4HkDcTxfGujgyuFfdH7k6RByuyFivi17icxtJ-gtLdqfZY6O-u9tRh_TkcDycpeAku3NV6-jwd-XOSYND0CCztJfzZArpyljc4urfNXCxx08aizmV8RqPe9A0IysrEG8b0yY=" title="Happy Tree Friends - Ka-Pow! Coming Soon" target="_parent" name='&amp;lid=DV+-+HappyTreeFriendsKaPowComingSoon+-+MondoMedia&amp;lpos=Watch3-s0' class="bold hLink" rel="nofollow">Happy Tree Friends - Ka...</a>
+               </div>
+
+               <span class="runtime" style="font-weight: normal">00:36</span>
+
+               <div class="">
+                       <span class="grayText"></span><a href="/user/MondoMedia" class="hLink" rel="nofollow">MondoMedia</a><br/>
+               </div>
+       </div>
+
+                               </div>
+                               <div class="watch-promoted-vid">
+                                       
+
+
+       <div class="v75WideEntry">
+       
+       <div class="v75WrapperOuter"><div class="v75WrapperInner"><a href="/cthru?key=0tkQ2W0APCTQz30TjreGTYlqrKUWvpyS62QgcWSpWSJfK6Ei6Pjf4eiPTsvcPQ6sepXTxkmBpGmYI9a06v1VT55GixNZmRQ97dsX3HaeiGbrPGuOT8Qmq-MwYVCrwUIAFNrOD92FNUTfb7jy9Syfor3jDR77MyE_jwiMXl7HS6s93LdU-zOrFmCTSYaADCECZpsS2-NJNKq16mtXAuQI_A=="  onmousedown="urchinTracker('/Events/VideoWatch/PromotedVideos');" rel="nofollow"><img title="FANalysts Intro Video - Fantasy Football Advice and Analysis"   src="http://i2.ytimg.com/vi/urYAuH8U_VE/default.jpg" class="vimg75"  alt="FANalysts Intro Video - Fantasy Football Advice and Analysis"></a></div></div>
+
+               <!--div class="vtitle smallText" style="font-weight: normal;"-->
+               <div >
+                       <a href="/cthru?key=0tkQ2W0APCTQz30TjreGTYlqrKUWvpyS62QgcWSpWSJfK6Ei6Pjf4eiPTsvcPQ6sepXTxkmBpGmYI9a06v1VT55GixNZmRQ97dsX3HaeiGbrPGuOT8Qmq-MwYVCrwUIAFNrOD92FNUTfb7jy9Syfor3jDR77MyE_jwiMXl7HS6s93LdU-zOrFmCTSYaADCECZpsS2-NJNKq16mtXAuQI_A==" title="FANalysts Intro Video - Fantasy Football Advice and Analysis" target="_parent" name='&amp;lid=DV+-+FANalystsIntroVideoFantasyFootballAdviceandAnalysis+-+FANALYSTS&amp;lpos=Watch3-s1' class="bold hLink" rel="nofollow">FANalyst s Intro Video -...</a>
+               </div>
+
+               <span class="runtime" style="font-weight: normal">01:54</span>
+
+               <div class="">
+                       <span class="grayText"></span><a href="/user/FANALYSTS" class="hLink" rel="nofollow">FANALYSTS</a><br/>
+               </div>
+       </div>
+
+                               </div>
+                               <div class="watch-promoted-vid">
+                                       
+
+
+       <div class="v75WideEntry">
+       
+       <div class="v75WrapperOuter"><div class="v75WrapperInner"><a href="/cthru?key=HQ0KkADJtMorMpP6TtYUrxW1g_DZX3kPMm1GOrCyCpXPWKsX2AJp_Km8ql5k-AfCPXWtJS8zetwnh-kmUqS6YmKNPBQ0p0WHg4xIVAeSG_lPEoZccj3vNoLav2FAqokcQ7LLOKHKFSAhK-xgzUdyKve2MM86g8EK7MOBlsIqfo54rReYke8I-AUx9uB5vzPTbyH8VGCC7mA="  onmousedown="urchinTracker('/Events/VideoWatch/PromotedVideos');" rel="nofollow"><img title="Inside the Tent: Pedicab Confessions"   src="http://i3.ytimg.com/vi/JPFqFnfpthE/default.jpg" class="vimg75"  alt="Inside the Tent: Pedicab Confessions"></a></div></div>
+
+               <!--div class="vtitle smallText" style="font-weight: normal;"-->
+               <div >
+                       <a href="/cthru?key=HQ0KkADJtMorMpP6TtYUrxW1g_DZX3kPMm1GOrCyCpXPWKsX2AJp_Km8ql5k-AfCPXWtJS8zetwnh-kmUqS6YmKNPBQ0p0WHg4xIVAeSG_lPEoZccj3vNoLav2FAqokcQ7LLOKHKFSAhK-xgzUdyKve2MM86g8EK7MOBlsIqfo54rReYke8I-AUx9uB5vzPTbyH8VGCC7mA=" title="Inside the Tent: Pedicab Confessions" target="_parent" name='&amp;lid=DV+-+InsidetheTentPedicabConfessions+-+ReutersVideo&amp;lpos=Watch3-s2' class="bold hLink" rel="nofollow">Inside the Tent: Pedica.. .</a>
+               </div>
+
+               <span class="runtime" style="font-weight: normal">02:26</span>
+
+               <div class="">
+                       <span class="grayText"></span><a href="/user/ReutersVideo" class="hLink" rel="nofollow">ReutersVideo</a><br/>
+               </div>
+       </div>
+
+                               </div>
+                               <div class="watch-promoted-vid">
+                                       
+
+
+       <div class="v75WideEntry">
+       
+       <div class="v75WrapperOuter"><div class="v75WrapperInner"><a href="/cthru?key=bswU963nTb2DcoPzh-Kqg4MF7icWib8l4v81wCwnW2ZsP8qYRouo5LTkzAz7zbUb1-x0PbiopseuDFXfLF1BCF0mMiZ33MWiRpH86_6WAE0iOhCxSbawo0MCEnMg1Nflu3iQ7hadLGuVhT2IUYgo7YjiUukaJiCBKPgBA77RtHJKhZsrWNWAQnGx7gMn33TXBAw9xEKuCoY="  onmousedown="urchinTracker('/Events/VideoWatch/PromotedVideos');" rel="nofollow"><img title="The House Bunny CosmoGIRL Shoot"   src="http://i2.ytimg.com/vi/5T1kuotMk4g/default.jpg" class="vimg75"  alt="The House Bunny CosmoGIRL Shoot"></a></div></div>
+
+               <!--div class="vtitle smallText" style="font-weight: normal;"-->
+               <div >
+                       <a href="/cthru?key=bswU963nTb2DcoPzh-Kqg4MF7icWib8l4v81wCwnW2ZsP8qYRouo5LTkzAz7zbUb1-x0PbiopseuDFXfLF1BCF0mMiZ33MWiRpH86_6WAE0iOhCxSbawo0MCEnMg1Nflu3iQ7hadLGuVhT2IUYgo7YjiUukaJiCBKPgBA77RtHJKhZsrWNWAQnGx7gMn33TXBAw9xEKuCoY=" title="The House Bunny CosmoGIRL Shoot" target="_parent" name='&amp;lid=DV+-+TheHouseBunnyCosmoGIRLShoot+-+CosmoGirl&amp;lpos=Watch3-s3' class="bold hLink" rel="nofollow">The House Bunny CosmoGI. ..</a>
+               </div>
+
+               <span class="runtime" style="font-weight: normal">01:58</span>
+
+               <div class="">
+                       <span class="grayText"></span><a href="/user/CosmoGirl" class="hLink" rel="nofollow">CosmoGirl</a><br/>
+               </div>
+       </div>
+
+                               </div>
+                       <div class="clearL"></div>
+               </div>
+       </div> 
+
+       <script type="text/javascript">
+               if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
+                       var ieVersion = new Number(RegExp.$1);
+                       if (ieVersion < 7) {
+                               document.writeln("<div class=\"alignC\" style=\"border:1px solid #ccc; padding: 5px\">YouTube recommends upgrading to a safer, modern browser<br>such as Firefox. <a class=\"bold\" href=\"http://www.mozilla.com/en-US/firefox/\" onmousedown=\"urchinTracker('/Events/VideoWatch/GetFirefox');\">Get It Now!</a></div>");
+                       }
+               }
+       </script>
+
+</div> 
+
+
+
+
+               <div class="clear"></div>
+       <div id="footer">
+               <div class="search">
+                       <div class="promo">
+                               <a href="/youchoose" onclick="_hbLink('FooterPromo','Footer');"><img id="debates_footer_img" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt="footer-promo" /></a>
+                               <a href="/youchoose" onclick="_hbLink('FooterPromo','Footer');">Face The Candidates</a>
+                       </div>
+                       <form name="footer-search-form" method="get" action="/results" style="width: 73.5%;">
+                                       <a href="http://www.google.com/webmasters/igoogle/youtube.html"><img id="igoogle_footer_img" src="http://s.ytimg.com/yt/img/pixel-vfl73.gif" alt=""/> <em id="igoogle_footer_text">Add to iGoogle</em></a>
+                               <input  type="text" name="search_query" maxlength="128" class="query" onkeyup = "top.goog.i18n.bidi.setDirAttribute(event,this)" value="" id="footer-search-term">
+                               <select class="search-type" name="search_type">
+                                       <option value="">Videos</option>
+                                       <option value="search_users" >Channels</option>
+                               </select>
+                               <input onfocus="urchinTracker('/Events/Footer/Search');" type="submit" name="search" value="Search" class="submit-button">
+                       </form>
+               </div>
+               <div class="links">
+                       <table cellpadding="0" cellspacing="0">
+                               <tr>
+                                       <th colspan="2">Your Account</th>
+                                       <th class="separator" colspan="2">Help &amp; Info</th>
+                                       <th class="separator" colspan="2">YouTube</th>
+                               </tr>
+                               <tr>
+                                       <td><a href="/my_videos">Videos</a></td>
+                                       <td><a href="/inbox">Inbox</a></td>
+                                       <td class="separator"><a href="http://help.youtube.com/support/youtube/bin/static.py?page=start.cs">Help Resources</a></td>
+                                       <td><a href="http://help.youtube.com/group/youtube-help?hl=en_US">Community Help Forums</a></td>
+                                       <td class="separator"><a href="/t/about">Company Info</a></td>
+                                       <td><a href="/press_room">Press</a></td>
+                               </tr>
+                               <tr>
+                                       <td><a href="/my_favorites">Favorites</a></td>
+                                       <td><a href="/my_subscriptions">Subscriptions</a></td>
+                                       <td class="separator"><a href="/t/safety">Safety Tips</a></td>
+                                       <td><a href="/t/dmca_policy">Copyright Notices</a></td>
+                                       <td class="separator"><a href="/testtube">TestTube</a></td>
+                                       <td><a href="/t/contact_us">Contact</a></td>
+                               </tr>
+                               <tr>
+                                       <td><a href="/my_playlists">Playlists</a></td>
+                                       <td><a href="/my_account">more...</a></td>
+                                       <td class="separator"><a href="/dev">Developer APIs</a></td>
+                                       <td><a href="/t/community_guidelines">Community Guidelines</a></td>
+                                       <td class="separator"><a href="/t/terms">Terms of Use</a></td>
+                                       <td><a href="/blog">Blog</a></td>
+                               </tr>
+                               <tr>
+                                       <td colspan="2">&nbsp;</td>
+                                       <td class="separator"><a href="/advertise">Advertising</a></td>
+                                       <td><a href="/youtubeonyoursite">YouTube On Your Site</a></td>
+                                       <td class="separator"><a href="/t/privacy">Privacy Policy</a></td>
+                                       <td>
+                                               <a href="http://www.google.com/jobs/youtube">Jobs</a><br/>
+                                       </td>
+                               </tr>
+
+                               <tr>
+                                       <td colspan="2">&nbsp;</td>
+                                       <td class="separator" colspan="2"><a href="/t/yt_handbook_home">YouTube Handbook</a></td>
+                                       <td class="separator" colspan="2">&nbsp;</td>
+                               </tr>
+                       </table>
+               </div>
+       </div>
+       <div id="copyright">
+               &copy; 2008 YouTube, LLC
+       </div>
+
+
+</div> <!-- end baseDiv -->
+<a name="pageBottom"></a>
+
+
+</body>
+
+
+
+</html>
\ No newline at end of file
index 6efa044a37f9ef3793e77d68afa667c5a3649be6..26c595d8788aefd15d87b954d3e58048fb59efef 100644 (file)
@@ -24,6 +24,7 @@ require 'test/uri_utilities_test'
 require 'test/vimeo_test'
 require 'test/website_test'
 require 'test/youporn_test'
+require 'test/youtube_test'
 
 # Vendor tests
-#require 'vendor/ruby-progressbar/test'
+require 'vendor/ruby-progressbar/test'
diff --git a/test/youtube_test.rb b/test/youtube_test.rb
new file mode 100644 (file)
index 0000000..08e8030
--- /dev/null
@@ -0,0 +1,64 @@
+#
+# Copyright Michael Orlitzky
+#
+# http://michael.orlitzky.com/
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# http://www.fsf.org/licensing/licenses/gpl.html
+#
+
+require 'test/unit'
+require 'src/websites/youtube'
+
+class YoutubeTest < Test::Unit::TestCase
+
+  def test_owns_youtube_urls
+    assert(Youtube.owns_url?('http://www.youtube.com/watch?v=SudixyugiX4'))
+    assert(Youtube.owns_url?('http://www.youtube.com/watch?v=SudixyugiX4&hl=en'))
+    assert(Youtube.owns_url?('http://youtube.com/watch?v=SudixyugiX4&hl=en'))
+    assert(Youtube.owns_url?('http://www.youtube.com/v/SudixyugiX4'))
+    assert(Youtube.owns_url?('http://www.youtube.com/v/SudixyugiX4&hl=en'))
+    assert(Youtube.owns_url?('http://youtube.com/v/SudixyugiX4&hl=en'))
+  end
+
+
+  def test_doesnt_own_redtube_urls
+    assert(!Youtube.owns_url?('http://www.redtube.com/6807'))
+    assert(!Youtube.owns_url?('www.redtube.com/6807'))
+    assert(!Youtube.owns_url?('http://redtube.com/6807'))
+    assert(!Youtube.owns_url?('redtube.com/6807'))
+  end
+
+
+  def test_parse_video_id
+    yt = Youtube.new()
+    expected_result = 'SudixyugiX4'
+    actual_result = yt.send('parse_video_id', 'http://www.youtube.com/watch?v=SudixyugiX4')
+    assert_equal(expected_result, actual_result)
+  end
+
+  
+  def test_parse_t_parameter
+    yt = Youtube.new()
+    
+    page_data = nil
+    
+    File.open('test/fixtures/youtube/SudixyugiX4.html') do |f|
+      page_data = f.read
+    end
+
+    expected_result = 'OEgsToPDskLQUAntWWpzhEMhBMlgqHdo'
+    actual_result = yt.send('parse_t_parameter', page_data)
+    assert_equal(expected_result, actual_result)
+  end
+    
+end