summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <carbon@melanarchy.org>2013-08-02 17:14:26 -0500
committerJules Laplace <carbon@melanarchy.org>2013-08-02 17:14:26 -0500
commit79670053c7247d3a49b607960efd284e93f057e5 (patch)
tree9617f6eefa38b2686ae409bf75cc27a340444eda
parentc53827d5d044ae5ca7ebb27acb404b7a8988918e (diff)
install.pl
-rw-r--r--.gitignore1
-rw-r--r--bPod/bPod.flabin0 -> 245760 bytes
-rw-r--r--bPod/bPod.swdbin0 -> 345496 bytes
-rw-r--r--bPod/bPod.swfbin0 -> 66083 bytes
-rw-r--r--bPod/beta2.tmproj27
-rw-r--r--bPod/boxtester.flabin0 -> 55296 bytes
-rw-r--r--bPod/boxtester.swfbin0 -> 624 bytes
-rw-r--r--bPod/com/events/Event.as7
-rw-r--r--bPod/com/events/EventBroadcaster.as32
-rw-r--r--bPod/com/events/RightClick.as15
-rw-r--r--bPod/com/feeds/FeedButton.as36
-rw-r--r--bPod/com/feeds/FeedItemButton.as59
-rw-r--r--bPod/com/feeds/FeedItemScroller.as17
-rw-r--r--bPod/com/feeds/FeedItemSelectionSystem.as64
-rw-r--r--bPod/com/feeds/FeedScroller.as16
-rw-r--r--bPod/com/feeds/FeedSelectionSystem.as32
-rw-r--r--bPod/com/feeds/ProcessRSS.as1
-rw-r--r--bPod/com/files/FileButton.as89
-rw-r--r--bPod/com/files/FileScroller.as15
-rw-r--r--bPod/com/files/FileSelectionSystem.as19
-rw-r--r--bPod/com/graphics/BuckyGradientBox.as43
-rw-r--r--bPod/com/keywords/KeywordButton.as95
-rw-r--r--bPod/com/keywords/KeywordScroller.as67
-rw-r--r--bPod/com/keywords/KeywordSelectionSystem.as85
-rw-r--r--bPod/com/oop/GridSelectionSystem.as49
-rw-r--r--bPod/com/oop/ScrollingMenuFrame.as148
-rw-r--r--bPod/com/oop/SelectionSwitcher.as194
-rw-r--r--bPod/com/oop/SelectionSystem.as89
-rw-r--r--bPod/com/oop/UIButton.as171
-rw-r--r--bPod/com/player/Player.as131
-rw-r--r--bPod/com/player/Visuals.as85
-rw-r--r--bPod/com/services/BuckyServices.as133
-rw-r--r--bPod/com/tags/TagButton.as95
-rw-r--r--bPod/com/threads/ThreadButton.as57
-rw-r--r--bPod/com/threads/ThreadScroller.as15
-rw-r--r--bPod/com/threads/ThreadSelectionSystem.as74
-rw-r--r--bPod/com/tubes/BuckyFileTube.as29
-rw-r--r--bPod/com/tubes/BuckyKeywordTube.as46
-rw-r--r--bPod/com/tubes/BuckyThreadTube.as26
-rw-r--r--bPod/com/tubes/BuckyTube.as23
-rw-r--r--bPod/css/bogart.css228
-rw-r--r--bPod/index.html205
-rw-r--r--bPod/main.as47
-rw-r--r--bPod/php/buckyFiles.php102
-rw-r--r--bPod/php/buckyf.php66
-rw-r--r--bPod/php/buckyk.php37
-rw-r--r--bPod/php/buckyth.php34
-rw-r--r--bPod/php/cybozuLab/rssParser/FetchingRss.as1
-rw-r--r--bPod/php/cybozuLab/rssParser/ParsingRss.as1
-rw-r--r--bPod/php/cybozuLab/rssParser/RssParserException.as1
-rw-r--r--bPod/php/cybozuLab/rssParser/Utils.as1
-rw-r--r--bPod/rssProxy.php11
-rw-r--r--bPod/swfobject/swfobject.js138
-rwxr-xr-xbin/change-password.pl38
-rwxr-xr-xbin/flushrms.pl31
-rwxr-xr-xbin/flushzips.pl54
-rwxr-xr-xbin/keyword-export.pl156
-rwxr-xr-xbin/keyword-import.pl252
-rw-r--r--bin/localbucky.pm62
-rw-r--r--bin/participation_matrix.pl35
-rwxr-xr-xbin/populate-avatars.pl26
-rwxr-xr-xbin/populate-thumbs.pl48
-rwxr-xr-xbin/username-export.pl165
-rwxr-xr-xbin/whenis.pl7
-rw-r--r--install.pl71
65 files changed, 3902 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index c54b464..e959e38 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@ bin/old
old_shit
*~
*.swp
+install
diff --git a/bPod/bPod.fla b/bPod/bPod.fla
new file mode 100644
index 0000000..c7c68b7
--- /dev/null
+++ b/bPod/bPod.fla
Binary files differ
diff --git a/bPod/bPod.swd b/bPod/bPod.swd
new file mode 100644
index 0000000..a50f546
--- /dev/null
+++ b/bPod/bPod.swd
Binary files differ
diff --git a/bPod/bPod.swf b/bPod/bPod.swf
new file mode 100644
index 0000000..77523ad
--- /dev/null
+++ b/bPod/bPod.swf
Binary files differ
diff --git a/bPod/beta2.tmproj b/bPod/beta2.tmproj
new file mode 100644
index 0000000..5075db6
--- /dev/null
+++ b/bPod/beta2.tmproj
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>documents</key>
+ <array>
+ <dict>
+ <key>expanded</key>
+ <true/>
+ <key>name</key>
+ <string>beta2</string>
+ <key>regexFolderFilter</key>
+ <string>!.*/(\.[^/]*|CVS|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$</string>
+ <key>sourceDirectory</key>
+ <string></string>
+ </dict>
+ </array>
+ <key>fileHierarchyDrawerWidth</key>
+ <integer>253</integer>
+ <key>metaData</key>
+ <dict/>
+ <key>showFileHierarchyDrawer</key>
+ <true/>
+ <key>windowFrame</key>
+ <string>{{-21, 4}, {1177, 874}}</string>
+</dict>
+</plist>
diff --git a/bPod/boxtester.fla b/bPod/boxtester.fla
new file mode 100644
index 0000000..f25fb96
--- /dev/null
+++ b/bPod/boxtester.fla
Binary files differ
diff --git a/bPod/boxtester.swf b/bPod/boxtester.swf
new file mode 100644
index 0000000..0a4ea4c
--- /dev/null
+++ b/bPod/boxtester.swf
Binary files differ
diff --git a/bPod/com/events/Event.as b/bPod/com/events/Event.as
new file mode 100644
index 0000000..377ae1c
--- /dev/null
+++ b/bPod/com/events/Event.as
@@ -0,0 +1,7 @@
+
+class com.events.Event
+{
+ public function Event() {}
+ public var type:String;
+ public var params:Object;
+}; \ No newline at end of file
diff --git a/bPod/com/events/EventBroadcaster.as b/bPod/com/events/EventBroadcaster.as
new file mode 100644
index 0000000..c8f3483
--- /dev/null
+++ b/bPod/com/events/EventBroadcaster.as
@@ -0,0 +1,32 @@
+import com.events.Event;
+import mx.events.EventDispatcher;
+
+// var howdy:Object = new Object;
+// howdy.bonghits = "five bonghits";
+// EventBroadcaster.getInstance().broadcastEvent("curtainsUp", howdy);
+
+class com.events.EventBroadcaster
+{
+ private var dispatchEvent:Function;
+ public var addEventListener:Function;
+ public var removeEventListener:Function;
+ private static var eventBroadcaster;
+
+ private function EventBroadcaster() {
+ EventDispatcher.initialize (this);
+ }
+
+ public static function getInstance():EventBroadcaster {
+ if (eventBroadcaster == undefined) {
+ eventBroadcaster = new EventBroadcaster();
+ }
+ return eventBroadcaster;
+ }
+
+ public function broadcastEvent (_eventName:String, _params:Object):Void {
+ var event:Event = new Event();
+ event.type = _eventName;
+ event.params = _params;
+ dispatchEvent (event);
+ }
+}; \ No newline at end of file
diff --git a/bPod/com/events/RightClick.as b/bPod/com/events/RightClick.as
new file mode 100644
index 0000000..df5f5d1
--- /dev/null
+++ b/bPod/com/events/RightClick.as
@@ -0,0 +1,15 @@
+class com.events.RightClick {
+
+ private var rcMenu:ContextMenu;
+
+ public function RightClick () {
+ rcMenu = new ContextMenu();
+ rcMenu.hideBuiltInItems();
+ rcMenu.customItems.push (new ContextMenuItem ("(c) 2007 carbon pictures", vanityPlate));
+ _root.menu = rcMenu;
+ }
+
+ private function vanityPlate():Void {
+// getURL("https://www.carbonpictures.com/cgi-bin/bucky/profile?username=tfarnon");
+ }
+} \ No newline at end of file
diff --git a/bPod/com/feeds/FeedButton.as b/bPod/com/feeds/FeedButton.as
new file mode 100644
index 0000000..d8d1ed2
--- /dev/null
+++ b/bPod/com/feeds/FeedButton.as
@@ -0,0 +1,36 @@
+import mx.utils.Delegate;
+import mx.transitions.easing.*;
+import mx.transitions.Tween;
+import com.events.EventBroadcaster;
+
+import com.keywords.KeywordButton;
+
+class com.feeds.FeedButton extends KeywordButton {
+
+ private var username_mc:MovieClip;
+ private var backing:MovieClip;
+ private var initialAlpha:Number;
+ private var overlay:MovieClip;
+
+ private function makeButton(_val:Object):Void {
+
+ overlay._visible = false;
+ initialAlpha = backing._alpha;
+ title_mc.title_txt.text = _val.name;
+
+ super.setPosition();
+ }
+
+ private function handleRollOver():Void {
+ var tTween = new Tween(backing, "_alpha", Regular.easeOut, backing._alpha, 40, .4, true);
+ }
+
+ private function handleRollOut():Void {
+
+ if(visited) { var fadeVal:Number = initialAlpha; }
+ else { var fadeVal:Number = initialAlpha; }
+
+ var tTween = new Tween(backing, "_alpha", Regular.easeOut, backing._alpha, initialAlpha, .4, true);
+ }
+
+}; \ No newline at end of file
diff --git a/bPod/com/feeds/FeedItemButton.as b/bPod/com/feeds/FeedItemButton.as
new file mode 100644
index 0000000..8666253
--- /dev/null
+++ b/bPod/com/feeds/FeedItemButton.as
@@ -0,0 +1,59 @@
+import mx.utils.Delegate;
+import mx.transitions.easing.*;
+import mx.transitions.Tween;
+import com.events.EventBroadcaster;
+
+import com.threads.ThreadButton;
+
+class com.feeds.FeedItemButton extends ThreadButton {
+
+ private var username_mc:MovieClip;
+ private var alphabet_mc:MovieClip;
+ private var backing:MovieClip;
+ private var initialAlpha:Number;
+ private var overlay:MovieClip;
+
+ private function makeButton(_val:Object):Void {
+ title_mc.title_txt.autoSize = true;
+ title_mc.title_txt.text = _val.name;
+
+ if (title_mc._height > 26) {
+ title_mc.title_txt.autoSize = false;
+ title_mc.title_txt._height = 28.1;
+ }
+
+ initialAlpha = backing._alpha;
+
+
+ title_mc._y = (_y + _height / 2) - (title_mc._height / 2) ;
+
+ // backing._height = title_mc.title_txt._height;
+
+ this.cacheAsBitmap = true;
+ super.setPosition();
+ }
+
+
+ private function handleRollOver():Void {
+ var tTween = new Tween(backing, "_alpha", Regular.easeOut, backing._alpha, 40, .4, true);
+// makeWhite();
+ }
+
+ private function handleRollOut():Void {
+
+ if(visited) { var fadeVal:Number = initialAlpha; }
+ else { var fadeVal:Number = initialAlpha; }
+
+ var tTween = new Tween(backing, "_alpha", Regular.easeOut, backing._alpha, initialAlpha, .4, true);
+// makeBlack();
+ }
+
+ private function makeWhite():Void {
+ title_mc.title_txt.textColor =0xFFFFFF;
+ }
+
+ private function makeBlack():Void {
+ title_mc.title_txt.textColor =0x000000;
+ }
+
+}; \ No newline at end of file
diff --git a/bPod/com/feeds/FeedItemScroller.as b/bPod/com/feeds/FeedItemScroller.as
new file mode 100644
index 0000000..960d5c2
--- /dev/null
+++ b/bPod/com/feeds/FeedItemScroller.as
@@ -0,0 +1,17 @@
+import com.oop.ScrollingMenuFrame;
+
+class com.feeds.FeedItemScroller extends ScrollingMenuFrame
+{
+ var intRate:Number = 20; // scroller speed
+
+ public function doLoad(_dataArray:Array ):Void {
+
+
+ holder_mc.attachMovie("FeedItemSelectionSystem", "feeds", 1000);
+ holder_mc["feeds"].doInit(_dataArray, "FeedItemButton" );
+
+// holder_mc._x = 0; // use as needed! this puts the horiz scroller back in view
+ holder_mc._y = 0; // when a keyword tile is clicked.
+ }
+
+}; \ No newline at end of file
diff --git a/bPod/com/feeds/FeedItemSelectionSystem.as b/bPod/com/feeds/FeedItemSelectionSystem.as
new file mode 100644
index 0000000..e928f73
--- /dev/null
+++ b/bPod/com/feeds/FeedItemSelectionSystem.as
@@ -0,0 +1,64 @@
+import com.threads.ThreadSelectionSystem;
+import com.services.BuckyServices;
+
+class com.feeds.FeedItemSelectionSystem extends ThreadSelectionSystem {
+
+ private var itemsPerRow:Number = 1;
+ private var vertSpace:Number = 1;
+
+ public function doAction():Void {
+
+ var theItem:Object = systemData[getCurrentSelection()];
+
+ var theDesc:String = stripTags (theItem.desc);
+
+/* if (theDesc.length <= 1 )
+ trace ( stripTags (theItem.desc) );
+ else
+ trace (theItem.link ); */
+
+
+ getURL (theItem.link , "_blank");
+
+
+/* for (var prop in theItem) {
+ trace (prop + " : " + theItem[prop]);
+ }*/
+ }
+
+
+ private function stripTags (s:String):String
+ {
+ var gay:Boolean = false;
+
+ var a:Array = s.split ("");
+ var b:Array = new Array ();
+
+ for (var i = 0; i < a.length; i++)
+ {
+ if (a[i] == '<')
+ {
+ gay = true;
+ }
+ else if (a[i] == '>')
+ {
+ gay = false;
+ }
+ else if (!gay)
+ {
+ b.push (a[i]);
+ }
+ }
+
+/* var final:String = b.join("");
+
+ trace ("final == " + final);
+
+ return final;
+*/
+ return b.join ("");
+
+
+ }
+
+}; \ No newline at end of file
diff --git a/bPod/com/feeds/FeedScroller.as b/bPod/com/feeds/FeedScroller.as
new file mode 100644
index 0000000..2b3d835
--- /dev/null
+++ b/bPod/com/feeds/FeedScroller.as
@@ -0,0 +1,16 @@
+import com.oop.ScrollingMenuFrame;
+
+class com.feeds.FeedScroller extends ScrollingMenuFrame
+{
+ var intRate:Number = 20; // scroller speed
+
+ public function doLoad( _dataArray:Array ):Void {
+ trace ( "FeedScroller: doLoad");
+ holder_mc.attachMovie("FeedSelectionSystem", "feeds", 1000);
+ holder_mc["feeds"].doInit(_dataArray, "FeedItemButton" );
+
+// holder_mc._x = 0; // use as needed! this puts the horiz scroller back in view
+ holder_mc._y = 0; // when a keyword tile is clicked.
+ }
+
+}; \ No newline at end of file
diff --git a/bPod/com/feeds/FeedSelectionSystem.as b/bPod/com/feeds/FeedSelectionSystem.as
new file mode 100644
index 0000000..56ef7c4
--- /dev/null
+++ b/bPod/com/feeds/FeedSelectionSystem.as
@@ -0,0 +1,32 @@
+import com.feeds.ProcessRSS;
+import com.services.BuckyServices;
+import com.events.EventBroadcaster;
+import com.keywords.KeywordSelectionSystem;
+
+class com.feeds.FeedSelectionSystem extends KeywordSelectionSystem {
+
+ private var vertSpace:Number = 1;
+ private var theArray:Array;
+
+ private var newFeed:ProcessRSS;
+
+ private function doAction():Void {
+ return;
+// trace ( "FeedSelectionSystem: doAction");
+ eraseExistingSpinners();
+ startButtonSpinner();
+ theArray = new Array();
+ newFeed = new ProcessRSS (theArray, BuckyServices.rssProxy);
+ newFeed.loadFeed (selectedData().feed);
+ EventBroadcaster.getInstance().addEventListener("feedListMade", this);
+ }
+
+ private function feedListMade():Void {
+
+ BuckyServices.feedThreadsMC.doLoad( newFeed.target_txt , "FeedItemButton" );
+ EventBroadcaster.getInstance().broadcastEvent("switchToFeedThreadsView", this);
+ eraseExistingSpinners();
+
+ }
+
+}; \ No newline at end of file
diff --git a/bPod/com/feeds/ProcessRSS.as b/bPod/com/feeds/ProcessRSS.as
new file mode 100644
index 0000000..1c09d8d
--- /dev/null
+++ b/bPod/com/feeds/ProcessRSS.as
@@ -0,0 +1 @@
+import mx.utils.Delegate; import mx.controls.TextArea; import com.events.EventBroadcaster; class com.feeds.ProcessRSS { //declare public properties: //the TextArea component which will display the information public var target_txt:Array; //the address of the PHP proxy script public var proxyURL:String; //declare private properties: private var _xml:XML; private var items:Array; private var senderObj:LoadVars; private var loaderID:Number; //constructor function ProcessRSS (target:Array, proxy:String) { target_txt = target; proxyURL = proxy; _xml = new XML(); _xml.ignoreWhite = true; _xml.onLoad = Delegate.create(this, onLoadEvent); } private function onLoadEvent(success:Boolean):Void { if (success) { //terminate any running intervals clearInterval(loaderID); // target_txt.text = "<p>Click a headline to open that entry in a new window.</p><br>"; //populate "items" array items = getNodes(_xml, "item"); displayContent(items); } else { // target_txt.text = "<p>XML failed to load.</p>"; } } public function loadFeed(feedURL:String):Void { //initialization: //terminate any running intervals clearInterval(loaderID); //start with an empty array - replace any previous content items = new Array(); //clear any previous text // target_txt.text = ""; //reset scroll position of TextArea component // target_txt.vPosition = 0; //create LoadVars Object senderObj = new LoadVars(); //assign a value to a property of the LoadVars Object senderObj.rss = feedURL; /* The LoadVars.sendAndLoad method conveniently accepts an XML Object as its target. We can send a string (url) to the PHP proxy script and get an XML document back. */ senderObj.sendAndLoad(proxyURL, _xml, "GET"); /* Use setInterval to monitor load progress every 25 milliseconds. Pass the XML document whose download progress you wish to monitor as the 4th argument. Ue of "this" in "this.loaderID" is critical for telling the loadingFeedback() method in what scope to find the XML object. Thanks to Colin Moock for the code this is based loosely on. */ this.loaderID = setInterval(this, "loadingFeedback", 25, _xml); } /* getNodes(): a recursive method for "walking" the XML tree searching for a match to a node name. This is based on an ActionScript 1 XML prototype by Peter Hall. The method returns an array of all XML nodes that match "name". It is used to populate the "items" array with all nodes in the rss document named "item". Note that a node of nodeType 3 is a text node (a string). We don't want to waste time with that now, so the script skips them. */ private function getNodes(node:XMLNode, name:String):Array { var nodes:Array = new Array(); var c:XMLNode = node.firstChild; while (c) { if (c.nodeType != 3) { if (c.nodeName == name) { nodes.push(c); } nodes = nodes.concat(getNodes(c, name)); } c = c.nextSibling; } return nodes; } /* displayContent() is the method responsible for extracting the data I am interested in (the text content of title, link and description) and formatting it for the TextArea component. */ private function displayContent(source:Array):Void { var entries:Number = source.length; var currentNode:XMLNode; var tempTitle:String; var tempLink:String; var tempDescription:String; for (var i:Number = 0; i<entries; i++){ currentNode = source[i]; tempTitle = extractContent(currentNode, "title"); tempLink = extractContent(currentNode, "link"); tempDescription = extractContent(currentNode, "description"); var oneEntry:String = "<headline><a href='"+ tempLink+"' target='_blank'>"+tempTitle+ "</a></headline><p>"+ tempDescription+"</p><br>"; var tmpObj:Object = new Object(); tmpObj.name = tempTitle; tmpObj.link = tempLink; tmpObj.desc = tempDescription; target_txt.push (tmpObj); // target_txt.text += oneEntry; } EventBroadcaster.getInstance().broadcastEvent("feedListMade", null); } /* extractContent() is a modified version of getNodes(). Like getNodes(), it searches the source node recursively for a match to "name", but what it returns when it does find a match is the text content of that node. */ private function extractContent (source:XMLNode, name:String):String { var nodeTxt:String = ""; var c:XMLNode = source.firstChild; while (c) { if (c.nodeType != 3) { if (c.nodeName == name) { nodeTxt = c.firstChild.nodeValue; } nodeTxt += extractContent(c, name); } c = c.nextSibling; } return nodeTxt; } //the progress monitor called by setInterval private function loadingFeedback(xmlObj:XML):Void { var amtLoaded:Number = xmlObj.getBytesLoaded(); if (amtLoaded <= 4){ // target_txt.text = "<p>Requesting Data...</p>"; } else { // target_txt.text = "<p>Loaded: "+ Math.floor(amtLoaded/1024) + " kilobytes</p>"; } } } \ No newline at end of file
diff --git a/bPod/com/files/FileButton.as b/bPod/com/files/FileButton.as
new file mode 100644
index 0000000..f5adced
--- /dev/null
+++ b/bPod/com/files/FileButton.as
@@ -0,0 +1,89 @@
+
+import com.services.BuckyServices;
+import com.threads.ThreadButton;
+
+class com.files.FileButton extends ThreadButton {
+ private var username_mc:MovieClip;
+ private var backing:MovieClip;
+ private var initialAlpha:Number;
+
+ private function handleRollOut():Void {
+// _root.thumbnail.removeMovieClip();
+ makeBlack();
+ super.handleRollOut();
+ }
+
+ private function handleRollOver():Void {
+ super.handleRollOver();
+ if ( (itemData.filetype == "JPG") ||
+ (itemData.filetype == "GIF") ||
+ (itemData.filetype == "PNG") ) { displayImageThumbnail (BuckyServices.getThumbURL (itemData.filename));
+ makeWhite();
+ }
+ }
+
+ private function displayImageThumbnail(_inURL:String):Void {
+
+ _root.imagesHolder.thumbnail.unloadMovie();
+ _root.imagesHolder.createEmptyMovieClip ("thumbnail", _root.getNextHighestDepth());
+
+ try {
+ _root.imagesHolder.thumbnail.loadMovie (_inURL);
+ }
+
+ catch (_err:Error) {}
+
+ _root.imagesHolder.thumbnail._alpha = 50;
+
+ var j:MovieClip = _root.imagesHolder.thumbnail;
+
+ j._xscale = j._yscale = 200;
+/* j._x = (Stage.width/2 - j._width/2);
+ j._y = (Stage.height/2 - j._height/2);
+*/
+
+// _root.imagesHolder.thumbnail._xscale = _root.imagesHolder.thumbnail._yscale = 250;
+ }
+
+
+
+
+ private function makeWhite():Void {
+ title_mc.title_txt.textColor =0xFFFFFF;
+ }
+
+ private function makeBlack():Void {
+ title_mc.title_txt.textColor =0x000000;
+ }
+
+
+
+ private function makeButton(_val:Object):Void {
+ title_mc.title_txt.text = _val.filename;
+ title_mc.title_txt.autoSize = true;
+
+
+ if (title_mc._height > 28.1) {
+ title_mc.title_txt.autoSize = false;
+ title_mc.title_txt._height = 28.1;
+ }
+
+ initialAlpha = backing._alpha;
+
+ if (_val.filetype == "MP3") {
+ transformTheButtonColor();
+ }
+
+
+ title_mc._y = (_y + _height / 2) - (title_mc._height / 2) ;
+
+ // backing._height = title_mc.title_txt._height;
+
+ this.cacheAsBitmap = true;
+ super.setPosition();
+ }
+
+ private function transformTheButtonColor():Void {
+ }
+
+}; \ No newline at end of file
diff --git a/bPod/com/files/FileScroller.as b/bPod/com/files/FileScroller.as
new file mode 100644
index 0000000..991cf9c
--- /dev/null
+++ b/bPod/com/files/FileScroller.as
@@ -0,0 +1,15 @@
+import com.oop.ScrollingMenuFrame;
+
+class com.files.FileScroller extends ScrollingMenuFrame
+{
+ var intRate:Number = 20; // scroller speed
+
+ public function doLoad(_dataArray:Array):Void {
+ holder_mc.attachMovie("FileSelectionSystem", "files", 1000);
+ holder_mc["files"].doInit(_dataArray, "FileButton");
+
+// holder_mc._x = 0; // use as needed! this puts the vert scroller back in view
+ holder_mc._y = 0; // when a keyword tile is clicked.
+ }
+
+}; \ No newline at end of file
diff --git a/bPod/com/files/FileSelectionSystem.as b/bPod/com/files/FileSelectionSystem.as
new file mode 100644
index 0000000..d93ea58
--- /dev/null
+++ b/bPod/com/files/FileSelectionSystem.as
@@ -0,0 +1,19 @@
+import com.threads.ThreadSelectionSystem;
+import com.services.BuckyServices;
+
+class com.files.FileSelectionSystem extends ThreadSelectionSystem {
+
+ private var itemsPerRow:Number = 1;
+ private var vertSpace:Number = 1;
+
+ public function doAction():Void {
+
+ var theItem:Object = systemData[getCurrentSelection()];
+ var fileURL:String = BuckyServices.singleFilePath + theItem.filename;
+
+ _root.debug.text = theItem.theURL;
+
+ if (theItem.filetype == "MP3") { _root.player.init ( theItem ); }
+ else { getURL (theItem.theURL, "_blank"); }
+ }
+}; \ No newline at end of file
diff --git a/bPod/com/graphics/BuckyGradientBox.as b/bPod/com/graphics/BuckyGradientBox.as
new file mode 100644
index 0000000..ffae2de
--- /dev/null
+++ b/bPod/com/graphics/BuckyGradientBox.as
@@ -0,0 +1,43 @@
+//
+// Gradient Box!!!!!!!
+//
+// Created by Brian Ortiz on 2007-09-08.
+// Copyright (c) 2007 BONER FACTORY LTD. All rights reserved.
+//
+
+import flash.geom.Matrix;
+
+class com.graphics.BuckyGradientBox extends MovieClip
+ {
+ private var _bar:MovieClip;
+ private var matrix:Matrix;
+ private var lineWidth:Number = 2;
+
+ public function BuckyGradientBox()
+ {
+ }
+
+ public function initColors(inColorOne:Number, inColorTwo:Number, inColorThree:Number, inW:Number, inH:Number)
+ {
+
+ if (inColorOne == undefined)
+ inColorOne = 0xFFFFFF;
+ if (inColorTwo == undefined)
+ inColorTwo = 0xDDDDDD;
+ if (inColorThree == undefined)
+ inColorThree = 0x000000;
+
+ matrix = new Matrix();
+ matrix.createGradientBox(inW, inH, 0, 0, 0);
+
+ beginGradientFill("radial", [inColorOne, inColorTwo], [100, 100], [0, 0xFF], matrix);
+ lineStyle(lineWidth, inColorThree, 100, true, "none", "none", "miter", 1);
+
+ moveTo(0, 0);
+ lineTo(inW, 0);
+ lineTo(inW, inH);
+ lineTo(0, inH);
+ lineTo(0, 0);
+ endFill();
+ }
+ }; \ No newline at end of file
diff --git a/bPod/com/keywords/KeywordButton.as b/bPod/com/keywords/KeywordButton.as
new file mode 100644
index 0000000..aec9648
--- /dev/null
+++ b/bPod/com/keywords/KeywordButton.as
@@ -0,0 +1,95 @@
+import com.oop.UIButton;
+import com.oop.SelectionSystem;
+import mx.utils.Delegate;
+
+import mx.transitions.easing.*;
+import mx.transitions.Tween;
+
+class com.keywords.KeywordButton extends UIButton
+{
+ private var title_mc:MovieClip;
+ private var desc_mc:MovieClip;
+ private var icon_mc:MovieClip;
+ private var bg_mc:MovieClip;
+ private var gridObj:Object;
+ private var shine_mc:MovieClip;
+ private var element_mc:MovieClip;
+ private var initialAlpha:Number = 60;
+ private var initialShine:Number = 30;
+ private var tint:Number;
+
+ public var elementSymbol:String;
+
+ private var installedX:Number = 0;
+ private var installedY:Number = 0;
+
+ public function KeywordButton() {}
+
+ public function init(_selectionSystem:SelectionSystem, _id:Number, _itemData:Object, _gridObj:Object ):Void {
+ gridObj = _gridObj;
+ super.init (_selectionSystem, _id, _itemData);
+ makeButton(itemData);
+ }
+
+ public function hashColor (_inStr:String):Number {
+ switch (_inStr) {
+ case "ivory": return (0xE0E0D8);
+ case "orange": return (0xFFD799);
+ case "yellow": return (0xFFF7A8);
+ case "green": return (0xDAF4B2);
+ case "blue": return (0xCCCCFF);
+ case "purple": return (0xDDB1FF);
+ case "pink": return (0xFFAECD);
+ case "plain": return (0xE6f0f0);
+ default: return (0xFFFFFF);
+ }
+ }
+
+
+ private function makeButton(_val:Object):Void {
+ icon_mc._alpha = initialAlpha;
+ shine_mc._alpha = initialShine;
+ title_mc.title_txt.text = _val.name.toLowerCase();
+
+ var c:String = _val.name.charAt(0); // b
+ var cc:String = _val.name.charAt(1); // u
+ var u:String = c.toUpperCase(); // B (if b)
+ var uu:String = cc.toLowerCase(); // u (if U)
+ var tmp:String = u.concat (uu); // Bu
+
+ element_mc.element_txt.text = tmp;
+
+ elementSymbol = tmp;
+
+
+ var tmpColor:Number = hashColor ( _val.color.toString() );
+ element_mc.element_txt.textColor = tmpColor; // &= 0x7F7F7F;
+ setPosition();
+ }
+
+ private function setPosition():Void {
+ _x = Math.round ( (gridObj.grid_x * _width) + (gridObj.horizSpace * gridObj.grid_x));
+ _y = Math.round ( ((gridObj.grid_y-1) * _height) + (gridObj.vertSpace * (gridObj.grid_y-1)));
+
+ installedX = _x;
+ installedY = _y;
+ }
+
+ private function handleRollOver():Void {
+ var tTween = new Tween(icon_mc, "_alpha", Regular.easeOut, icon_mc._alpha, 100, 1, true);
+ var shineTween = new Tween(shine_mc, "_alpha", Regular.easeOut, shine_mc._alpha, 0, .2, true);
+ }
+
+ private function handleRollOut():Void
+ {
+ if(visited) { var fadeVal:Number = initialAlpha; }
+ else { var fadeVal:Number = initialAlpha; }
+
+ var tTween = new Tween (icon_mc, "_alpha", Regular.easeOut, icon_mc._alpha, initialAlpha, 1, true);
+ var shineTween = new Tween (shine_mc, "_alpha", Regular.easeOut, shine_mc._alpha, initialShine, .2, true);
+ }
+
+ public function setSelected():Void
+ {
+ }
+} \ No newline at end of file
diff --git a/bPod/com/keywords/KeywordScroller.as b/bPod/com/keywords/KeywordScroller.as
new file mode 100644
index 0000000..5bcda46
--- /dev/null
+++ b/bPod/com/keywords/KeywordScroller.as
@@ -0,0 +1,67 @@
+import com.oop.ScrollingMenuFrame;
+
+class com.keywords.KeywordScroller extends ScrollingMenuFrame
+{
+ var intRate:Number = 14; // scroller speed
+ var adornments:Number = 0 ;
+
+ var tagArray:Array;
+
+ public function doLoad(_dataArray:Array):Void {
+ holder_mc.attachMovie("KeywordSelectionSystem", "keywordTiles", 1000);
+ holder_mc["keywordTiles"].doInit(_dataArray, "KeywordButton");
+ }
+
+ public function insertAdornment():Void {
+ adornments++;
+ var adorn:MovieClip = holder_mc["keywordTiles"].attachMovie ("adornment", "adornment" + adornments , this.getNextHighestDepth()-adornments );
+ _root.debug.text += "\nadorn: " + adorn;
+ adorn._y = _height;
+ }
+
+ public function insertFeeds():Void {
+ holder_mc.attachMovie ("FeedSelectionSystem", "feeds", 2000);
+ holder_mc["feeds"]._y = _height;
+ holder_mc["feeds"].doInit ( buckyFeeds() , "KeywordButton");
+ }
+
+ public function insertTags(_inArray:Array):Void {
+ holder_mc.attachMovie ("KeywordSelectionSystem", "tags", 3000);
+ holder_mc["tags"]._y = _height;
+ holder_mc["tags"].doInit ( _inArray , "TagButton");
+ }
+
+ public function buckyFeeds():Array {
+
+// return [];
+ var feeds:Array = [
+ {name:"bboing", color:"yellow", feed:"http://feeds.feedburner.com/boingboing/iBag" },
+ {name:"drawn", color:"plain", feed:"http://drawn.ca/feed/" },
+ {name:"daily rotn", color:"orange", feed:"http://feeds.dailyrotten.com/dailyrotten.rss" },
+
+ {name:"slashdot", color:"green", feed:"http://rss.slashdot.org/Slashdot/slashdot" },
+ {name:"trailers", color:"blue", feed:"http://images.apple.com/trailers/rss/newtrailers.rss" },
+ {name:"info", color:"yellow", feed:"http://feeds.infosthetics.com/infosthetics" },
+
+ {name:"reddit", color:"orange", feed:"http://reddit.com/.rss" },
+ {name:"jerkcity", color:"yellow", feed:"http://www.jerkcity.com/jc.rss" },
+ {name:"d.lic.us", color:"purple", feed:"http://del.icio.us/rss/" },
+
+ {name:"w4m", color:"pink", feed:"http://sfbay.craigslist.org/search/w4m?query=&minAsk=min&maxAsk=max&hasPic=1&format=rss" },
+ {name:"m4m", color:"pink", feed:"http://sfbay.craigslist.org/search/m4m?query=&minAsk=min&maxAsk=max&hasPic=1&format=rss" },
+ {name:"casual", color:"pink", feed:"http://sfbay.craigslist.org/search/cas?query=&minAsk=min&maxAsk=max&hasPic=1&format=rss" },
+
+ {name:"art farts", color:"ivory", feed:"http://www.asciiartfarts.com/farts.rss" }
+
+
+
+ ];
+
+
+ return (feeds);
+
+ }
+
+
+
+}; \ No newline at end of file
diff --git a/bPod/com/keywords/KeywordSelectionSystem.as b/bPod/com/keywords/KeywordSelectionSystem.as
new file mode 100644
index 0000000..45183f4
--- /dev/null
+++ b/bPod/com/keywords/KeywordSelectionSystem.as
@@ -0,0 +1,85 @@
+import com.tubes.BuckyThreadTube;
+import com.events.EventBroadcaster;
+import com.oop.GridSelectionSystem;
+import com.services.BuckyServices;
+
+class com.keywords.KeywordSelectionSystem extends GridSelectionSystem {
+
+ private var tube:BuckyThreadTube;
+ private var cockblocker:Boolean = false; // to discourage crazy button clickage
+ private var lastClicked:Number; // failsafe for crazy button clickage
+
+ private function doAction():Void {
+ if (!cockblocker) {
+ eraseExistingSpinners();
+ lastClicked = currentSelection;
+ BuckyServices.setActiveKeyword ( selectedData() );
+ EventBroadcaster.getInstance().addEventListener("threadListMade", this);
+ var tag_preamble:String;
+ if (selectedData().isTag) {
+ tag_preamble = "tag_";
+ } else {
+ tag_preamble = "";
+ }
+ tube = new BuckyThreadTube ( BuckyServices.threads + tag_preamble + selectedData().name);
+ startButtonSpinner();
+ cockblocker = true;
+ }
+ }
+
+ private function eraseExistingSpinners():Void {
+ for (var i:Number = 0 ; i < listItems.length ; i++) {
+ var t:MovieClip = listItems[i];
+ t.element_mc._visible = true;
+ t.element_mc.element_txt.text = t.elementSymbol;
+ t["spinnerHolder"].removeMovieClip(); // kill if exists .. fail silently if not
+ }
+ EventBroadcaster.getInstance().removeEventListener("threadListMade", this);
+ }
+
+ private function startButtonSpinner():Void {
+ var t:MovieClip = listItems[currentSelection];
+ t.element_mc._visible = false;
+ t.createEmptyMovieClip ("spinnerHolder", t.getNextHighestDepth());
+ t["spinnerHolder"].attachMovie ("Spinner", "spinner" , 100, {_x:40, _y:29, _width:27, _height:27});
+ }
+
+
+ private function threadListMade (_evt:Object):Void {
+ eraseExistingSpinners();
+
+ if ((tube.articles.length != undefined) && (tube.articles.length != 0)) {
+ BuckyServices.threadsMC.doLoad( tube.articles, "ThreadButton" );
+ EventBroadcaster.getInstance().broadcastEvent("switchToThreadsView", this);
+ BuckyServices.setActiveKeyword ( selectedData() );
+ setCurrentSelection ( currentSelection );
+ cockblocker = false;
+ }
+
+ else if (tube.articles.length == 0) {
+ drawFrownyFace();
+ cockblocker = false;
+ }
+
+ else { trace ("sigh, some other weird scenario"); }
+ }
+
+
+ private function drawFrownyFace():Void {
+ listItems[lastClicked].element_mc.element_txt.text = listItems[lastClicked].elementSymbol = ":(";
+ }
+
+ public function setSelection(_id:Number):Void {
+
+ // overriding existing selection system's setSelection so tiles that get
+ // clicked do not killMouseEvents() -- the same tile can be clicked over and over.
+
+ listItems[currentSelection].setUnselected();
+ currentSelection = _id;
+ listItems[currentSelection].setSelected();
+ doAction();
+ }
+
+
+};
+
diff --git a/bPod/com/oop/GridSelectionSystem.as b/bPod/com/oop/GridSelectionSystem.as
new file mode 100644
index 0000000..c9694ca
--- /dev/null
+++ b/bPod/com/oop/GridSelectionSystem.as
@@ -0,0 +1,49 @@
+import com.oop.SelectionSystem;
+
+class com.oop.GridSelectionSystem extends SelectionSystem
+{
+ private var itemsPerRow:Number = 3;
+ private var currentRow:Number = 0;
+ private var currentColumn:Number = 0;
+
+ //space between rows and columns
+ private var horizSpace:Number = -6; //60;
+ private var vertSpace:Number = 0; //50;
+
+ public function GridSelectionSystem() {}
+
+ private function attachButtonItems():Void {
+ //get placement object according to counts
+ for (var i:Number = 0; i < systemData.length; i++) {
+ updateGrid(i);
+ var item:MovieClip = this.attachMovie(exportName, "Item_" + i, i );
+ item.init(this, i, systemData[i], getItemPositionObj());
+ listItems.push(item);
+ }
+ }
+
+
+
+ private function updateGrid(_index:Number) {
+ if(!(_index % itemsPerRow)) { currentColumn = 0; currentRow++; }
+ else { currentColumn++; }
+ }
+
+
+ private function getItemPositionObj():Object {
+ var obj:Object = new Object();
+ obj.horizSpace = horizSpace;
+ obj.vertSpace = vertSpace;
+ obj.grid_x = currentColumn;
+ obj.grid_y = currentRow;
+ return obj;
+ }
+
+
+
+ private function selectedData():MovieClip {
+ return systemData[ getCurrentSelection() ];
+ }
+
+
+} \ No newline at end of file
diff --git a/bPod/com/oop/ScrollingMenuFrame.as b/bPod/com/oop/ScrollingMenuFrame.as
new file mode 100644
index 0000000..5c91751
--- /dev/null
+++ b/bPod/com/oop/ScrollingMenuFrame.as
@@ -0,0 +1,148 @@
+
+class com.oop.ScrollingMenuFrame extends MovieClip
+{
+ private var hotSpot_mc:MovieClip; // used to detect mouse events
+ private var holder_mc:MovieClip; // holder for the flat-list SelectionSystem
+ private var hotSpotMask:MovieClip; // bluh .. also used i guess
+
+ private var initY:Number;
+ private var initX:Number;
+
+ private var initHolderX:Number;
+ private var initHolderY:Number;
+
+ var intRate:Number = 10; // scroller speed
+
+
+ public function ScrollingMenuFrame() {
+ doInit();
+ }
+
+
+/* public function doLoad(_dataArray:Array):Void {
+ holder_mc.attachMovie("KeywordSelectionSystem", "keywordTiles", 1000);
+ holder_mc["keywordTiles"].doInit(_dataArray, "KeywordButton");
+ }
+*/
+ public function enableMenu():Void {
+ initMenuScroll();
+ initMouseWatch();
+ setHotSpot(true);
+ }
+
+
+ public function disableMenu():Void {
+ killMouseWatch();
+ killMenuScroll();
+ setHotSpot(false);
+ }
+
+
+ private function doInit():Void {
+
+ initY = _x;
+ initX = _y;
+
+ initHolderX = holder_mc._x;
+ initHolderY = holder_mc._y;
+
+ initMenuScroll();
+
+ holder_mc.onMouseDown = function() {
+ if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
+// _parent.disableMenu();
+ }
+ }
+ }
+
+
+ private function setHotSpot(_isMenuEnabled:Boolean):Void {
+ if (_isMenuEnabled) {
+ hotSpot_mc.onRollOver = undefined;
+ } else {
+ hotSpot_mc.onRollOver = function() {
+ this._parent.enableMenu();
+ }
+ }
+ }
+
+
+
+ private function initMouseWatch():Void {
+ this.onMouseMove = function() {
+ if (!this.hitTest(_root._xmouse, _root._ymouse, true)) {
+ disableMenu();
+ }
+ }
+ }
+
+
+ private function killMouseWatch():Void {
+ this.onMouseMove = undefined;
+ }
+
+
+ private function initMenuScroll():Void {
+ this.onEnterFrame = function() {
+ if ((holder_mc._height >= hotSpotMask._height) || (holder_mc._width >= hotSpotMask._width)) {
+ doMenuScroll();
+ }
+ }
+ }
+
+
+ private function killMenuScroll():Void {
+ this.onEnterFrame = undefined;
+ }
+
+
+ private function doMenuScroll():Void {
+ var intTop:Number = initHolderY;
+ var intLeft:Number = initHolderX;
+ var intBottom:Number = intTop + hotSpotMask._height;
+ var intRight:Number = intLeft + hotSpotMask._width;
+
+
+ var intZero:Number = (intBottom + intTop) / 2;
+ var intZeroW:Number = (intRight + intLeft) / 2;
+
+ var intMousePos:Number = _ymouse - intZero;
+ var intMousePosW:Number = _xmouse - intZeroW;
+
+ var intMaxUp:Number = intTop - intZero;
+ var intMaxLeft:Number = intLeft - intZeroW;
+ var intMaxDown:Number = intBottom - intZero;
+ var intMaxRight:Number = intRight - intZeroW;
+
+ var _isHit:Boolean = this.hitTest(_root._xmouse, _root._ymouse, true);
+
+ if (_isHit) {
+
+ if (holder_mc._height > hotSpotMask._height ) {
+
+ // top & bottom bounds check
+
+ if (intMousePos > 0) { // below intZero? scroll up
+ holder_mc._y = Math.max(holder_mc._y - intRate * Math.pow((intMousePos/intMaxDown),2), intBottom - holder_mc._height) ;
+ }
+ else if (intMousePos < 0) { // above intZero? scroll down
+ holder_mc._y = Math.min(holder_mc._y + intRate * Math.pow((intMousePos/intMaxUp),2), intTop );
+ }
+
+
+ // left & right bounds check
+
+/* if (intMousePosW > 0) { // right of intZero? scroll left
+ holder_mc._x = Math.max(holder_mc._x - intRate * Math.pow((intMousePosW/intMaxRight),2), intRight - holder_mc._width);
+ }
+ else if (intMousePosW < 0) { // left of intZero? scroll right
+ holder_mc._x = Math.min(holder_mc._x + intRate * Math.pow((intMousePosW/intMaxLeft),2), intLeft);
+ }
+*/
+
+ }
+
+ }
+
+ }
+}
diff --git a/bPod/com/oop/SelectionSwitcher.as b/bPod/com/oop/SelectionSwitcher.as
new file mode 100644
index 0000000..f5685ea
--- /dev/null
+++ b/bPod/com/oop/SelectionSwitcher.as
@@ -0,0 +1,194 @@
+import mx.utils.Delegate;
+import com.services.BuckyServices;
+import com.events.EventBroadcaster;
+import mx.transitions.easing.Regular;
+import mx.transitions.Tween;
+
+class com.oop.SelectionSwitcher extends MovieClip
+{
+ private static var slideAround:Boolean = true; // turn off while debugging only
+
+ private var selectionsMC:MovieClip; // all scrolling selection systems
+ private var initX:Number; // where they start
+ private var initY:Number;
+
+ private var bb:MovieClip; // back button
+
+ private var bbX:Number; // starting positions of nav buttons;
+ private var thX:Number;
+ private var kwX:Number;
+
+ private var initAlpha:Number = 70;
+
+ private var openKeywordsBtn:MovieClip; // open keywords button
+ private var openThreadBtn:MovieClip; // open threads button
+
+ private var currentView:String; // might as well be a string
+ private var agreedAlpha:Number = 75;
+ private var slideAmountX:Number = 210;
+ private var slideAmountY:Number = 210;
+ private var slideSpeed:Number = .4
+ private var activeThread:String; // to open a new browser window instead of
+ // switching to keyword/thread/file view.
+
+ public function SelectionSwitcher() {
+ establishStartingPoints();
+ EventBroadcaster.getInstance().addEventListener("switchToKeywordsView", this);
+ EventBroadcaster.getInstance().addEventListener("switchToThreadsView", this);
+ EventBroadcaster.getInstance().addEventListener("switchToFilesView", this);
+
+ EventBroadcaster.getInstance().addEventListener("switchToFeedThreadsView", this);
+
+
+ bb.onRelease = Delegate.create (this, handleBackButton);
+ openKeywordsBtn.onRelease = Delegate.create (this, handleOpenKeywordsBtn);
+ openThreadBtn.onRelease = Delegate.create (this, handleOpenThreadBtn);
+ }
+
+ private function handleBackButton():Void {
+ switch (currentView) {
+ case "threads" : switchToKeywordsView(); break;
+ case "files" : switchToThreadsView(); break;
+ case "feeds" : switchToFeedsView(); break;
+ default : break;
+ }
+ }
+
+ private function establishStartingPoints():Void {
+ initX = selectionsMC._x;
+ initY = selectionsMC._y;
+ bbX= bb._x;
+ thX= openThreadBtn._x;
+ kwX= openKeywordsBtn._x;
+ currentView = "keywords";
+ hideBackButton();
+ hideOpenThreadBtn();
+ hideOpenKeywordsBtn();
+
+ bb._alpha = openKeywordsBtn._alpha = openThreadBtn._alpha = initAlpha;
+ }
+
+ private function swapPlaces(_inA:MovieClip, _inB:MovieClip):Void {
+
+ var oldX:Number = _inA._x;
+ var oldY:Number = _inA._y;
+
+ _inA._x = _inB._x;
+ _inA._y = _inB._y;
+
+ _inB._x = oldX;
+ _inB._y = oldY;
+ }
+
+ private function handleOpenKeywordsBtn():Void {
+ switchToKeywordsView();
+ }
+
+ public function handleOpenThreadBtn():Void {
+ getURL ( BuckyServices.activeThreadPath , "_blank");
+ }
+
+ public function switchToKeywordsView(_evt:Object):Void {
+ removeAnyThumbnails();
+ hideBackButton();
+ hideOpenKeywordsBtn();
+ hideOpenThreadBtn();
+ _root.thumbnail.removeMovieClip();
+
+ // swapPlaces ( BuckyServices.threadsMC , BuckyServices.feedThreadsMC );
+
+ if (slideAround) {
+ var sTween = new Tween(selectionsMC, "_x", Regular.easeOut, selectionsMC._x, initX, slideSpeed, true);
+ }
+ currentView = "keywords";
+ }
+
+
+ public function switchToFeedsView(_evt:Object):Void {
+ removeAnyThumbnails();
+ hideBackButton();
+ hideOpenKeywordsBtn();
+ hideOpenThreadBtn();
+ _root.thumbnail.removeMovieClip();
+
+// swapPlaces ( BuckyServices.threadsMC , BuckyServices.feedThreadsMC );
+
+ if (slideAround) {
+ var xTween = new Tween(selectionsMC, "_x", Regular.easeOut, selectionsMC._x, initX, slideSpeed, true);
+ var yTween = new Tween(selectionsMC, "_y", Regular.easeOut, selectionsMC._y, initY, slideSpeed, true);
+ }
+ currentView = "feeds";
+ }
+
+
+
+
+ public function switchToThreadsView(_evt:Object):Void {
+ removeAnyThumbnails();
+ hideOpenKeywordsBtn();
+ hideOpenThreadBtn();
+ _root.thumbnail.removeMovieClip();
+
+ if (slideAround) {
+ var sTween = new Tween(selectionsMC, "_x", Regular.easeOut, selectionsMC._x, -slideAmountX, slideSpeed, true);
+ sTween.onMotionFinished = Delegate.create (this, showBackButton);
+ }
+ currentView = "threads";
+ }
+
+
+
+ public function switchToFeedThreadsView(_evt:Object):Void {
+ removeAnyThumbnails();
+ hideOpenKeywordsBtn();
+ hideOpenThreadBtn();
+ _root.thumbnail.removeMovieClip();
+
+ if (slideAround) {
+ var sTween = new Tween(selectionsMC, "_y", Regular.easeOut, selectionsMC._y, -slideAmountY, slideSpeed, true);
+ var sTween = new Tween(selectionsMC, "_x", Regular.easeOut, selectionsMC._x, -slideAmountX, slideSpeed, true);
+ sTween.onMotionFinished = Delegate.create (this, showBackButton);
+ }
+ currentView = "feeds";
+ }
+
+
+
+
+
+
+
+ public function switchToFilesView(_evt:Object):Void {
+// removeAnyThumbnails();
+ showOpenKeywordsBtn();
+ showOpenThreadBtn();
+
+ if (slideAround) {
+ var sTween = new Tween(selectionsMC, "_x", Regular.easeOut, selectionsMC._x, -slideAmountX*2, slideSpeed, true);
+ sTween.onMotionFinished = Delegate.create (this, showBackButton);
+ }
+ currentView = "files";
+ }
+
+
+
+
+
+
+
+ public function removeAnyThumbnails():Void {
+ _root.imagesHolder.thumbnail.unloadMovie();
+ }
+
+
+ private function showBackButton():Void { bb._x = bbX; }
+ private function showOpenKeywordsBtn():Void { openKeywordsBtn._x = kwX; }
+ private function showOpenThreadBtn():Void { openThreadBtn._x = thX; }
+
+ private function hideBackButton():Void { bb._x = -5000; }
+ private function hideOpenKeywordsBtn():Void { openKeywordsBtn._x = -5000; }
+ private function hideOpenThreadBtn():Void { openThreadBtn._x = -5000; }
+
+
+
+}
diff --git a/bPod/com/oop/SelectionSystem.as b/bPod/com/oop/SelectionSystem.as
new file mode 100644
index 0000000..2c89bf0
--- /dev/null
+++ b/bPod/com/oop/SelectionSystem.as
@@ -0,0 +1,89 @@
+/*
+ Manages a set of UI Buttons and controls selection state
+*/
+
+class com.oop.SelectionSystem extends MovieClip
+{
+
+//----------------------------------------------------------------------------------
+
+
+
+ // Data array passed in at instantiation
+ private var systemData:Array;
+
+ // Linkage name of button clip
+ private var exportName:String;
+
+ // Store our current state as a number
+ private var currentSelection:Number;
+
+ // Store references to our items
+ private var listItems:Array;
+
+
+
+
+
+//----------------------------------------------------------------------------------
+
+ public function SelectionSystem()
+ {
+
+ }
+
+//----------------------------------------------------------------------------------
+
+ public function doInit(_systemData:Array, _exportName:String):Void
+ {
+ systemData = _systemData;
+ exportName = _exportName;
+ listItems = new Array();
+ attachButtonItems();
+
+ }
+
+
+
+ public function setSelection(_id:Number):Void
+ {
+ if(currentSelection!=_id)
+ {
+ listItems[currentSelection].setUnselected();
+ currentSelection = _id;
+ listItems[currentSelection].setSelected();
+ doAction();
+ }
+ }
+
+ private function attachButtonItems():Void {
+ //override
+ }
+
+
+ private function doAction():Void
+ {
+ //override
+ }
+
+
+ // Getter/setters
+
+ public function getSystemData():Array
+ {
+ return systemData;
+ }
+
+ public function getCurrentSelection():Number
+ {
+ return currentSelection;
+ }
+
+ public function setCurrentSelection(_val:Number):Void
+ {
+ currentSelection = _val;
+ }
+
+
+
+} \ No newline at end of file
diff --git a/bPod/com/oop/UIButton.as b/bPod/com/oop/UIButton.as
new file mode 100644
index 0000000..035c16c
--- /dev/null
+++ b/bPod/com/oop/UIButton.as
@@ -0,0 +1,171 @@
+
+
+import com.oop.SelectionSystem;
+
+class com.oop.UIButton extends MovieClip
+{
+
+//--------------------------------------------------------------------------------------------
+
+ // Stores a reference to a SelectionSystem instance
+ private var selectionSystem:Object;
+
+ // Numeric id passed in by SelectionSystem when attached
+ private var id:Number;
+
+
+
+
+ // Keeps track of the selection status of this clip
+ private var selected:Boolean;
+
+ // Holds any custom visual information (such as title)
+ private var itemData:Object;
+
+ // stores the history of this item
+ private var visited:Boolean;
+
+
+
+
+//--------------------------------------------------------------------------------------------
+// constructor
+//--------------------------------------------------------------------------------------------
+
+ public function UIButton()
+ {
+ }
+
+//--------------------------------------------------------------------------------------------
+
+ /*
+ Set up our reference, ID, and item data
+ then take care of the clip's ui
+ */
+ public function init(_selectionSystem:SelectionSystem, _id:Number, _itemData:Object ):Void
+ {
+ selectionSystem = _selectionSystem;
+ itemData = _itemData;
+ id = _id;
+ _focusrect = false;
+ initMouseEvents();
+ }
+
+//--------------------------------------------------------------------------------------------
+
+ /*
+ Select this clip. It will stay visually selected
+ because the mouse is rolled over it
+ */
+ private function setSelected():Void
+ {
+ selected = visited = true;
+ killMouseEvents();
+ }
+
+//--------------------------------------------------------------------------------------------
+
+ /*
+ Unselect this clip
+ */
+ private function setUnselected():Void
+ {
+ selected = false;
+ initMouseEvents();
+ }
+
+//--------------------------------------------------------------------------------------------
+
+ private function setTitle(_val:Object):Void
+ {
+ // override
+ }
+
+//--------------------------------------------------------------------------------------------
+
+ private function setPosition():Void
+ {
+ //override
+ }
+
+//--------------------------------------------------------------------------------------------
+
+ /*
+ Tell selectionSystem about the click and pass this clips ID with it
+ */
+ private function handleRelease():Void
+ {
+ selectionSystem.setSelection(id);
+ }
+
+//--------------------------------------------------------------------------------------------
+
+ private function handlePress():Void
+ {
+ //override
+ }
+
+//--------------------------------------------------------------------------------------------
+
+ private function handleRollOver():Void
+ {
+ //override
+ }
+
+//--------------------------------------------------------------------------------------------
+
+ private function handleRollOut():Void
+ {
+ //override
+ }
+
+//--------------------------------------------------------------------------------------------
+
+ /*
+ Capture all of our mouse events and pass them
+ to the internal hander methods
+ */
+ private function initMouseEvents() : Void
+ {
+ useHandCursor = false;
+ onRollOver = handleRollOver;
+ onRollOut = handleRollOut;
+ onReleaseOutside = handleRollOut;
+ onPress = handlePress;
+ onRelease = handleRelease;
+ }
+
+//--------------------------------------------------------------------------------------------
+
+ /*
+ Remove all mouse events while the clip is selected
+ */
+ private function killMouseEvents():Void
+ {
+ useHandCursor = false;
+ delete onRollOver;
+ delete onRollOut;
+ delete onReleaseOutside;
+ delete this.onPress;
+ delete this.onRelease;
+ }
+
+//--------------------------------------------------------------------------------------------
+// Getter/Setters
+//--------------------------------------------------------------------------------------------
+
+ public function getId():Number
+ {
+ return id;
+ }
+
+//--------------------------------------------------------------------------------------------
+
+ public function setId(_val:Number):Void
+ {
+ id = _val;
+ }
+
+//--------------------------------------------------------------------------------------------
+
+}
diff --git a/bPod/com/player/Player.as b/bPod/com/player/Player.as
new file mode 100644
index 0000000..81acd3b
--- /dev/null
+++ b/bPod/com/player/Player.as
@@ -0,0 +1,131 @@
+
+import mx.utils.Delegate;
+import com.services.BuckyServices;
+
+import mx.transitions.easing.*;
+import mx.transitions.Tween;
+
+
+class com.player.Player extends MovieClip
+{
+ var songList:Array;
+ public static var s:Sound;
+
+ var currentSongTitle:String;
+ var currentSongInfo:String;
+
+ var backing:MovieClip;
+ var collapseBtn:MovieClip;
+ var infoBtn:MovieClip;
+ var playPauseBtn:MovieClip;
+
+
+ var collapsed:Boolean;
+ var dragging:Boolean;
+ var initted:Boolean;
+ var infoState:Boolean;
+ var isPlaying:Boolean;
+
+ var title_txt:TextField;
+
+ var initBacking:Number;
+ var oldX:Number;
+ var oldY:Number;
+
+ public function Player() {
+ initted = dragging = collapsed = infoState = useHandCursor = _focusrect = isPlaying = false;
+ }
+
+
+ public function init(_inObject:Object):Void {
+
+ if (!initted) {
+ var t:Tween = new Tween(this, "_y", Elastic.easeOut, _y, 120, 1, true);
+ initted = true;
+ }
+
+ infoBtn.gotoAndStop ("info");
+ infoBtn._rotation = 0;
+ infoState = false;
+ collapseBtn.gotoAndStop ("collapse");
+ playPauseBtn.gotoAndStop ("pauseIcon");
+
+ isPlaying = true;
+
+ currentSongTitle = _inObject.filename;
+ title_txt.text = currentSongTitle;
+ songList.push (_inObject.theURL);
+ initBacking = backing._alpha;
+
+ currentSongInfo = BuckyServices.activeKeyword + " > " + BuckyServices.activeThread;
+
+
+ stopAllSounds();
+
+
+ s = new Sound(_root);
+ s.loadSound ( _inObject.theURL , true );
+ s.start();
+ }
+
+
+
+
+ private function doCollapse():Void {
+ if (!collapsed) {
+ oldX = _x; oldY = _y;
+ var vFunc:Function = function () {
+ var xTween = new Tween(this, "_x", Regular.easeOut, _x, 11, .2, true);
+ var yTween = new Tween(this, "_y", Regular.easeOut, _y, 9, .2, true);
+ collapsed = true;
+ }
+ var bTween = new Tween (collapseBtn, "_rotation", Regular.easeOut, collapseBtn._rotation, 90, .4, true);
+ var rTween = new Tween (this, "_rotation", Regular.easeOut, _rotation, -90, .4, true);
+ rTween.onMotionFinished = Delegate.create (this, vFunc);
+ } else {
+ var xTween = new Tween(this, "_x", Regular.easeOut, _x, oldX, .4, true);
+ var bTween = new Tween (collapseBtn, "_rotation", Elastic.easeOut, collapseBtn._rotation, 0, .8, true);
+ var yTween = new Tween(this, "_y", Regular.easeOut, _y, oldY, .4, true);
+ rTween = new Tween (this, "_rotation", Regular.easeOut, _rotation, 0, .4, true);
+ collapsed = false;
+ }
+ }
+
+ private function doInfoBtn():Void {
+ var r:Number = infoState == true ? 0 : 180;
+ title_txt.text = infoState == true ? currentSongTitle : currentSongInfo;
+ new Tween(infoBtn, "_rotation", Regular.easeOut, infoBtn._rotation, r, .4, true);
+ infoState = !infoState;
+ }
+
+
+ private function doPlayPause():Void {
+ if (isPlaying) { s.stop(); isPlaying = false; playPauseBtn.gotoAndStop ("playIcon"); }
+ else { s.start(); isPlaying = true; playPauseBtn.gotoAndStop ("pauseIcon"); }
+ }
+
+
+ private function onPress():Void {
+ if (collapseBtn.hitTest (_root._xmouse, _root._ymouse)) {
+ doCollapse();
+ }
+ else if (infoBtn.hitTest (_root._xmouse, _root._ymouse))
+ {
+ doInfoBtn();
+ }
+ else if (playPauseBtn.hitTest (_root._xmouse, _root._ymouse))
+ {
+ doPlayPause();
+ }
+ else {
+ var aTween:Tween = new Tween(this, "_alpha", Regular.easeOut, _alpha, 20, .4, true);
+ startDrag(this);
+ }
+ }
+
+ private function onRelease():Void {
+ stopDrag();
+ var aTween:Tween = new Tween(this, "_alpha", Regular.easeOut, _alpha, 100, .4, true);
+ }
+
+} \ No newline at end of file
diff --git a/bPod/com/player/Visuals.as b/bPod/com/player/Visuals.as
new file mode 100644
index 0000000..2a4ac7b
--- /dev/null
+++ b/bPod/com/player/Visuals.as
@@ -0,0 +1,85 @@
+
+
+class com.player.Visuals extends MovieClip {
+
+// private var theRoot:MovieClip;
+ private var numParticles:Number = 10;
+ private var minDist:Number = 50;
+ private var springAmount:Number = .001;
+
+ private var vbounds:MovieClip;
+
+ public function Visuals() {}
+
+ public function init():Void
+ {
+ setMask (vbounds);
+
+ for(var i:Number=0; i< numParticles;i++) {
+ var particle:MovieClip = this.attachMovie("particle", "p" + i, i);
+ particle._x = Math.random() * vbounds._width;
+ particle._y = Math.random() * vbounds._height;
+ particle.vx = Math.random() * 6 - 3;
+ particle.vy = Math.random() * 6 - 3;
+ particle._xscale = particle._yscale = 10 + Math.random() * 100;
+ particle.mass = particle._xscale / 100;
+ }
+
+// onEnterFrame = initAnimation;
+
+
+ }
+
+ private function onEnterFrame():Void
+ {
+ for(var i:Number = 0;i<numParticles;i++)
+ {
+ var particle:MovieClip = this["p" + i];
+ particle._x += particle.vx;
+ particle._y += particle.vy;
+ if(particle._x > vbounds._width) {
+ particle._x = vbounds._x;
+ }
+ else if(particle._x < -10) {
+ particle._x = vbounds._width;
+ }
+ if(particle._y > vbounds._height) {
+ particle._y = vbounds._y;
+ }
+ else if(particle._y < -46) {
+ particle._y = vbounds._height;
+ }
+ }
+
+ clear();
+ for(i=0;i<numParticles-1;i++)
+ {
+ var partA:MovieClip = this["p" + i];
+ for(var j:Number = i+1;j<numParticles;j++) {
+ var partB:MovieClip = this["p" + j];
+ spring(partA, partB);
+ }
+ }
+ }
+
+ function spring(partA:MovieClip, partB:MovieClip):Void
+ {
+ var dx:Number = partB._x - partA._x;
+ var dy:Number = partB._y - partA._y;
+ var dist:Number = Math.sqrt(dx*dx + dy*dy);
+ if(dist < minDist)
+ {
+ lineStyle(1, 0xffffff, 100 - dist / minDist * 100);
+ moveTo(partA._x, partA._y);
+ lineTo(partB._x, partB._y);
+ var ax:Number = dx * springAmount;
+ var ay:Number = dy * springAmount;
+ partA.vx += ax / partA.mass;
+ partA.vy += ay / partA.mass;
+ partB.vx -= ax / partB.mass;
+ partB.vy -= ay / partB.mass;
+ }
+ }
+
+
+}; \ No newline at end of file
diff --git a/bPod/com/services/BuckyServices.as b/bPod/com/services/BuckyServices.as
new file mode 100644
index 0000000..d2d8560
--- /dev/null
+++ b/bPod/com/services/BuckyServices.as
@@ -0,0 +1,133 @@
+
+
+class com.services.BuckyServices {
+
+ // on-stage movie clip references:
+ public static var keywordsMC:MovieClip = _root.switcher.selectionsMC.keywordsMC;
+ public static var threadsMC:MovieClip = _root.switcher.selectionsMC.threadsMC;
+ public static var filesMC:MovieClip = _root.switcher.selectionsMC.filesMC;
+
+ // scrollers for feeds
+ public static var feedThreadsMC:MovieClip = _root.switcher.selectionsMC.feedThreadsMC;
+ public static var feedItemsMC:MovieClip = _root.switcher.selectionsMC.feedItemsMC;
+
+
+ // http:// or https:// ?
+ public static var urlRoot:String;
+
+ // rss proxy processing:
+ public static var rssProxy:String = "www.carbonpictures.com/tfarnon/bucky/services/beta/buckyRSSproxy.php";
+
+ // constructors for php query strings which return lists of data
+// public static var keywords:String = "www.carbonpictures.com/tfarnon/bucky/services/beta/buckyk.php";
+ public static var keywords:String ;// = "kitchenhacklab.foodhacking.com/cgi-bin/bucky/services_k"
+// public static var threads:String = "www.carbonpictures.com/tfarnon/bucky/services/beta/buckyth.php?k=";
+ public static var threads:String ; // = "kitchenhacklab.foodhacking.com/cgi-bin/bucky/services_th?k=";
+// public static var files:String = "www.carbonpictures.com/tfarnon/bucky/services/beta/buckyf.php?pid=";
+ public static var files:String ; // = "kitchenhacklab.foodhacking.com/cgi-bin/bucky/services_f?pid="
+
+// public static var tags:String;
+
+ // bucky-specific paths -- these are SET IN STONE until julian instructs otherwise
+// public static var singleFilePath:String = "www.carbonpictures.com/bucky/data/";
+ public static var singleFilePath:String ; // = "kitchenhacklab.foodhacking.com/bucky/data/";
+// public static var singleThreadPath:String = "www.carbonpictures.com/cgi-bin/bucky/details?id=";
+ public static var singleThreadPath:String ; // = "kitchenhacklab.foodhacking.com/cgi-bin/bucky/details?id="
+
+ // repository of active (ever-changing) settings ----------------------------------
+
+ public static var activeKeyword:String; // human readable keyword name
+
+ public static var activeThread:String; // human readable thread name
+ public static var activeThreadID:Number; // bucky thread ID
+ public static var activeThreadPath:String; // full URL to active thread
+
+ public static var activeFile:String; // human readable filename
+ public static var activeFileID:Number; // bucky file ID
+ public static var activeFilePath:String; // full URL to active mp3, jpg, gif, etc.
+
+ public static var activeUserID:Number; // human readable user name
+ public static var activeUserName:String; // bucky user ID
+
+ // end repository -----------------------------------------------------------------
+
+
+ public function BuckyServices() {}
+
+ public static function init():Void
+ {
+ var u:String = _url.slice (4,5);
+
+ switch ( u ) { case ":" : urlRoot = "http://"; break;
+ case "s" : urlRoot = "https://"; break;
+ }
+
+ _root.debug.text = urlRoot + _root.keywords;
+
+ // these variables now magially come to us via the
+ // SWFObject html, instead of being hardcoded
+ // inside a flash movie
+
+// if (_root.keywords != undefined )
+// {
+ keywords = urlRoot + _root.keywords;
+ threads = urlRoot + _root.threads;
+ files = urlRoot + _root.files;
+ singleFilePath = urlRoot + _root.singleFilePath;
+ singleThreadPath = urlRoot + _root.singleThreadPath;
+ rssProxy = urlRoot + rssProxy;
+
+/* }
+ else
+ {
+*/
+/* keywords = "kitchenhacklab.foodhacking.com/cgi-bin/bucky/services_k"
+ threads = "kitchenhacklab.foodhacking.com/cgi-bin/bucky/services_f?pid="
+ files = "kitchenhacklab.foodhacking.com/cgi-bin/bucky/services_th?k="
+ singleFilePath = "kitchenhacklab.foodhacking.com/bucky/data/"
+ singleThreadPath = "kitchenhacklab.foodhacking.com/cgi-bin/bucky/details?id="
+ rssProxy = urlRoot + rssProxy;
+
+ }
+*/
+ }
+
+ public static function setActiveKeyword (_inObj:Object):Void {
+ activeKeyword = _inObj.name;
+ _root.debug.text += "\nKEYWORD: " + activeKeyword;
+
+ }
+
+
+ public static function setActiveThread (_inObj:Object):Void {
+ activeThread = _inObj.name;
+ activeThreadID = _inObj.id;
+ activeThreadPath = singleThreadPath + activeThreadID;
+ _root.debug.text += "\nTHREAD:" + activeThread;
+ }
+
+ public static function setActiveFile (_inObj:Object):Void {
+ activeFile = _inObj.filename;
+ activeFilePath = urlRoot + singleFilePath + activeFile;
+ _root.debug.text += "\nFILE: " + activeFilePath;
+ }
+
+ public static function setActiveUserID (_inNumber:Number):Void {
+ activeUserID = _inNumber;
+ _root.debug.text += "\n" + activeUserID;
+ }
+
+ public static function setActiveUserName (_inString:String):Void {
+ activeUserName = _inString;
+ }
+
+ public static function getThumbURL (_inName:String):String {
+
+ return ( singleFilePath + activeThreadID + "/.thumb/b." + _inName );
+ //"www.carbonpictures.com/bucky/data/" +
+
+
+ }
+
+
+}; \ No newline at end of file
diff --git a/bPod/com/tags/TagButton.as b/bPod/com/tags/TagButton.as
new file mode 100644
index 0000000..b2d908e
--- /dev/null
+++ b/bPod/com/tags/TagButton.as
@@ -0,0 +1,95 @@
+import com.oop.UIButton;
+import com.oop.SelectionSystem;
+import mx.utils.Delegate;
+
+import mx.transitions.easing.*;
+import mx.transitions.Tween;
+
+class com.tags.TagButton extends UIButton
+{
+ private var title_mc:MovieClip;
+ private var desc_mc:MovieClip;
+ private var icon_mc:MovieClip;
+ private var bg_mc:MovieClip;
+ private var gridObj:Object;
+ private var shine_mc:MovieClip;
+ private var element_mc:MovieClip;
+ private var initialAlpha:Number = 60;
+ private var initialShine:Number = 30;
+ private var tint:Number;
+
+ public var elementSymbol:String;
+
+ private var installedX:Number = 0;
+ private var installedY:Number = 0;
+
+ public function KeywordButton() {}
+
+ public function init(_selectionSystem:SelectionSystem, _id:Number, _itemData:Object, _gridObj:Object ):Void {
+ gridObj = _gridObj;
+ super.init (_selectionSystem, _id, _itemData);
+ makeButton(itemData);
+ }
+
+ public function hashColor (_inStr:String):Number {
+ switch (_inStr) {
+ case "ivory": return (0xE0E0D8);
+ case "orange": return (0xFFD799);
+ case "yellow": return (0xFFF7A8);
+ case "green": return (0xDAF4B2);
+ case "blue": return (0xCCCCFF);
+ case "purple": return (0xDDB1FF);
+ case "pink": return (0xFFAECD);
+ case "plain": return (0xE6f0f0);
+ default: return (0xFFFFFF);
+ }
+ }
+
+
+ private function makeButton(_val:Object):Void {
+ icon_mc._alpha = initialAlpha;
+ shine_mc._alpha = initialShine;
+ title_mc.title_txt.text = _val.name.toLowerCase();
+
+ var c:String = _val.name.charAt(0); // b
+ var cc:String = _val.name.charAt(1); // u
+ var u:String = c.toUpperCase(); // B (if b)
+ var uu:String = cc.toLowerCase(); // u (if U)
+ var tmp:String = u.concat (uu); // Bu
+
+ element_mc.element_txt.text = tmp;
+
+ elementSymbol = tmp;
+
+
+ var tmpColor:Number = hashColor ( _val.color.toString() );
+ element_mc.element_txt.textColor = tmpColor; // &= 0x7F7F7F;
+ setPosition();
+ }
+
+ private function setPosition():Void {
+ _x = Math.round ( (gridObj.grid_x * _width) + (gridObj.horizSpace * gridObj.grid_x));
+ _y = Math.round ( ((gridObj.grid_y-1) * _height) + (gridObj.vertSpace * (gridObj.grid_y-1)));
+
+ installedX = _x;
+ installedY = _y;
+ }
+
+ private function handleRollOver():Void {
+ var tTween = new Tween(icon_mc, "_alpha", Regular.easeOut, icon_mc._alpha, 100, 1, true);
+ var shineTween = new Tween(shine_mc, "_alpha", Regular.easeOut, shine_mc._alpha, 0, .2, true);
+ }
+
+ private function handleRollOut():Void
+ {
+ if(visited) { var fadeVal:Number = initialAlpha; }
+ else { var fadeVal:Number = initialAlpha; }
+
+ var tTween = new Tween (icon_mc, "_alpha", Regular.easeOut, icon_mc._alpha, initialAlpha, 1, true);
+ var shineTween = new Tween (shine_mc, "_alpha", Regular.easeOut, shine_mc._alpha, initialShine, .2, true);
+ }
+
+ public function setSelected():Void
+ {
+ }
+} \ No newline at end of file
diff --git a/bPod/com/threads/ThreadButton.as b/bPod/com/threads/ThreadButton.as
new file mode 100644
index 0000000..296c15f
--- /dev/null
+++ b/bPod/com/threads/ThreadButton.as
@@ -0,0 +1,57 @@
+import mx.utils.Delegate;
+import mx.transitions.easing.*;
+import mx.transitions.Tween;
+import com.events.EventBroadcaster;
+
+import com.keywords.KeywordButton;
+
+class com.threads.ThreadButton extends KeywordButton {
+
+ private var username_mc:MovieClip;
+ private var alphabet_mc:MovieClip;
+ private var backing:MovieClip;
+ private var initialAlpha:Number;
+ private var overlay:MovieClip;
+
+ private function makeButton(_val:Object):Void {
+ overlay._visible = false;
+ initialAlpha = backing._alpha;
+ title_mc.title_txt.text = _val.name;
+ username_mc.username_txt.text = _val.user;
+
+ var ok:String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ var stru:String = _val.name.toUpperCase();
+ var strc:String = stru.charAt(0);
+ var strl:String = stru.charAt(1).toLowerCase();
+
+ if ( ok.indexOf (strc) != -1)
+ alphabet_mc.alphabet_txt.text = strc + strl;
+ else
+ alphabet_mc.alphabet_txt.text = "";
+
+ super.setPosition();
+ }
+
+ private function handleRollOver():Void {
+ var tTween = new Tween(backing, "_alpha", Regular.easeOut, backing._alpha, 40, .4, true);
+// makeWhite();
+ }
+
+ private function handleRollOut():Void {
+
+ if(visited) { var fadeVal:Number = initialAlpha; }
+ else { var fadeVal:Number = initialAlpha; }
+
+ var tTween = new Tween(backing, "_alpha", Regular.easeOut, backing._alpha, initialAlpha, .4, true);
+// makeBlack();
+ }
+
+ private function makeWhite():Void {
+ title_mc.title_txt.textColor =0xFFFFFF;
+ }
+
+ private function makeBlack():Void {
+ title_mc.title_txt.textColor =0x000000;
+ }
+
+}; \ No newline at end of file
diff --git a/bPod/com/threads/ThreadScroller.as b/bPod/com/threads/ThreadScroller.as
new file mode 100644
index 0000000..2aecde6
--- /dev/null
+++ b/bPod/com/threads/ThreadScroller.as
@@ -0,0 +1,15 @@
+import com.oop.ScrollingMenuFrame;
+
+class com.threads.ThreadScroller extends ScrollingMenuFrame
+{
+ var intRate:Number = 20; // scroller speed
+
+ public function doLoad(_dataArray:Array , _buttonType:String):Void {
+ holder_mc.attachMovie("ThreadSelectionSystem", "threads", 1000);
+ holder_mc["threads"].doInit(_dataArray, _buttonType );
+
+// holder_mc._x = 0; // use as needed! this puts the horiz scroller back in view
+ holder_mc._y = 0; // when a keyword tile is clicked.
+ }
+
+}; \ No newline at end of file
diff --git a/bPod/com/threads/ThreadSelectionSystem.as b/bPod/com/threads/ThreadSelectionSystem.as
new file mode 100644
index 0000000..c94b57d
--- /dev/null
+++ b/bPod/com/threads/ThreadSelectionSystem.as
@@ -0,0 +1,74 @@
+import com.keywords.KeywordSelectionSystem;
+import com.events.EventBroadcaster;
+import com.tubes.BuckyFileTube;
+import com.services.BuckyServices;
+
+class com.threads.ThreadSelectionSystem extends KeywordSelectionSystem {
+
+ private var itemsPerRow:Number = 1;
+ private var vertSpace:Number = 1;
+ private var tube:BuckyFileTube;
+
+ private function doAction():Void {
+ eraseExistingSpinners();
+ BuckyServices.setActiveThread( selectedData() );
+ EventBroadcaster.getInstance().addEventListener("fileListMade", this);
+ tube = new BuckyFileTube ( BuckyServices.files + selectedData().id );
+ startButtonSpinner();
+ }
+
+
+ private function showSelectedFeedback():Void {
+ for (var i:Number = listItems.length ; i >= 0 ; i--) {
+ var t:MovieClip = listItems[i];
+
+ t.overlay._visible = ( currentSelection == i) ? true : false;
+
+ }
+ }
+
+ private function eraseExistingSpinners():Void {
+ for (var i:Number = 0 ; i < listItems.length ; i++) {
+ var t:MovieClip = listItems[i];
+ t.alphabet_mc._visible = true;
+ t.username_mc.username_txt.text = systemData[i].user;
+ t["spinnerHolder"].removeMovieClip(); // kill if exists .. fail silently if not
+ }
+ EventBroadcaster.getInstance().removeEventListener("threadListMade", this);
+ }
+
+ private function startButtonSpinner():Void {
+ var t:MovieClip = listItems[currentSelection];
+ t.alphabet_mc._visible = false;
+ t.username_mc.username_txt.text = "loading!!!";
+ t.createEmptyMovieClip ("spinnerHolder", t.getNextHighestDepth());
+ t["spinnerHolder"].attachMovie ("Spinner", "spinner" , 100, {_x:196, _y:15, _width:18, _height:18});
+ }
+
+
+ private function fileListMade (_evt:Object):Void {
+
+ eraseExistingSpinners();
+
+ _root.debug.text = tube.articles.length;
+
+ if (( tube.articles.length != undefined) && ( tube.articles.length != 0 )) {
+
+ BuckyServices.setActiveThread ( selectedData() );
+
+ setCurrentSelection ( currentSelection );
+ showSelectedFeedback();
+
+ BuckyServices.filesMC.doLoad( tube.articles , "FileButton" );
+
+ EventBroadcaster.getInstance().broadcastEvent("switchToFilesView", null);
+
+ } else if ( tube.articles.length == 0 ) {
+
+ _root.switcher.handleOpenThreadBtn();
+ var t:MovieClip = listItems[currentSelection];
+ t.username_mc.username_txt.text = "opening " + selectedData().user + "'s thread..";
+
+ }
+ }
+}; \ No newline at end of file
diff --git a/bPod/com/tubes/BuckyFileTube.as b/bPod/com/tubes/BuckyFileTube.as
new file mode 100644
index 0000000..958523b
--- /dev/null
+++ b/bPod/com/tubes/BuckyFileTube.as
@@ -0,0 +1,29 @@
+import com.events.EventBroadcaster;
+import com.tubes.BuckyTube;
+
+class com.tubes.BuckyFileTube extends BuckyTube {
+
+ public function BuckyFileTube(_inQuery:String) {
+ super (_inQuery);
+ }
+
+ private function buildArray():Void {
+ articles = new Array();
+ for ( var i=0 ; i < theTube.numItems ; i++) {
+ var fileNameStr:String = new String( theTube["filename"+i] );
+ var fileSizeStr:String = new String( theTube["size"+i] );
+ var urlStr:String = new String( theTube["url"+i] );
+ var filetypeStr:String = new String( theTube["filetype"+i] );
+
+ var tmpObj:Object = new Object();
+ tmpObj.filename = fileNameStr;
+ tmpObj.filesize = fileSizeStr;
+ tmpObj.filetype = filetypeStr;
+ tmpObj.theURL = urlStr;
+
+// if (filetypeStr == "MP3" || filetypeStr == "JPG" || filetypeStr == "GIF")
+ articles.push (tmpObj);
+ }
+ EventBroadcaster.getInstance().broadcastEvent("fileListMade", null);
+ }
+}; \ No newline at end of file
diff --git a/bPod/com/tubes/BuckyKeywordTube.as b/bPod/com/tubes/BuckyKeywordTube.as
new file mode 100644
index 0000000..cff96ef
--- /dev/null
+++ b/bPod/com/tubes/BuckyKeywordTube.as
@@ -0,0 +1,46 @@
+import com.events.EventBroadcaster;
+import com.tubes.BuckyTube;
+
+class com.tubes.BuckyKeywordTube extends BuckyTube {
+
+ public var tags:Array;
+ private var tagColor:Number = 0xFFFFFF;
+
+ public function BuckyKeywordTube(_inQuery:String) {
+ super (_inQuery);
+ tags = new Array();
+ }
+
+ private function buildArray() {
+ articles = new Array();
+
+
+ for ( var i=0 ; i < theTube.numItems ; i++) {
+ var keywordStr:String = new String( theTube["keyword"+i] );
+ var colorStr:String = new String( theTube["color"+i] );
+
+ var tmpObj:Object = new Object();
+ tmpObj.name = keywordStr;
+ tmpObj.color = colorStr;
+
+ articles.push (tmpObj);
+ }
+
+ if ( theTube.numTags )
+ {
+
+ for (var i:Number = 0 ; i < theTube.numTags ; i++)
+ {
+ var tagName:String = new String( theTube["tag"+i] );
+
+ var tmpObj:Object = new Object();
+ tmpObj.name = tagName;
+// tmpObj.color = tagColor;
+ tmpObj.isTag = 1;
+ tags.push (tmpObj);
+ }
+ }
+
+ EventBroadcaster.getInstance().broadcastEvent("curtainsUp", null);
+ }
+}; \ No newline at end of file
diff --git a/bPod/com/tubes/BuckyThreadTube.as b/bPod/com/tubes/BuckyThreadTube.as
new file mode 100644
index 0000000..f0fc0ad
--- /dev/null
+++ b/bPod/com/tubes/BuckyThreadTube.as
@@ -0,0 +1,26 @@
+import com.events.EventBroadcaster;
+import com.tubes.BuckyTube;
+
+class com.tubes.BuckyThreadTube extends BuckyTube {
+
+ public function BuckyThreadTube(_inQuery:String) {
+ super (_inQuery);
+ }
+
+ private function buildArray() {
+ articles = new Array();
+ for ( var i=0 ; i < theTube.numItems ; i++) {
+ var titleStr:String = new String( theTube["title"+i] );
+ var userStr:String = new String( theTube["user"+i] );
+ var idStr:String = new String( theTube["id"+i] );
+
+ var tmpObj:Object = new Object();
+ tmpObj.name = titleStr;
+ tmpObj.user = userStr;
+ tmpObj.id = idStr;
+
+ articles.push (tmpObj);
+ }
+ EventBroadcaster.getInstance().broadcastEvent("threadListMade", null);
+ }
+}; \ No newline at end of file
diff --git a/bPod/com/tubes/BuckyTube.as b/bPod/com/tubes/BuckyTube.as
new file mode 100644
index 0000000..8e57a80
--- /dev/null
+++ b/bPod/com/tubes/BuckyTube.as
@@ -0,0 +1,23 @@
+import com.events.EventBroadcaster;
+import mx.utils.Delegate;
+
+class com.tubes.BuckyTube {
+
+ private var query:String;
+ private var theTube:LoadVars;
+ public var articles:Array;
+
+ public function BuckyTube(_inQuery:String) {
+ query = _inQuery;
+ init();
+ }
+
+ private function init() {
+ theTube = new LoadVars();
+ theTube.onLoad = Delegate.create (this, buildArray);
+ theTube.sendAndLoad( query, theTube, "POST");
+ }
+
+ private function buildArray() {} // override plz;
+
+}; \ No newline at end of file
diff --git a/bPod/css/bogart.css b/bPod/css/bogart.css
new file mode 100644
index 0000000..d07ef77
--- /dev/null
+++ b/bPod/css/bogart.css
@@ -0,0 +1,228 @@
+
+
+#console {
+ display: box;
+/* visibility: hidden;
+ height: 0px; initial state */
+}
+
+
+body {
+ background-color: #eaf0f0;
+ color: #111111;
+ font-size: 10px;
+ font-family: Trebuchet MS, Helvetica, Arial, sans-serif;
+ margin: 20px;
+}
+small
+ {
+ font-size: 10px;
+ }
+table {
+ border: 0px;
+ margin: 3px;
+}
+.threadmain {
+ border: 0px;
+}
+.main {
+ border: 1px solid #e0e8e8;
+}
+.head {
+ background-color: #d8e0e8;
+}
+.head a:link { color: #000;}
+.head a:visited { color: #000;}
+.head a:active { color: #000;}
+.head a:hover { color: #558;}
+.bare {
+ background-color: #e6f0f0;
+ padding: 0px;
+ margin: 0px;
+}
+tr:hover { }
+tr.row
+ {
+ background-color: #e6f0f0;
+ }
+tr.row0
+ {
+ background-color: #e6f0f0;
+ }
+tr.row0:hover
+ {
+ background-color: #d8e0ec;
+ color: #000000;
+ }
+tr.row1
+ {
+ background-color: #e0e8e8;
+ }
+tr.row1:hover
+ {
+ background-color: #d8e0ec;
+ color: #000000;
+ }
+
+td.row0
+ {
+ background-color: #eaf0f0;
+ border-bottom: 1px solid #e8eaea;
+ }
+td.row0:hover
+ {
+ background-color: #d9e0ec;
+ color: #000000;
+ border-bottom: 1px solid #d0d3d3;
+ }
+td.row1
+ {
+ background-color: #dde6e6;
+ border-bottom: 1px solid #e8eaea;
+ }
+td.row1:hover
+ {
+ background-color: #d9e0ec;
+ color: #000000;
+ border-bottom: 1px solid #d0d3d3;
+ }
+
+td {
+ color: #111111;
+ font-size: .71em;
+ font-family: Trebuchet MS, Helvetica, Arial, sans-serif;
+ margin: 0;
+ padding: 1px;
+ border: 0px;
+}
+.bluebox {
+ background-color: #d8e0ec;
+ color: #000000;
+ text-align: center;
+ border: 2px solid #201010;
+ padding: 3px;
+ margin: 3px;
+}
+.message {
+ background-color: #d8e0ec;
+ color: #000000;
+ width: 200px;
+ text-align: center;
+ border: 2px solid #201010;
+ padding: 3px;
+ margin: 3px;
+}
+.new {
+ font-weight: bold;
+ color: #000000;
+}
+.recent {
+ color: #001111;
+}
+.med {
+ color: #203838;
+}
+.old {
+ color: #425050;
+}
+.older {
+ color: #5D6464;
+}
+.quiet {
+ color: #787878;
+}
+.nfo {
+ background-color: #e0e8e8;
+ color: #000000;
+ border: 2px solid #201010;
+ width: 570px;
+ font-size: 12px;
+ font-family: Courier New, Fixedsys, monospace;
+ white-space: pre;
+ text-align: left;
+ margin-left: 90px;
+ padding: 3px;
+}
+a:link { color: #2050ca; text-decoration: underline; }
+a:visited { color: #1030aa; text-decoration: none; }
+a:active { color: #a0a0c7; text-decoration: underline; }
+a:hover { color: #2040f0; text-decoration: underline; }
+hr {
+ background-color: #201010;
+}
+.commentbox
+ {
+ padding: 0px;
+ margin: 1px;
+ text-align: left;
+ width: 100%;
+ }
+.commentuser
+ {
+ padding: 0px 2px 6px 0px;
+ text-align: right;
+ font-size: 9px;
+ border: 0px;
+ color: #454565;
+ border-top: 1px #666 solid;
+ margin: 0px;
+ }
+.comment
+ {
+ border: 0px;
+ padding: 0px 2px 0px 2px;
+ font-size: 11px;
+ }
+.commenttop
+ {
+ border: 0px;
+ padding: 2px 2px 0px 2px;
+ font-size: 11px;
+ }
+.threadname
+ {
+ padding: 3px;
+ font-size: 11px;
+ font-family: georgia, garamond, serif;
+ }
+.bigtitle
+ {
+ font-size: 30px;
+ font-weight: bold;
+ }
+.clicky
+ {
+ font-size: 10px;
+ font-family: Trebuchet MS, Helvetica, Arial, sans-serif;
+ font-weight: bold;
+ color: #140A0A;
+ border: 2px #140A0A solid;
+ padding: 1px;
+ margin: 3px;
+ background-color: #c8d0dc;
+ }
+.thumb
+ {
+ border: 1px solid #38383d;
+ padding: 0px; margin: 0px;
+ }
+.thumb a
+ {
+ color: #38383d;
+ }
+.filename
+ {
+ text-align: left;
+ padding-left: 5px;
+ padding-right: 10px;
+ }
+.filesize
+ {
+ text-align: right;
+ padding-left: 10px;
+ padding-right: 5px;
+ }
+
+
+
+
diff --git a/bPod/index.html b/bPod/index.html
new file mode 100644
index 0000000..e40d925
--- /dev/null
+++ b/bPod/index.html
@@ -0,0 +1,205 @@
+<html>
+ <head>
+ <title>buckyPhone: 1.0 beta</title>
+ <link rel="stylesheet" href="http://www.carbonpictures.com/css/bogart.css" type="text/css">
+ </head>
+
+<body>
+<center>
+<table cellpadding=0 cellspacing=0 border=0>
+ <tr>
+ <td align="center" style="border: 0px;">
+
+<div style="width: 900px; text-align: left; border: 0px; margin-bottom: 120px;">
+<table width=100% cellpadding=0 cellspacing=0 border=0 style="padding: 0px margin: 0px;">
+<tr><td align=left style="padding: 0px 4px 0px 4px;"><span class="bigtitle">buckyPhone: 1.0 beta</span></td>
+<td align="right" valign="bottom" style="padding: 0px 3px 0px 3px;"><nobr><small></tr></table><table width=100% cellpadding=0 cellspacing=0 border=0 style="padding: 0px margin: 0px;">
+<tr><td colspan=2 align="center">
+<hr color="#504040" style="padding: 0px; margin: 2px;">
+</td></tr>
+<tr>
+<td align=left nowrap style="padding: 0px 4px 0px 4px;"><small>
+<span class="lite"><a href="/cgi-bin/bucky/index">home</a></span> | <a href="/cgi-bin/bucky/library">library</a> |
+<a href="/cgi-bin/dump/index">dump</a> |
+<a href="/cgi-bin/bucky/post">post</a> |
+<a href="/cgi-bin/bucky/import">ftp</a> |
+<a href="/cgi-bin/bucky/inbox">inbox</a> |
+<a href="/cgi-bin/bucky/profile">profile</a> |
+<a href="/cgi-bin/bucky/logout">logout</a>
+</small></td>
+<td align=right nowrap style="padding: 0px 4px 0px 4px;"><small>
+<a href="/cgi-bin/bucky/profile?username=jules">jules</a>, <a href="/cgi-bin/bucky/profile?username=rfleming">rfleming</a> [6m], <a href="/cgi-bin/bucky/profile?username=rakubian">rakubian</a> [26m], <a href="/cgi-bin/bucky/profile?username=tfarnon">tfarnon</a> [1h3m], <a href="/cgi-bin/bucky/profile?username=pants">pants</a> [1h13m], <a href="/cgi-bin/bucky/profile?username=winslow">winslow</a> [5h], <a href="/cgi-bin/bucky/profile?username=marc">marc</a> [20h] | <a href="/cgi-bin/bucky/users">userlist</a>
+</small></td></tr>
+<tr><td colspan=2 align="center">
+<hr color="#504040" style="padding: 0px; margin: 2px;">
+</td></tr>
+</table>
+<table width="100%" cellpadding=0 cellspacing=0 border=0><tr><td align=left valign=top>
+
+<table border=0 cellpadding=0 cellspacing=0 class="threadmain" width="650"><tr><td align="right"><big><a href="/cgi-bin/bucky/library?keyword=up13" class="quietlink"><span style="font-weight: bold;">up13</span></a></big><small>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="bottom" colspan=4><small><a href="/cgi-bin/bucky/library?keyword=up13">show all</a> &middot; <a href="/cgi-bin/bucky/post?keyword=up13">post</a> &middot; <a href="/cgi-bin/bucky/import?keyword=up13">ftp</a> &middot; <a href="/cgi-bin/bucky/library?keyword=up13&c=edit">settings</a></small></td></tr><tr><td></td><td style="border-bottom: 1px solid #b6aeab; background-color: #;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=1></td></tr><tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=marc" class="quietlink">marc</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="pink0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname newthread"><a href="/cgi-bin/bucky/details?id=181&q=305">BUCK-E-VITE: up13 party SAT FEB 24</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;2-Mar-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small> 4:06 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="med">14&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">756.0 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="new">57&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=marc" class="quietlink">marc</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="pink1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=251&q=54">murphy's quest</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;26-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small>12:48 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">2&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">1.2 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="med">10&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=jules" class="quietlink">jules</a>&nbsp;:&nbsp;</small></td><td align="left" valign="middle" nowrap class="pink0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=256&q=305">Civilization ll Multiplayer GOLD</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;26-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small>10:22 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="med">52.9 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">1&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=marc" class="quietlink">marc</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="pink1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=194&q=837">up13 circa 2007</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;13-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 3:23 pm</small></span></td><td align="right" valign="middle" nowrap><small></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">3.6 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="new">24&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=tfarnon" class="quietlink">tfarnon</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="pink0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=184&q=76">up13 circa 2001</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;5-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 8:20 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">3&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">3.8 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="new">63&nbsp;f.</span></small></td></tr>
+<tr><td></td><td style="border-top: 1px solid #b6aeab; background-color: #;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=2></td></tr><tr><td><img src="http://carbonpictures.com/bucky/blank.gif" height=5></td></tr><tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=jules" class="quietlink">jules</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="blue1"><span class="threadname newthread"><a href="/cgi-bin/bucky/details?id=27&q=55">Buckminster suggestion dome</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="new">&nbsp;3-Mar-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="new"><small> 8:12 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="new">42&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">50 kb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">1&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=winslow" class="quietlink">winslow</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="red0"><span class="threadname newthread"><a href="/cgi-bin/bucky/details?id=97&q=169">Youtube Depot</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="new">&nbsp;3-Mar-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="new"><small> 2:13 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="new">71&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap></td></tr>
+<tr><td><img src="http://carbonpictures.com/bucky/blank.gif" height=5 width=1></td></tr><tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/library?keyword=owl" class="quietlink"><span style="font-size: 9px; font-weight: bold;">OWL</span></a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="yellow1"><span class="threadname newthread"><a href="/cgi-bin/bucky/details?id=270&q=113">OWL - oogy boogy</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;1-Mar-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small>10:47 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">638 kb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=winslow" class="quietlink">winslow</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain0"><span class="threadname newthread"><a href="/cgi-bin/bucky/details?id=265&q=464">Fivel and I Folk it up (not really an album)</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;1-Mar-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small> 1:28 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">5&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">2.0 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=cocco" class="quietlink">cocco</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain1"><span class="threadname newthread"><a href="/cgi-bin/bucky/details?id=254&q=352">whos bot omhboys delay?</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;1-Mar-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small> 1:26 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">3&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=bwhit" class="quietlink">bwhit</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain0"><span class="threadname newthread"><a href="/cgi-bin/bucky/details?id=200&q=320">vid 4 jules</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;1-Mar-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small> 1:26 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">3&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="old">27.6 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">1&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=ilya" class="quietlink">ilya</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain1"><span class="threadname"><a href="/cgi-bin/bucky/details?id=244&q=755">Attack of the Kino-Eye ('mysterious' trailer)</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;1-Mar-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small> 2:12 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="med">10&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="recent">100.5 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="older">3&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=flop4andy" class="quietlink">flop4andy</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain0"><span class="threadname"><a href="/cgi-bin/bucky/details?id=263&q=412">Mac Software from Leafcutter John</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;27-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small>11:20 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap></td></tr>
+<tr><td></td><td style="border-bottom: 1px solid #b6aeab; background-color: #edf8f6;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=1></td></tr><tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/library?keyword=photos" class="quietlink"><span style="font-size: 9px; font-weight: bold;">PHOTOS</span></a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="orange1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=250&q=966">Sampson at Arby's</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;23-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 9:38 pm</small></span></td><td align="right" valign="middle" nowrap><small></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">1.6 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="old">9&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=bwhit" class="quietlink">bwhit</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="orange0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=246&q=626">pics for jules</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;22-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 7:14 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">4&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">12.8 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="old">6&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=marc" class="quietlink">marc</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="orange1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=211&q=935">cortland and mission</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;13-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 7:18 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">2&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">3.4 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="med">11&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=marc" class="quietlink">marc</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="orange0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=213&q=28">more like bernal whites...</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;13-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 5:06 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">6.7 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="new">41&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=marc" class="quietlink">marc</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="orange1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=199&q=264">Donuts</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;6-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 7:17 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">1.1 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="med">13&nbsp;f.</span></small></td></tr>
+<tr><td></td><td style="border-top: 1px solid #b6aeab; background-color: #edf8f6;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=2></td></tr><tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=cocco" class="quietlink">cocco</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain0"><span class="threadname"><a href="/cgi-bin/bucky/details?id=236&q=223">daft punk samples revealed</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;21-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 7:51 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="med">13&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=marc" class="quietlink">marc</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="pink1"><span class="threadname"><a href="/cgi-bin/bucky/details?id=242&q=530">OMG you guys</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;19-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 7:12 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">2&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">10.9 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">1&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=hireo" class="quietlink">hireo</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain0"><span class="threadname"><a href="/cgi-bin/bucky/details?id=238&q=643">adobe audition for mac???</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;19-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 3:04 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">2&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=winslow" class="quietlink">winslow</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain1"><span class="threadname"><a href="/cgi-bin/bucky/details?id=233&q=538">jamsogooood</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;18-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 4:53 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">2&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="old">20.0 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">1&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/library?keyword=samples" class="quietlink"><span style="font-size: 9px; font-weight: bold;">SAMPLES</span></a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain0"><span class="threadname"><a href="/cgi-bin/bucky/details?id=149&q=932">Sample Act Royale</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;18-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 8:25 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="old">33.3 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="new">26&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=winslow" class="quietlink">winslow</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain1"><span class="threadname"><a href="/cgi-bin/bucky/details?id=235&q=134">FOR MY DEAREST WINSLITO</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;18-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small>12:26 am</small></span></td><td align="right" valign="middle" nowrap><small></small></td><td align="right" valign="middle" nowrap><small><span class="new">208.8 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">1&nbsp;f.</span></small></td></tr>
+<tr><td></td><td style="border-bottom: 1px solid #b6aeab; background-color: #edf8f6;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=1></td></tr><tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=marc" class="quietlink">marc</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="purple0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=234&q=860">hellay channelz</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;17-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 9:35 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">174.3 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="older">5&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=jules" class="quietlink">jules</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="green1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=232&q=510">rock club today?</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;17-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 7:33 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">4&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="old">38.3 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="old">6&nbsp;f.</span></small></td></tr>
+<tr><td></td><td style="border-top: 1px solid #b6aeab; background-color: #edf8f6;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=2></td></tr><tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=winslow" class="quietlink">winslow</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain0"><span class="threadname"><a href="/cgi-bin/bucky/details?id=230&q=980">songforwinslow</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;16-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 9:15 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">3&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="recent">111.1 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">1&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=rakubian" class="quietlink">rakubian</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain1"><span class="threadname"><a href="/cgi-bin/bucky/details?id=219&q=12">Happy D-DAY</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;15-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 7:52 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">3&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">5.4 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="old">6&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=winslow" class="quietlink">winslow</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain0"><span class="threadname"><a href="/cgi-bin/bucky/details?id=218&q=872">Ilya song, end theme</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;15-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 3:57 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">173.1 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/library?keyword=hellay" class="quietlink"><span style="font-size: 9px; font-weight: bold;">HELLAY</span></a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="purple1"><span class="threadname"><a href="/cgi-bin/bucky/details?id=215&q=159">hellay jasperfied 20070127</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;14-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 4:08 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="old">9&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="recent">124.4 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="med">13&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=cocco" class="quietlink">cocco</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain0"><span class="threadname"><a href="/cgi-bin/bucky/details?id=216&q=177">studio jam</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;14-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 7:16 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=cocco" class="quietlink">cocco</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="pink1"><span class="threadname"><a href="/cgi-bin/bucky/details?id=210&q=627">new avalanches!!!!!!!</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;13-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 7:29 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">2&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">9.5 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=cocco" class="quietlink">cocco</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain0"><span class="threadname"><a href="/cgi-bin/bucky/details?id=204&q=115">so this kid gets his report card</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;10-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small>11:30 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">3&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/library?keyword=samples" class="quietlink"><span style="font-size: 9px; font-weight: bold;">SAMPLES</span></a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain1"><span class="threadname"><a href="/cgi-bin/bucky/details?id=206&q=174">Winslow's Sample Library CD 4</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;10-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 4:52 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="recent">70.7 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="older">3&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=cocco" class="quietlink">cocco</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain0"><span class="threadname"><a href="/cgi-bin/bucky/details?id=203&q=502">help my pc died!!!</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;8-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 9:45 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">3&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=bwhit" class="quietlink">bwhit</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="plain1"><span class="threadname"><a href="/cgi-bin/bucky/details?id=195&q=421">fly fishing shows</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;5-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 6:57 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">271.5 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="old">7&nbsp;f.</span></small></td></tr>
+<tr><td></td><td style="border-bottom: 1px solid #b6aeab; background-color: #edf8f6;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=1></td></tr><tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/library?keyword=albums" class="quietlink"><span style="font-size: 9px; font-weight: bold;">ALBUMS</span></a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=264&q=906">Eccentric Soul - Deep City Label</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;27-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small>11:06 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="recent">84.1 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="recent">18&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=winslow" class="quietlink">winslow</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=262&q=350">David Axelrod- Heavy Axe</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;27-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small>11:02 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="recent">134.7 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="med">10&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=winslow" class="quietlink">winslow</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=259&q=370">Pixies, Coachella 5/1/04</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;26-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small>10:51 pm</small></span></td><td align="right" valign="middle" nowrap><small></small></td><td align="right" valign="middle" nowrap><small><span class="new">145.2 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="new">23&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=winslow" class="quietlink">winslow</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=257&q=469">Pixies, Newport Jazz Fest 05</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;26-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small> 2:18 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">177.9 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="new">23&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=rakubian" class="quietlink">rakubian</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=253&q=564">Joe Gibbs and the Professionals - African Dub</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;25-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small> 5:17 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="recent">68.5 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="med">11&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=rakubian" class="quietlink">rakubian</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=252&q=687">Augustus Pablo - East of the River Nile (dub)</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;25-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small>12:53 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="recent">87.6 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="recent">19&nbsp;f.</span></small></td></tr>
+<tr><td></td><td style="border-top: 1px solid #b6aeab; background-color: #edf8f6;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=2></td></tr><tr><td></td><td style="border-bottom: 1px solid #b6aeab; background-color: #edf8f6;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=1></td></tr><tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/library?keyword=movies" class="quietlink"><span style="font-size: 9px; font-weight: bold;">MOVIES</span></a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=258&q=819">Space Is The Place (1974)</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;26-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small> 2:40 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">682.8 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=al" class="quietlink">al</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=229&q=964">Zardoz (1974)</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;23-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 3:49 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">2&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">698.5 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=al" class="quietlink">al</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=248&q=821">Assault On Precinct 13 (1976)</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;22-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 1:11 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">2&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">696.0 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=tfarnon" class="quietlink">tfarnon</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=217&q=244">The Prestige (2006)</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;22-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 1:57 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">2&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">700.7 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=al" class="quietlink">al</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=226&q=355">Beyond The Valley Of The Dolls (1970)</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;20-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small>12:58 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">2&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">701.8 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=pants" class="quietlink">pants</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=227&q=439">Hollywoodland (2006)</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;15-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small> 9:34 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">3&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">1 020.8 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td></td><td style="border-top: 1px solid #b6aeab; background-color: #edf8f6;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=2></td></tr><tr><td></td><td style="border-bottom: 1px solid #b6aeab; background-color: #edf8f6;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=1></td></tr><tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/library?keyword=tv" class="quietlink"><span style="font-size: 9px; font-weight: bold;">TV</span></a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=255&q=622">Metalocalypse season one</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;27-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small> 2:15 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">4&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">2 010.5 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="new">21&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=marc" class="quietlink">marc</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=214&q=607">Stephen King - La Rebelion De Las Maquinas</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;13-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small>11:22 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">696.6 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td></td><td style="border-top: 1px solid #b6aeab; background-color: #edf8f6;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=2></td></tr><tr><td></td><td style="border-bottom: 1px solid #b6aeab; background-color: #edf8f6;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=1></td></tr><tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/library?keyword=warez" class="quietlink"><span style="font-size: 9px; font-weight: bold;">WAREZ</span></a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=249&q=930">Toast 7.1.2 for Mac</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="recent">&nbsp;28-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="recent"><small> 3:27 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">4&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="recent">81.0 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=jules" class="quietlink">jules</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="purple1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=212&q=261">FL Studio v7.0.0 XXL</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;22-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 4:21 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="med">11&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">158.7 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="new">21&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=tonylim80" class="quietlink">tonylim80</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=60&q=641">ableton live for winslow</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;21-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 9:05 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">4&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="med">50.1 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">2&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=cocco" class="quietlink">cocco</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=245&q=552">wavelabbe 5.01b</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="med">&nbsp;21-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="med"><small> 8:13 pm</small></span></td><td align="right" valign="middle" nowrap><small><span class="quiet">1&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="old">26.3 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">1&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=marc" class="quietlink">marc</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan0" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=205&q=25">Renoise 1.52 OSX - tracker</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;14-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small>12:02 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="older">4&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="quiet">15.2 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">1&nbsp;f.</span></small></td></tr>
+<tr><td align="right" valign="middle" nowrap><small><a href="/cgi-bin/bucky/profile?username=tonylim80" class="quietlink">tonylim80</a>&nbsp;&middot;&nbsp;</small></td><td align="left" valign="middle" nowrap class="tan1" style="border-left: 1px solid #b6aeab; border-right: 1px solid #b6aeab;"><span class="threadname"><a href="/cgi-bin/bucky/details?id=193&q=605">reaktor UB(for intel mac)</a></span></td><td align="right" valign="middle" nowrap style="padding-right: 0px; margin-right: 0px;"><span class="old">&nbsp;13-Feb-2007&nbsp;</span></td><td align="left" valign="middle" nowrap style="padding-left: 0px; margin-left: 0px; padding-top: 2px;"><span class="old"><small>12:06 am</small></span></td><td align="right" valign="middle" nowrap><small><span class="old">8&nbsp;c.</span></small></td><td align="right" valign="middle" nowrap><small><span class="new">192.2 mb.</span></small></td><td align="left"><small>&nbsp;in&nbsp;<span class="quiet">1&nbsp;f.</span></small></td></tr>
+<tr><td></td><td style="border-top: 1px solid #b6aeab; background-color: #edf8f6;"><img src="http://carbonpictures.com/bucky/blank.gif" width=1 height=2></td></tr><tr><td align="right" colspan=7 style="padding-top: 15px;"><big><a href="/cgi-bin/bucky/index?start=1170730662&end=1164872157">next <b>50</b> threads &gt;&gt;</a></big></td></tr></table></td>
+<td width="200" align=right valign=top>
+<div class="message">
+<b>buckyPhone: 1.0 beta</b>
+<hr color="#201010">
+<small>you are using <span class="new">5 327.9 mb.</span> in 95 files</small></div><div class="message">
+<small><b>RADIO: GOING DARK</b><br>
+<a href="http://radiofreehanoi.com/HOWTO">click here for broadcast instructions</a>
+</small></div>
+
+
+<!-- buckybeta -->
+<div id = "buckyBeta"></div>
+<script type="text/javascript" src="swfobject/swfobject.js"></script>
+<script type="text/javascript">
+ // <![CDATA[
+ var so = new SWFObject ("bPod.swf", "buckyBeta", 215, 210, 8, "EAF0F0" );
+
+ // user ID
+ so.addVariable("activeUser", 00000 /* PROLLY NEED A VARIABLE HERE INSTEAD*/ );
+
+ // global services which drive your keywords, files & threads:
+ so.addVariable ("keywords", "kitchenhacklab.foodhacking.com/cgi-bin/bucky/services_k" );
+ so.addVariable ("files", "kitchenhacklab.foodhacking.com/cgi-bin/bucky/services_f?pid=" );
+ so.addVariable ("threads", "kitchenhacklab.foodhacking.com/cgi-bin/bucky/services_th?k=" );
+ so.addVariable ("singleFilePath", "kitchenhacklab.foodhacking.com/bucky/data/" );
+ so.addVariable ("singleThreadPath", "kitchenhacklab.foodhacking.com/cgi-bin/bucky/details?id=" );
+
+ // look & feel -- background colors for gradient
+ so.addVariable("uiGradient1", "0xFFFFFF");
+ so.addVariable("uiGradient2", "0xCCCCCC");
+ so.addVariable("uiStroke", "0x000000");
+ // so.addVariable("backgroundImage", "http://hentaiheroes.netpass.tv/us/bandeaux/200x200/200x200hentaiheroes.gif")
+ // so.addVariable ("backgroundImageAlpha", 60);
+
+ // extra bonus things
+ //so.addVariable ("debuggerVisible", 1);
+ so.addVariable ("showFeeds", 1);
+
+ so.addParam ("scale", "noscale");
+ so.write("buckyBeta");
+
+
+
+
+ // ]]>
+</script>
+<!-- end buckybeta -->
+
+
+<!-- upload form -->
+
+<div class="message">
+quick-start a <b>new thread</b>
+<hr color="#201010">
+<small>
+<form action="/cgi-bin/bucky/post" method="post" enctype="multipart/form-data">
+
+<input type=hidden name="c" value="new">
+
+subject:<input name="title" value="" size=20 maxlength=50 style="font-size: 10px; font-family: Trebuchet MS, Helvetica, Arial, sans-serif;
+ color: #140A0A; border: 1px #140A0A solid; padding: 1px; margin: 5px 5px 0px 5px;
+ background-color: #e7f1f9;"><br>
+
+<input type="file" name="file1" size="12" maxlength="192" style="font-size: 10px; font-family: Trebuchet MS, Helvetica, Arial, sans-serif;
+ color: #140A0A; border: 1px #140A0A solid; padding: 1px; margin: 5px;
+ background-color: #e7f1f9;" /><br>
+
+description:<br>
+<textarea name="comment" value="" rows="5" style="width: 100%; padding: 0px 1px 1px 1px; background-color: #f1f8fb; font-family: trebuchet ms, sans serif; font-size: 11px;"></textarea>
+<br>
+
+<input type="submit" value="CREATE THREAD" class="clicky">
+</form>
+</small>
+</div>
+
+
+
+
+
+
+
+<div class="message">
+<form action="/cgi-bin/bucky/comment" method="post" enctype="multipart/form-data">
+<input type="hidden" name="id" value="1">
+
+<table width=100% cellpadding=0 cellspacing=0 border=0>
+<tr>
+<td style="text-align: center; vertical-align: middle;">
+<input name="comment" value="" size=25 maxlength=1024 style="font-size: 10px; font-family: Trebuchet MS, Helvetica, Arial, sans-serif;
+ color: #140A0A; border: 1px #140A0A solid; padding: 1px; margin: 0px 0px 0px 0px;
+ background-color: #e7f1f9;">
+</td>
+<td style="text-align: center; vertical-align: middle;">
+<input type="submit" value="HOOT" class="clicky" style="margin: 0px 5px 0px 5px;">
+</td></tr></table>
+</form>
+<hr color="#201010"><table class="commentbox" cellpadding=0 cellspacing=0 border=0><tr><td class="comment"><small>king kill 33 <a href="http://www.revisionisthistory.org/kingkill33.html">[revisionisthistory.org]</a></small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=marc">marc</a></a> at 1-Mar-2007 4:30 pm</td></tr><tr><td class="comment"><small>Rabbit Rabbit!</small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=winslow">winslow</a></a> at 1-Mar-2007 3:30 pm</td></tr><tr><td class="comment"><small>HOOT BONGS</small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=jules">jules</a></a> at 1-Mar-2007 12:53 pm</td></tr><tr><td class="comment"><small>anybody but anybody got some kind of audio tracker program that isn't fruity?</small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=flop4andy">flop4andy</a></a> at 27-Feb-2007 11:04 am</td></tr><tr><td class="comment"><small>hmoob earcammed it from through the vent</small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=jules">jules</a></a> at 25-Feb-2007 10:42 pm</td></tr><tr><td class="comment"><small>wewp w3wp w00p! Any body capture any of it on various electronic devices besides marc?</small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=rakubian">rakubian</a></a> at 25-Feb-2007 4:00 pm</td></tr><tr><td class="comment"><small>Awesome Party Dude!</small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=winslow">winslow</a></a> at 25-Feb-2007 9:37 am</td></tr><tr><td class="comment"><small>up with wangs / down with chungs</small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=tfarnon">tfarnon</a></a> at 23-Feb-2007 11:38 am</td></tr><tr><td class="comment"><small>CPA 4 life!</small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=winslow">winslow</a></a> at 21-Feb-2007 10:26 pm</td></tr><tr><td class="comment"><small>Consider this: a man, alone, watching TV, craving ice cream.</small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=rfleming">rfleming</a></a> at 21-Feb-2007 5:52 pm</td></tr><tr><td class="comment"><small>gotta have an O / M / G .. if you wanna be / with / me</small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=tfarnon">tfarnon</a></a> at 21-Feb-2007 11:50 am</td></tr><tr><td class="comment"><small>Mayb e we can change it to Carl Weathers' Day</small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=rakubian">rakubian</a></a> at 20-Feb-2007 4:24 pm</td></tr><tr><td class="comment"><small>Carl Weathers, Carl Weathers, talk to me about, Carl Weathers!</small></td></tr><tr><td class="commentuser"><a href="/cgi-bin/bucky/profile?username=winslow">winslow</a></a> at 20-Feb-2007 11:23 am</td></tr></table>
+</div></td></tr></table>
+
+</div>
+
+ </td>
+ </tr>
+</table>
+</center>
+
+</body>
+</html>
+
diff --git a/bPod/main.as b/bPod/main.as
new file mode 100644
index 0000000..0c7ef13
--- /dev/null
+++ b/bPod/main.as
@@ -0,0 +1,47 @@
+import com.tubes.BuckyKeywordTube;
+import com.events.EventBroadcaster;
+import com.events.RightClick;
+import com.services.BuckyServices;
+
+var tube:BuckyKeywordTube;
+
+initApp();
+
+function initApp():Void {
+ _root.debug.text = _root.activeUser;
+ new RightClick();
+ BuckyServices.init();
+ EventBroadcaster.getInstance().addEventListener("curtainsUp", this);
+
+ tube = new BuckyKeywordTube ( BuckyServices.keywords );
+}
+
+function curtainsUp(_evt:Object):Void {
+
+ // these vals passed in via html SWFObject.
+
+ if (_root.debuggerVisible)
+ _root.debug._x = 4; // _root.debuggerVisible;
+
+ _root.squareBackground.initColors (_root.uiGradient1, _root.uiGradient2, _root.uiStroke, 208, 208);
+
+ if (_root.backgroundImage != undefined)
+ {
+ _root.squareBackground.image.loadMovie ( _root.backgroundImage);
+ _root.squareBackground.image._alpha = _root.backgroundImageAlpha;
+ }
+
+ BuckyServices.keywordsMC.doLoad( tube.articles );
+
+ BuckyServices.keywordsMC.insertAdornment();
+ if (tube.tags.length > 0)
+ {
+ BuckyServices.keywordsMC.insertTags ( tube.tags );
+ }
+
+ if (_root.showFeeds)
+ {
+ BuckyServices.keywordsMC.insertAdornment();
+ BuckyServices.keywordsMC.insertFeeds();
+ }
+} \ No newline at end of file
diff --git a/bPod/php/buckyFiles.php b/bPod/php/buckyFiles.php
new file mode 100644
index 0000000..00fdafd
--- /dev/null
+++ b/bPod/php/buckyFiles.php
@@ -0,0 +1,102 @@
+ <?php
+
+ $kWarez = "http://www.carbonpictures.com/bucky/data/";
+
+ mysql_connect("localhost","tfarnon","blunderbus"); // lol security
+ mysql_select_db("bucky");
+
+ if (!isset ($_GET['s']) || !isset ($_GET['e'])) {
+ $startIndex = 0;
+ $endIndex = 9;
+ } else {
+ $startIndex = $_GET['s'];
+ $endIndex = $_GET['e'];
+ }
+
+ $page = ($endIndex - $startIndex);
+
+ $query = mysql_query("SELECT * FROM `files` order by `date` desc limit $startIndex, $endIndex");
+ $nrows = mysql_num_rows($query);
+ $rString = "&numItems=".$page;
+
+ if (!isset ($_GET['p'])) {
+ // display as querystring (&p=1)
+ for ($i = $startIndex; $i <= $endIndex; $i++) {
+ $row = mysql_fetch_array($query);
+ $rString .= "&filetype" .$i ."=". fileExt($row['filename']);
+ $rString .= "&filename" .$i ."=". $row['filename'];
+ $rString .= "&username" .$i ."=". $row['username'];
+ $rString .= "&date" .$i ."=". strtolower (date("D M j", $row['date'] ));
+ $rString .= "&url" .$i ."=". $kWarez . $row['parent_id'] . "/" . str_replace(" ", "%20", $row['filename']);
+ $rString .= "&size" .$i ."=". sizeinK ($row['size']);
+ }
+ echo $rString;
+ }
+ // display pretty:
+ else {
+ $nextURL = "http://www.carbonpictures.com/tfarnon/buckyFiles.php?p=1&s=" . ($endIndex+1) . "&e=" . ($endIndex+$page+1);
+ $prevURL = "http://www.carbonpictures.com/tfarnon/buckyFiles.php?p=1&s=" . ($startIndex-$page-1) . "&e=" . ($startIndex-1) ;
+ echo "<br><br>";
+ if ($startIndex > 0) {
+ echo "<a href = '$prevURL'>previous " . ($page+1) . "</a>";
+ echo "&nbsp;&nbsp;|&nbsp;&nbsp;";
+ }
+
+ echo "<a href = '$nextURL'>next " . ($page+1) . "</a>";
+ echo "<br>files " . $startIndex . " - " . $endIndex . " on bucky:<br>";
+
+ for ($i=$startIndex; $i <= $endIndex; $i++) {
+ $row = mysql_fetch_array($query);
+ if (doubleCheck ($row))
+ {
+ echo "<br>";
+ echo $i . " ";
+ echo fileExt($row['filename'] . ": ");
+ echo "on ";
+ echo strtolower (date("D M j", $row['date'] ));
+ echo " ";
+ echo $row['username'];
+ echo " uploaded ";
+ echo "<b>" .
+ "<a href = \"" . $kWarez .
+ $row['parent_id'].
+ "/".
+ str_replace(" ", "%20", $row['filename']) . "\" target = \"_blank\">".
+ $row['filename'].
+ "</a>".
+ "</b>";
+ echo " (" . sizeinK ($row['size']) . ")";
+ }
+ }
+ }
+
+ function doubleCheck ($row) {
+ if (!$row['filename'] || !$row['date'] || !$row['username'] || !$row['parent_id'] || !$row['size'])
+ {
+ echo "<br>(this file looks weird/null -- not listing)";
+ return (false);
+ } else {
+ return (true);
+ }
+ }
+
+ function fileExt ($inStr) {
+ return strtoupper (end(explode('.',$inStr)));
+ }
+
+ function sizeinK($bytes) {
+ $size = $bytes / 1024;
+ if($size < 1024) {
+ $size = number_format($size, 2);
+ $size .= 'k';
+ } else { if ($size / 1024 < 1024) {
+ $size = number_format($size / 1024, 2);
+ $size .= 'mb';
+ } else if ($size / 1024 / 1024 < 1024) {
+ $size = number_format($size / 1024 / 1024, 2);
+ $size .= ' GB';
+ }
+ }
+ return $size;
+ }
+?> \ No newline at end of file
diff --git a/bPod/php/buckyf.php b/bPod/php/buckyf.php
new file mode 100644
index 0000000..3f92939
--- /dev/null
+++ b/bPod/php/buckyf.php
@@ -0,0 +1,66 @@
+
+
+
+
+ <?php
+
+ $kWarez = "http://www.carbonpictures.com/bucky/data/";
+
+ mysql_connect("localhost","tfarnon","blunderbus"); // lol QUEERS
+ mysql_select_db("bucky");
+
+ $pid = $_GET['pid'];
+
+ $page = ($endIndex - $startIndex);
+
+ $query = mysql_query("SELECT * FROM `files` where `parent_id` = $pid order by `filename` asc"); //" limit $startIndex, $endIndex");
+ $nrows = mysql_num_rows($query);
+ $rString = "&numItems=". $nrows;
+
+// display as querystring (&p=1)
+ for ($i = 0; $i < $nrows; $i++) {
+ $row = mysql_fetch_array($query);
+ $rString .= "&filetype" .$i ."=". fileExt($row['filename']);
+ $rString .= "&filename" .$i ."=". $row['filename'];
+ $rString .= "&username" .$i ."=". $row['username'];
+ $rString .= "&date" .$i ."=". strtolower (date("D M j", $row['date'] ));
+ $rString .= "&url" .$i ."=". $kWarez . $row['parent_id'] . "/" . str_replace(" ", "%20", $row['filename']);
+ $rString .= "&size" .$i ."=". sizeinK ($row['size']);
+ }
+ echo $rString;
+
+
+// --- UTILS.H --- //
+
+
+ function doubleCheck ($row) {
+ if (!$row['filename'] || !$row['parent_id'] || !$row['date'])
+ {
+ echo "<br>(this file looks weird/null -- not listing)";
+ return (false);
+ } else {
+ return (true);
+ }
+ }
+
+ function fileExt ($inStr) {
+ return strtoupper (end(explode('.',$inStr)));
+ }
+
+
+ function sizeinK($bytes) {
+ $size = $bytes / 1024;
+ if($size < 1024) {
+ $size = number_format($size, 2);
+ $size .= 'k';
+ } else { if ($size / 1024 < 1024) {
+ $size = number_format($size / 1024, 2);
+ $size .= 'mb';
+ } else if ($size / 1024 / 1024 < 1024) {
+ $size = number_format($size / 1024 / 1024, 2);
+ $size .= ' GB';
+ }
+ }
+ return $size;
+ }
+?> \ No newline at end of file
diff --git a/bPod/php/buckyk.php b/bPod/php/buckyk.php
new file mode 100644
index 0000000..bda0355
--- /dev/null
+++ b/bPod/php/buckyk.php
@@ -0,0 +1,37 @@
+ <?php
+
+ // TOUCH NOT LEST YE BE TOUCHED _______________________________
+
+ mysql_connect ("localhost","tfarnon","blunderbus"); // lol security
+ mysql_select_db ("bucky");
+
+ $query = mysql_query ("SELECT * FROM `keywords` order by `keyword` asc");
+
+ $nrows = mysql_num_rows ($query);
+
+ if (!isset ($_GET['s']) || !isset ($_GET['e'])) {
+ $startIndex = 0;
+ $endIndex = $nrows;
+ } else {
+ $startIndex = $_GET['s'];
+ $endIndex = $_GET['e'];
+ }
+
+ if ($startIndex != 0) {
+ $page = ($endIndex - $startIndex); // select a set between _ and _
+ } else {
+ $page = $nrows; // select all from _
+ }
+
+ // SET UP STRING BELOW HERE ___________________________________
+
+ $rString = "&numItems=" . $page;
+
+ for ($i = 0 ; $i <= $endIndex; $i++) {
+ $row = mysql_fetch_array($query);
+ $rString .= "&keyword" .$i ."=". $row['keyword'];
+ if ($row['color']) $rString .= "&color" .$i ."=". $row['color'];
+ else $rString .= "&color" .$i ."=". "plain";
+ }
+ echo $rString;
+?> \ No newline at end of file
diff --git a/bPod/php/buckyth.php b/bPod/php/buckyth.php
new file mode 100644
index 0000000..617e354
--- /dev/null
+++ b/bPod/php/buckyth.php
@@ -0,0 +1,34 @@
+ <?php
+
+
+ // TOUCH NOT LEST YE BE TOUCHED _______________________________
+
+ mysql_connect ("localhost","tfarnon","blunderbus"); // lol security
+ mysql_select_db ("bucky");
+
+ $keyword = $_GET['k'];
+
+ $q = "SELECT * FROM threads where keyword = '" . $keyword . "' order by title desc";
+
+// echo $q;
+
+ $query = mysql_query ( $q );
+
+ $nrows = mysql_num_rows ($query);
+
+
+
+ // SET UP STRING BELOW HERE ___________________________________
+
+// echo "$nrows = " . $nrows;
+
+ $rString = "&numItems=" . $nrows;
+
+ for ($i = $nrows-1 ; $i > -1; $i--) {
+ $row = mysql_fetch_array($query);
+ $rString .= "&title" .$i ."=". $row['title'];
+ $rString .= "&user" .$i ."=". $row['username'];
+ $rString .= "&id" .$i ."=". $row['id'];
+ }
+ echo $rString;
+?> \ No newline at end of file
diff --git a/bPod/php/cybozuLab/rssParser/FetchingRss.as b/bPod/php/cybozuLab/rssParser/FetchingRss.as
new file mode 100644
index 0000000..bca92c1
--- /dev/null
+++ b/bPod/php/cybozuLab/rssParser/FetchingRss.as
@@ -0,0 +1 @@
+/* Action script 2.0 RSS parser package Copyright (C) 2006 Cybozu Labs, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* class: com.cybozuLab.rssParser.FetchingRss version: 0.1 modified: 31/Jan/2006 Fetching RSS2.0 feed and set Action Script 2.0 XML tree. */ import com.cybozuLab.rssParser.*; class com.cybozuLab.rssParser.FetchingRss { private static var DEBUG:Boolean = false; private var targetURL:String; //target rss feed URL private var httpStatusCode:Number; private var httpStatusType:String; private var errorMessage:String; private var rssXml:XML; private var rssParser:ParsingRss; private var calledParserFlag:Boolean; /* function: FetchingRss constructor */ public function FetchingRss( url:String ) { var thisObj:FetchingRss = this; calledParserFlag = false; if( url != undefined ) { targetURL = url; } rssXml = new XML(); rssXml.ignoreWhite = true; rssXml.onHTTPStatus = function( httpStatus:Number ) { thisObj.FetchingRssOnHTTPStatus( httpStatus ); } rssXml.onLoad = function( successFlag:Boolean ) { thisObj.FetchingRssOnLoad( successFlag, thisObj.rssXml.status ); if( successFlag == true ) { thisObj.calledParserFlag = true; thisObj.rssParser = new ParsingRss( thisObj.rssXml ); } thisObj.onLoad( successFlag, thisObj.errorMessage ); } } public function load( url:String ):Boolean { if( url != undefined ) { targetURL = url; } if( targetURL == undefined ) { errorMessage = "Setting Error : Called without source URL."; return false; } calledParserFlag = false; rssXml.load( targetURL ); return true; } public function onLoad( success:Boolean, errorMessage:String ) { } public function getTargetUrl():String { return targetURL; } public function getRssXml():XML { return rssXml; } public function getRssObject():Object { if( calledParserFlag ) { return rssParser.getRssObject(); } return new Object(); } public function traceRssObject():Void { if( calledParserFlag ) { Utils.traceObj( rssParser.getRssObject() ); } } public function getErrorMessage():String { return errorMessage; } /* function: FetchingRssOnHTTPStatus Classify an HTTP status code. */ private function FetchingRssOnHTTPStatus( httpStatus:Number ) { httpStatusCode = httpStatus; if( httpStatus < 100 ) { httpStatusType = "flashError"; } else if( httpStatus < 200 ) { httpStatusType = "information"; } else if( httpStatus < 300 ) { httpStatusType = "successful"; } else if( httpStatus < 400 ) { httpStatusType = "redirection"; } else if( httpStatus < 500 ) { httpStatusType = "client error"; } else if (httpStatus < 600 ) { httpStatusType = "server error"; } else { httpStatusType = "unknown"; } if( DEBUG ) { trace( "httpStatus : " + httpStatusCode ); trace( "httpStatusType : " + httpStatusType ); } } private function FetchingRssOnLoad( successFlag:Boolean, statusNum:Number ) { var eMessage:String; if( successFlag ) { switch ( statusNum ) { case 0 : eMessage = "Parse was completed successfully."; break; case -2 : eMessage = "A CDATA section was not properly terminated."; break; case -3 : eMessage = "The XML declaration was not properly terminated."; break; case -4 : eMessage = "The DOCTYPE declaration was not properly terminated."; break; case -5 : eMessage = "A comment was not properly terminated."; break; case -6 : eMessage = "An XML element was malformed."; break; case -7 : eMessage = "Out of memory."; break; case -8 : eMessage = "An attribute value was not properly terminated."; break; case -9 : eMessage = "A start-tag was not matched with an end-tag."; break; case -10 : eMessage = "An end-tag was encountered without a matching start-tag."; break; default : eMessage = "An unknown error has occurred."; break; } if( statusNum != 0 ) { errorMessage = "Parsing Error : XML was loaded successfully, but was unable to be parsed. (Error : "+eMessage+")"; } else { errorMessage = eMessage; } } else { errorMessage = "Loading Error : Failed to load RSS feed. ( httpStatus : "+httpStatusCode+" - "+httpStatusType+")"; } } } \ No newline at end of file
diff --git a/bPod/php/cybozuLab/rssParser/ParsingRss.as b/bPod/php/cybozuLab/rssParser/ParsingRss.as
new file mode 100644
index 0000000..bff2161
--- /dev/null
+++ b/bPod/php/cybozuLab/rssParser/ParsingRss.as
@@ -0,0 +1 @@
+/* Action script 2.0 RSS parser package Copyright (C) 2006 Cybozu Labs, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* class: com.cybozuLab.rssParser.ParsingRss version: 0.1 Last-modified: 01/Feb/2006 Parsing RSS 2.0 feed for Action Script 2.0 */ import com.cybozuLab.rssParser.*; class com.cybozuLab.rssParser.ParsingRss { private static var DEBUG:Boolean = false; private var targetRssXml:XMLNode; //rss feed XML Node tree private var errorMessage:String; private var parsedRssObj:Object; private var parsedRssChannelObj:Object; private var parsedRssItemObj:Array; private var isInRssTag:Boolean; private var isInChannelTag:Boolean; private var isInItemTag:Boolean; private var currentChannelNum:Number; private var currentItemNum:Number; private var channelStackArray:Array; private var itemStackArray:Array; private var nodeObjStack:Array; /* function: ParsingRss constructor */ public function ParsingRss ( sourceData:XMLNode ) { if( sourceData == undefined ) { errorMessage = "Parsing Error : Called without source data."; throw new RssParserException( errorMessage ); } targetRssXml = sourceData; isInRssTag = false; isInChannelTag = false; isInItemTag = false; currentItemNum = 0; channelStackArray = new Array(); itemStackArray = new Array(); parsedRssObj = new Object(); parsedRssChannelObj = new Object(); parsedRssItemObj = new Array(); parseRss( targetRssXml ); parsedRssObj["channel"] = parsedRssChannelObj; parsedRssObj["channel"]["item"] = parsedRssItemObj; } public function getRssObject():Object { return parsedRssObj; } public function traceRssObject():Void { Utils.traceObj( parsedRssObj ); } private function parseRss( currentNode:XMLNode ):Void { for ( var aNode:XMLNode = currentNode; aNode != null; aNode = aNode.nextSibling ) { if( isInItemTag ) { itemStackArray.unshift( aNode.nodeName ); } else if( isInChannelTag ) { channelStackArray.unshift( aNode.nodeName ); } /* Parse attributes. */ if( ! isInRssTag && aNode.nodeName.toLowerCase() == "rss" && Utils.countProperty( aNode.attributes ) >0 ) { nodeObjStack = Array(); appendAttribute( parsedRssObj, aNode.attributes ); } else if( isInItemTag && Utils.countProperty( aNode.attributes) >0 ) { nodeObjStack = itemStackArray.slice( 0 ); appendAttribute( parsedRssItemObj[ currentItemNum ], aNode.attributes ); } else if( isInChannelTag && Utils.countProperty( aNode.attributes ) >0 ) { nodeObjStack = channelStackArray.slice( 0 ); appendAttribute( parsedRssChannelObj, aNode.attributes ); } /* Parse child node or data. */ if( ! isInRssTag && aNode.nodeName.toLowerCase() == "rss" ) { isInRssTag = true; parseRss(aNode.firstChild); isInRssTag = false; } else if( ! isInChannelTag && aNode.nodeName.toLowerCase() == "channel" ) { isInChannelTag = true; parseRss(aNode.firstChild); isInChannelTag = false; currentChannelNum++; } else if( ! isInItemTag && channelStackArray.length == 1 && aNode.nodeName.toLowerCase() == "item" ) { isInItemTag = true; parsedRssItemObj[ currentItemNum ] = new Object(); parseRss(aNode.firstChild); isInItemTag = false; currentItemNum++; } else if( aNode.firstChild.nodeType == 1 ) { parseRss( aNode.firstChild ); } else if( aNode.firstChild.nodeType == 3 ) { if( isInItemTag ) { nodeObjStack = itemStackArray.slice( 0 ); appendNodeValue( parsedRssItemObj[ currentItemNum ], aNode.firstChild.nodeValue ); } else if( isInChannelTag ) { nodeObjStack = channelStackArray.slice( 0 ); appendNodeValue( parsedRssChannelObj, aNode.firstChild.nodeValue ); } else { trace("no rss value : "+ aNode.firstChild.nodeValue); } } if( isInItemTag ) { itemStackArray.shift( ); } else if( isInChannelTag ) { channelStackArray.shift( ); } } // close for loop } // close function private function appendNodeValue( nodeObj:Object, nodeValue:String ) { if( nodeObjStack.length > 0 ) { var key = nodeObjStack.pop(); if( nodeObj[ key ] == undefined ) { nodeObj[ key ] = new Object(); if( key != key.toLowerCase() ) { nodeObj[ key.toLowerCase() ] = new Object(); } } appendNodeValue( nodeObj[ key ], nodeValue ); if( key != key.toLowerCase() ) { appendNodeValue( nodeObj[ key.toLowerCase() ], nodeValue ); } } else { nodeObj["value"] = nodeValue; } } private function appendAttribute( nodeObj:Object, attributes:Object ) { if( nodeObjStack.length > 0 ) { var key = nodeObjStack.pop(); if( nodeObj[ key ] == undefined ) { nodeObj[ key ] = new Object(); if( key != key.toLowerCase() ) { nodeObj[ key.toLowerCase() ] = new Object(); } } appendAttribute( nodeObj[ key ], attributes ); if( key != key.toLowerCase() ) { appendAttribute( nodeObj[ key.toLowerCase() ], attributes ); } } else { nodeObj["attrs"] = attributes; } } } \ No newline at end of file
diff --git a/bPod/php/cybozuLab/rssParser/RssParserException.as b/bPod/php/cybozuLab/rssParser/RssParserException.as
new file mode 100644
index 0000000..6b8f9dc
--- /dev/null
+++ b/bPod/php/cybozuLab/rssParser/RssParserException.as
@@ -0,0 +1 @@
+/* Action script 2.0 RSS parser package Copyright (C) 2006 Cybozu Labs, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* class: com.cybozuLab.rssParser.RssParserException modified: 12/Jan/2006 Exception Class for RssParser package. */ class com.cybozuLab.rssParser.RssParserException extends Error { public function RssParserException( errMessage:String ) { message = errMessage; } } \ No newline at end of file
diff --git a/bPod/php/cybozuLab/rssParser/Utils.as b/bPod/php/cybozuLab/rssParser/Utils.as
new file mode 100644
index 0000000..ddfe31c
--- /dev/null
+++ b/bPod/php/cybozuLab/rssParser/Utils.as
@@ -0,0 +1 @@
+/* Action script 2.0 RSS parser package Copyright (C) 2006 Cybozu Labs, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* class: com.cybozuLab.rssParser.Utils modified: 20/Jan/2006 Utilities for RSS parser package. */ class com.cybozuLab.rssParser.Utils { private static var INTEND_SPACE_NUMBER:Number = 3; static public function traceObj( targetObj:Object, hierarchyLevel:Number ):Void { if( hierarchyLevel == undefined ) { hierarchyLevel = 0; } for( var prop in targetObj ) { if( typeof( targetObj[prop] ) != "object" ) { trace( makeIntendSpace( hierarchyLevel ) + prop + " : " + targetObj[prop] ); } else { trace( makeIntendSpace( hierarchyLevel ) + prop ); hierarchyLevel++; traceObj( targetObj[prop], hierarchyLevel ); hierarchyLevel--; } } } static public function objToString( targetObj:Object, hierarchyLevel:Number ):String { var resultStr:String = ""; if( hierarchyLevel == undefined ) { hierarchyLevel = 0; } for( var prop in targetObj ) { if( typeof( targetObj[prop] ) != "object" ) { resultStr += makeIntendSpace( hierarchyLevel ) + prop + " : " + targetObj[prop] + "\n"; } else { resultStr += makeIntendSpace( hierarchyLevel ) + prop + "\n"; hierarchyLevel++; resultStr += objToString( targetObj[prop], hierarchyLevel ); hierarchyLevel--; } } return resultStr; } static private function makeIntendSpace( hierarchyLevel:Number ):String { var resultString:String = ""; for( var i:Number=0; i < INTEND_SPACE_NUMBER * hierarchyLevel; i++ ) { resultString += " "; } return resultString+"|-"; } static public function countProperty( targetObj:Object ):Number { var i:Number = 0; for( var prop in targetObj ) { i++; } return i; } } \ No newline at end of file
diff --git a/bPod/rssProxy.php b/bPod/rssProxy.php
new file mode 100644
index 0000000..d9c6e44
--- /dev/null
+++ b/bPod/rssProxy.php
@@ -0,0 +1,11 @@
+<?php
+$rss = $_GET['rss'];
+// make sure that some page is really being called
+if ($rss && $rss != ""){
+ // make sure that an http call is being made - otherwise there's access to any file on machine...
+ if ((strpos($rss, "http://") === 0) || (strpos($rss, "https://") === 0)){
+ readfile($rss);
+ }
+}
+
+?> \ No newline at end of file
diff --git a/bPod/swfobject/swfobject.js b/bPod/swfobject/swfobject.js
new file mode 100644
index 0000000..7345ef0
--- /dev/null
+++ b/bPod/swfobject/swfobject.js
@@ -0,0 +1,138 @@
+/**
+ * SWFObject v1.4.4: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
+ *
+ * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT License:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * **SWFObject is the SWF embed script formerly known as FlashObject. The name was changed for
+ * legal reasons.
+ */
+if(typeof deconcept=="undefined"){var deconcept=new Object();}
+if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}
+if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}
+deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){if(!document.getElementById){return;}
+this.DETECT_KEY=_b?_b:"detectflash";
+this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);
+this.params=new Object();
+this.variables=new Object();
+this.attributes=new Array();
+if(_1){this.setAttribute("swf",_1);}
+if(id){this.setAttribute("id",id);}
+if(w){this.setAttribute("width",w);}
+if(h){this.setAttribute("height",h);}
+if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}
+this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();
+if(c){this.addParam("bgcolor",c);}
+var q=_8?_8:"high";
+this.addParam("quality",q);
+this.setAttribute("useExpressInstall",_7);
+this.setAttribute("doExpressInstall",false);
+var _d=(_9)?_9:window.location;
+this.setAttribute("xiRedirectUrl",_d);
+this.setAttribute("redirectUrl","");
+if(_a){this.setAttribute("redirectUrl",_a);}};
+deconcept.SWFObject.prototype={setAttribute:function(_e,_f){
+this.attributes[_e]=_f;
+},getAttribute:function(_10){
+return this.attributes[_10];
+},addParam:function(_11,_12){
+this.params[_11]=_12;
+},getParams:function(){
+return this.params;
+},addVariable:function(_13,_14){
+this.variables[_13]=_14;
+},getVariable:function(_15){
+return this.variables[_15];
+},getVariables:function(){
+return this.variables;
+},getVariablePairs:function(){
+var _16=new Array();
+var key;
+var _18=this.getVariables();
+for(key in _18){_16.push(key+"="+_18[key]);}
+return _16;},getSWFHTML:function(){var _19="";
+if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){
+if(this.getAttribute("doExpressInstall")){
+this.addVariable("MMplayerType","PlugIn");}
+_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\"";
+_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";
+var _1a=this.getParams();
+for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}
+var _1c=this.getVariablePairs().join("&");
+if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";
+}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");}
+_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\">";
+_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";
+var _1d=this.getParams();
+for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}
+var _1f=this.getVariablePairs().join("&");
+if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}
+return _19;
+},write:function(_20){
+if(this.getAttribute("useExpressInstall")){
+var _21=new deconcept.PlayerVersion([6,0,65]);
+if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){
+this.setAttribute("doExpressInstall",true);
+this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));
+document.title=document.title.slice(0,47)+" - Flash Player Installation";
+this.addVariable("MMdoctitle",document.title);}}
+if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){
+var n=(typeof _20=="string")?document.getElementById(_20):_20;
+n.innerHTML=this.getSWFHTML();return true;
+}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}
+return false;}};
+deconcept.SWFObjectUtil.getPlayerVersion=function(){
+var _23=new deconcept.PlayerVersion([0,0,0]);
+if(navigator.plugins&&navigator.mimeTypes.length){
+var x=navigator.plugins["Shockwave Flash"];
+if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}
+}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}
+catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
+_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}
+catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}
+catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}
+return _23;};
+deconcept.PlayerVersion=function(_27){
+this.major=_27[0]!=null?parseInt(_27[0]):0;
+this.minor=_27[1]!=null?parseInt(_27[1]):0;
+this.rev=_27[2]!=null?parseInt(_27[2]):0;
+};
+deconcept.PlayerVersion.prototype.versionIsValid=function(fv){
+if(this.major<fv.major){return false;}
+if(this.major>fv.major){return true;}
+if(this.minor<fv.minor){return false;}
+if(this.minor>fv.minor){return true;}
+if(this.rev<fv.rev){
+return false;
+}return true;};
+deconcept.util={getRequestParameter:function(_29){
+var q=document.location.search||document.location.hash;
+if(q){var _2b=q.substring(1).split("&");
+for(var i=0;i<_2b.length;i++){
+if(_2b[i].substring(0,_2b[i].indexOf("="))==_29){
+return _2b[i].substring((_2b[i].indexOf("=")+1));}}}
+return "";}};
+deconcept.SWFObjectUtil.cleanupSWFs=function(){if(window.opera||!document.all){return;}
+var _2d=document.getElementsByTagName("OBJECT");
+for(var i=0;i<_2d.length;i++){_2d[i].style.display="none";for(var x in _2d[i]){
+if(typeof _2d[i][x]=="function"){_2d[i][x]=function(){};}}}};
+deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};
+__flash_savedUnloadHandler=function(){};
+if(typeof window.onunload=="function"){
+var _30=window.onunload;
+window.onunload=function(){
+deconcept.SWFObjectUtil.cleanupSWFs();_30();};
+}else{window.onunload=deconcept.SWFObjectUtil.cleanupSWFs;}};
+if(typeof window.onbeforeunload=="function"){
+var oldBeforeUnload=window.onbeforeunload;
+window.onbeforeunload=function(){
+deconcept.SWFObjectUtil.prepUnload();
+oldBeforeUnload();};
+}else{window.onbeforeunload=deconcept.SWFObjectUtil.prepUnload;}
+if(Array.prototype.push==null){
+Array.prototype.push=function(_31){
+this[this.length]=_31;
+return this.length;};}
+var getQueryParamValue=deconcept.util.getRequestParameter;
+var FlashObject=deconcept.SWFObject;
+var SWFObject=deconcept.SWFObject;
diff --git a/bin/change-password.pl b/bin/change-password.pl
new file mode 100755
index 0000000..0b82bea
--- /dev/null
+++ b/bin/change-password.pl
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+
+BEGIN
+ {
+ our $BUCKY = "/cgi-bin/bucky";
+ our $BUCKY_DB = "bucky";
+ our $BUCKY_DB_CNF = "/var/www/vhosts/carbonpictures.com/.bucky.cnf";
+ }
+
+use lib "/var/www/vhosts/carbonpictures.com/bucky/lib";
+use Bucky1;
+
+our $dbh = DBI->connect ($dsn);
+#our $DEBUG = 1;
+
+my ($user, $pw) = @ARGV;
+
+do_password_reset($user, $pw, $pw);
+
+$dbh->disconnect();
+
+sub do_password_reset
+ {
+ my ($user, $pw1, $pw2) = @_;
+ if (length($pw1) && length($pw2))
+ {
+ if ($pw1 eq $pw2)
+ {
+ update_password($user, crypt($pw1,lc($user)));
+ print qq(password changed for $user<br>\n);
+ }
+ else
+ {
+ print "passwords don't match!<br>\n";
+ }
+ }
+ }
+
diff --git a/bin/flushrms.pl b/bin/flushrms.pl
new file mode 100755
index 0000000..058b582
--- /dev/null
+++ b/bin/flushrms.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+use localbucky;
+use lib "/var/www/vhosts/carbonpictures.com/bucky/lib";
+use Bucky1;
+
+$dbh = DBI->connect ("DBI:mysql:$BUCKY_DB:localhost;mysql_read_default_file=$BUCKY_DB_CNF");
+
+# $DEBUG = 1;
+
+$threads = get_threads();
+$fucker = "";
+$max = 1;
+
+foreach $t (@$threads)
+ {
+ $fucker = add_key($fucker, $t->{id});
+ $max = $t->{id} if ($t->{id} > $max);
+ }
+
+for ($i = 32; $i <= $max; $i++)
+ {
+ if (-e "$data_path/$i" && !check_key($fucker, $i))
+ {
+ print "Deleting $i\n";
+ system("/bin/rm", "-rf", "$data_path/$i");
+ }
+ }
+
+$dbh->disconnect();
+
diff --git a/bin/flushzips.pl b/bin/flushzips.pl
new file mode 100755
index 0000000..392e782
--- /dev/null
+++ b/bin/flushzips.pl
@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+
+use localbucky;
+use lib "/var/www/vhosts/carbonpictures.com/bucky/lib";
+use Bucky1;
+
+$dbh = DBI->connect ("DBI:mysql:$BUCKY_DB:localhost;mysql_read_default_file=$BUCKY_DB_CNF");
+
+#our $dbh = DBI->connect ($dsn);
+#our $DEBUG = 1;
+
+my $threads = get_threads();
+my ($zips, $zip_size) = find_all_zips($threads);
+print STDERR scalar(@$zips)." in ".hushsize($zip_size)."\n";
+foreach my $f (@$zips)
+ {
+ delete_file($f);
+ }
+$dbh->disconnect();
+
+sub find_all_zips
+ {
+ my ($threads) = @_;
+ my @zips;
+ my $zip_size = 0;
+ foreach my $t (@$threads)
+ {
+ my $files = get_files($t->{id});
+ my $zip_file = generate_zip_filename($t);
+ foreach my $f (@$files)
+ {
+ next unless $f->{filename} eq $zip_file;
+ push @zips, $f;
+ $zip_size += $f->{size};
+ }
+ }
+ return \@zips, $zip_size;
+ }
+
+sub delete_file
+ {
+ my ($f) = @_;
+ my $file_path = join "/", $data_path, $f->{thread}, $f->{filename};
+ if (! -e $file_path)
+ {
+ print STDERR "DNE: $file_path ...\n";
+ return;
+ }
+ delete_file_record($f->{id});
+ system($RM_PATH, "-f", $file_path);
+ update_thread_size($f->{thread});
+ print STDERR qq(deleted $file_path\n);
+ }
+
diff --git a/bin/keyword-export.pl b/bin/keyword-export.pl
new file mode 100755
index 0000000..4f04579
--- /dev/null
+++ b/bin/keyword-export.pl
@@ -0,0 +1,156 @@
+#!/usr/bin/perl
+
+use lib "/var/www/vhosts/carbonpictures.com/bucky/lib";
+use Bucky;
+
+$dbh = DBI->connect ($dsn);
+
+# get keyword + threads
+my $target = $ARGV[0];
+
+if ($target > 0)
+ {
+ my ($t) = get_thread($target);
+ export_thread($t);
+ }
+else
+ {
+ export_keyword($target);
+ }
+
+$dbh->disconnect();
+
+sub export_keyword
+ {
+ my ($keyword) = @_;
+
+ print "Exporting keyword $keyword\n";
+ my $kw = get_keyword($keyword);
+ if ($kw == -1)
+ { print "No such keyword: $kw\n"; quit_out(); }
+ my $threads = get_full_threads_by_keyword($keyword);
+
+ # mkdir keyword, chdir
+ mkdir ("$keyword");
+ chdir ("$keyword");
+
+ open FILE, ">keyword" or die $!;
+ foreach my $key (keys %$kw)
+ {
+ print FILE "$key:".$kw->{$key}."\n";
+ }
+ close FILE;
+
+ # foreach thread:
+ foreach my $thread (@$threads)
+ {
+ export_thread($thread);
+ }
+
+ chdir("..");
+ }
+
+sub export_thread
+ {
+ my ($thread) = @_;
+
+ # get all comments & files
+ my $comments = get_comments($thread->{id});
+ my $files = get_files($thread->{id});
+
+ mkdir ("$thread->{id}");
+ chdir ("$thread->{id}");
+
+ print "thread $thread->{id} -- $thread->{title}\n";
+ print "comments: $thread->{comments}\n";
+ print "files: $thread->{files}\n";
+
+ open THREAD, ">thread" or die $!;
+ foreach my $key (keys %$thread)
+ {
+ print THREAD "$key:".$thread->{$key}."\n";
+ }
+ print THREAD "\n";
+ close THREAD;
+
+ # cat each comment & file to text files based on id
+ foreach my $comment (keys %$comments)
+ {
+ my $c = $comments->{$comment};
+ open COMMENT, ">comment.".$c->{id} or die $!;
+ foreach my $key (keys %$c)
+ {
+ next if ($key eq "comment");
+ print COMMENT "$key:".$c->{$key}."\n";
+ }
+ print COMMENT "\n";
+ print COMMENT $c->{comment};
+ close COMMENT;
+ }
+
+ foreach my $f (@$files)
+ {
+ open FILE, ">file.".$f->{id} or die $!;
+ foreach my $key (keys %$f)
+ {
+ print FILE "$key:".$f->{$key}."\n";
+ }
+ close FILE;
+ }
+
+ if (-e "$data_path/$thread->{id}")
+ {
+ print "Copying ...\n";
+ mkdir ("data/");
+ system ("/bin/cp -r $data_path/$thread->{id}/* data/")
+ }
+
+ chdir ("..");
+ print "\n";
+ }
+
+sub get_full_threads_by_keyword
+ {
+ my ($keyword, $private) = @_;
+ my @rows;
+ my $query;
+ my @keys = qw(id title username keyword createdate lastmodified size private allowed flagged color);
+ my $rows = 0;
+
+ $keyword = $dbh->quote($keyword);
+ $query = "SELECT id,title,username,keyword,createdate,lastmodified,size,private,allowed,flagged,color FROM threads WHERE keyword=$keyword";
+ if (defined($private) && $private)
+ {
+ $query .= " AND (ISNULL(private) OR private = '')";
+ }
+
+ print $query."<br>" if ($DEBUG);
+ $sth = $dbh->prepare($query);
+ $sth->execute();
+ while (my (@row) = $sth->fetchrow_array())
+ {
+ my %temphash;
+ for (my $i = 0; $i < @row; $i++)
+ {
+ $temphash{$keys[$i]} = $row[$i];
+ }
+ $rows[$rows] = \%temphash;
+ $rows++;
+ }
+ $sth->finish();
+
+ if ($rows == 0)
+ {
+ print "No threads!\n" if ($DEBUG);
+ return -1;
+ }
+
+ for (my $i = 0; $i < @rows; $i++)
+ {
+ $rows[$i]{comments} = count_comments($rows[$i]{id});
+ $rows[$i]{files} = count_files($rows[$i]{id});
+ }
+
+ return \@rows;
+ }
+
diff --git a/bin/keyword-import.pl b/bin/keyword-import.pl
new file mode 100755
index 0000000..1a377bb
--- /dev/null
+++ b/bin/keyword-import.pl
@@ -0,0 +1,252 @@
+#!/usr/bin/perl
+
+use lib "/bucky/lib";
+use Bucky;
+
+$dbh = DBI->connect ($dsn);
+
+# get keyword + threads
+my $target = $ARGV[0];
+my @dirs;
+my %threads, %comments, %files;
+our %keywords = get_keywords();
+my $keyword;
+
+if ($target > 0)
+ {
+ push @dirs, $target if (-e $target && -d $target);
+ }
+else
+ {
+ $keyword = $ARGV[0];
+ print "Importing keyword $keyword\n";
+ @dirs = dir_list("$keyword/");
+ chdir("$keyword/");
+ }
+
+# read in all data...
+foreach my $dir (@dirs)
+ {
+ next if ($dir eq "keyword");
+ my @files = dir_list("$dir/");
+ my $t, $c, $f;
+
+ print "Reading in thread $dir ...\n";
+ foreach my $filename (@files)
+ {
+ next if ($filename !~ /(thread|comment|file)/);
+ my ($type, $id) = split /\./, $filename, 2;
+ my $file = read_file("$dir/$filename");
+
+ if ($type eq "thread")
+ {
+ $t = flat2thread($file);
+ $threads{$t->{id}} = $t;
+ print "t.$t->{id} ";
+ }
+ elsif ($type eq "comment")
+ {
+ $c = flat2comment($file);
+ $comments{$c->{id}} = $c;
+ print "c.$c->{id} ";
+ }
+ elsif ($type eq "file")
+ {
+ $f = flat2file($file);
+ if (-e "$dir/data/$f->{filename}")
+ {
+ $files{$f->{id}} = $f;
+ print "f.$f->{id} ";
+ }
+ else
+ {
+ print "No data for $f->{filename} !\n"
+ }
+ }
+ }
+ print "$t->{title}";
+ print "\n";
+ }
+
+print "\n";
+
+# now that data is all in a structure,
+# parse through threads, comments, files IN ORDER
+# get "real" thread ids to update "thread" when you next encounter it...
+# as comments are created, keep track of "real ids".. update "parent_id != -1" where appropriate
+# as files are created, update parent_id and move files
+
+# if keyword does not exist, create it.
+#my $realk = get_keyword($keyword);
+#if ($realk == -1)
+# {
+# my $file = read_file("keyword");
+# my $k = flat2thread($file);
+# instantiate_keyword($k);
+# }
+
+my %realthread = (-1 => -1);
+my %realcomment = (-1 => -1);
+my %realfile = (-1 => -1);
+
+foreach my $tid (sort { $a <=> $b } keys %threads)
+ {
+ my $t = $threads{$tid};
+ my $fakeid = instantiate_thread($t);
+ print "thread $t->{id} => $fakeid\n";
+ $realthread{$t->{id}} = $fakeid;
+ $ttot++;
+ }
+
+foreach my $cid (sort { $a <=> $b } keys %comments)
+ {
+ my $c = $comments{$cid};
+ my $fakeid = instantiate_comment($c, $realthread{$c->{thread}}, $realcomment{$c->{parent_id}});
+ print "comment $c->{id} => $fakeid\n";
+ print " .. new thread: $c->{thread} -> $realthread{$c->{thread}}\n";
+ print " .. new parent: $c->{parent_id} -> $realcomment{$c->{parent_id}}\n"
+ if ($c->{parent_id} != -1);
+ $realcomment{$c->{id}} = $fakeid;
+ $ctot++;
+ }
+
+foreach my $fid (sort { $a <=> $b } keys %files)
+ {
+ my $f = $files{$fid};
+ my $realt = $realthread{$f->{parent_id}};
+ my $fakeid = instantiate_file($f, $realt);
+ mkdir ("$data_path/$realt/") unless (-e "$data_path/$realt/");
+ mkdir ("$data_path/$realt/.thumb/") unless (-e "$data_path/$realt/.thumb/");
+ system("/bin/chmod 777 $data_path/$realt/.thumb");
+ system ("/bin/cp \"$f->{parent_id}/data/$f->{filename}\" $data_path/$realt/");
+ print "file $f->{id} => $fakeid\n";
+
+ print " .. new thread: $f->{parent_id} -> $realthread{$f->{parent_id}}\n";
+ $realfile{$f->{id}} = $fakeid;
+ $ftot++;
+ $sizetot += $f->{size};
+ }
+
+print "Import successful!\nTotal: $ttot.t $ctot.c $ftot.f ($sizetot b.)\n";
+
+$dbh->disconnect();
+
+###########################
+
+sub instantiate_keyword
+ {
+ my ($k) = @_;
+ my %nk =
+ (
+ keyword => $k->{keyword},
+ threads => " ",
+ owner => $k->{username},
+ public => $k->{public},
+ agglutinate => $k->{agglutinate},
+ color => $k->{color}
+ );
+ add_keyword(\%nk);
+ }
+
+sub instantiate_thread
+ {
+ my ($t) = @_;
+ my %nt =
+ (
+ title => $t->{title},
+ username => $t->{username},
+ keyword => (exists ($keywords{$t->{keyword}}) ? $t->{keyword} : ""),
+ createdate => $t->{createdate},
+ lastmodified => $t->{lastmodified},
+ size => $t->{size},
+ private => $t->{private},
+ allowed => $t->{allowed},
+ flagged => $t->{flagged},
+ color => $t->{color},
+ display => $t->{display}
+ );
+ my $thread_id = add_thread_by_hash(\%nt);
+ die if ($thread_id == -1);
+ return $thread_id;
+ }
+
+sub instantiate_comment
+ {
+ my ($c, $newt, $newp) = @_;
+ my $comment_id = add_comment($newt, $newp, $c->{username}, $c->{comment}, $c->{date});
+ return $comment_id;
+ }
+
+sub instantiate_file
+ {
+ my ($f, $newt) = @_;
+ my $file_id = add_file($newt, $f->{username}, $f->{filename}, $f->{size}, $f->{date});
+ return $file_id;
+ }
+
+###########################
+
+sub dir_list
+ {
+ my ($d) = @_;
+ opendir (DIR, $d) or die "couldn't list: $d, $!";
+ @files = grep (!/^\./, sort readdir (DIR));
+ closedir DIR;
+ return @files;
+ }
+
+sub flat2hash
+ {
+ my ($file) = @_;
+ my %hash;
+ foreach my $line (@$file)
+ {
+ $line =~ s/\r//;
+ chomp $line;
+ last if (!$line);
+ last if ($line eq "\n");
+ my ($k, $v) = split /:/, $line, 2;
+ $hash{$k} = $v;
+ }
+ return \%hash;
+ }
+
+sub flat2comment
+ {
+ my ($file) = @_;
+ my $comment_hash = flat2hash($file);
+ my $reading = 0;
+ foreach my $line (@$file)
+ {
+ $line =~ s/\r//;
+ if (!$line && !$reading)
+ { $reading = 1; next; }
+ next unless ($reading);
+ $comment_hash->{comment} .= $line;
+ }
+ return $comment_hash;
+ }
+
+sub flat2file
+ {
+ my ($file) = @_;
+ return flat2hash($file);
+ }
+
+sub flat2thread
+ {
+ my ($file) = @_;
+ return flat2hash($file);
+ }
+
+sub read_file
+ {
+ my ($file) = @_;
+ my @out;
+
+ open F, $file or die "problem with $file $!";
+ @out=<F>;
+ close F;
+ return \@out;
+ }
+
diff --git a/bin/localbucky.pm b/bin/localbucky.pm
new file mode 100644
index 0000000..abf82e6
--- /dev/null
+++ b/bin/localbucky.pm
@@ -0,0 +1,62 @@
+#!/usr/bin/perl
+
+# Change this to point to Bucky library directory, where packages are installed
+use lib "/var/www/vhosts/carbonpictures.com/bucky/lib";
+
+# Change this to point to the directory of random texts
+our $BUCKY_FORTUNES = "/var/www/vhosts/carbonpictures.com/bucky/fortune";
+
+# Change this to point to the URL preamble for Bucky's script directory, where cgi-bin scripts are installed
+BEGIN
+ {
+ our $BUCKY = "/cgi-bin/bucky";
+ our $BUCKY_DB = "bucky";
+ our $BUCKY_DB_CNF = "/var/www/vhosts/carbonpictures.com/.bucky.cnf";
+ }
+
+#our $BUCKY = "";
+
+our $BUCKY_NAME = 'bucky';
+our $BUCKY_SHORT_NAME = 'bucky';
+our $BUCKY_COOKIE_DOMAIN = 'carbonpictures.com';
+our $BUCKY_HOST = 'www.carbonpictures.com'; # url domain
+
+our $BUCKY_ADMINISTRATOR = 'jules';
+our $BUCKY_DEFAULT_BOXES = " welcome bPod radio postform hootbox photostream ";
+our $BUCKY_DEFAULT_KEYWORD = 'NONE'; # default should be 'NONE'
+our $BUCKY_TIMEZONE_OFFSET = 5; # correct your server's offset from GMT
+our $BUCKY_DUDER_NOUN = 'duder'; # singular noun accepting courtesy 's'
+
+our $BUCKY_LOGIN_WELCOME = "welcome to bucky"; # welcome on login screen
+
+# bucky non-css colors
+our $BUCKY_COLOR_HR = "#201010";
+
+our $BUCKY_INDEX_LIMIT = 50;
+
+# bPod: URLs, colors
+our $BPOD_URL_SERVICES_KEYWORDS = $BUCKY_HOST . "$BUCKY/services_k";
+our $BPOD_URL_SERVICES_THREADS = $BUCKY_HOST . "$BUCKY/services_th?k=";
+our $BPOD_URL_SERVICES_FILES = $BUCKY_HOST . "$BUCKY/services_f?pid=";
+our $BPOD_URL_PREAMBLE_FILES = $BUCKY_HOST . "/bucky/data/";
+our $BPOD_URL_DETAILS = $BUCKY_HOST . "$BUCKY/details/";
+our $BPOD_COLOR_UI_GRADIENT_1 = "0xE6F0F0";
+our $BPOD_COLOR_UI_GRADIENT_2 = "0xD8E0EC";
+our $BPOD_COLOR_UI_STROKE = "0x201010";
+
+# thread url format: /details (== 0) or individually by /keyword (== 1)
+our $BUCKY_KEYWORD_IN_DETAILS_URL = 0;
+
+our $ZIP_BUTTON_ENABLED = 1;
+
+# (shoutcast) radio status
+our $RADIO_STATUS_ENABLED = 1;
+our $RADIO_STATUS_URL = "http://radiofreehanoi.com/status";
+our $RADIO_INFO_URL = "http://radiofreehanoi.com/info";
+
+
+# Load bucky packages
+use Bucky1;
+
+1;
+
diff --git a/bin/participation_matrix.pl b/bin/participation_matrix.pl
new file mode 100644
index 0000000..4742183
--- /dev/null
+++ b/bin/participation_matrix.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+
+$dbh = DBI->connect ($dsn);
+
+our ($USER, $lastlog) = checkin();
+our $loggedin = ($USER != -1);
+
+my ($threads) = get_threads();
+my ($keywords) = get_keywords();
+
+open HMATRIX, ">".$BUCKY_CONFIG->{BASE_PATH}."/docs/hmatrix.html";
+
+print HMATRIX "<html><body>";
+foreach $t (keys (%$threads))
+ {
+ my ($files, $comments) = get_attachments($t);
+ }
+
+sub check_user_hash
+ {
+ my ($userhash, $fakehash) = @_;
+ foreach $k (keys %$fakehash)
+ {
+ $userhash->{$fakehash->{username}} += 1;
+ }
+ }
+
+sub get_attachments
+ {
+ my ($id) = @_;
+ my $files = get_files($t->{id});
+ my $comments = get_comments ($t->{id});
+
+ return ($files, $comments) ;
+ }
diff --git a/bin/populate-avatars.pl b/bin/populate-avatars.pl
new file mode 100755
index 0000000..ee9f4fd
--- /dev/null
+++ b/bin/populate-avatars.pl
@@ -0,0 +1,26 @@
+#!/usr/bin/perl
+
+$ENV{HTTPS} = "on";
+
+use localbucky;
+
+$DEBUG = 1;
+
+$dbh = DBI->connect ($dsn);
+
+my $users = get_all_users();
+
+system("chmod", "-R", "777", "$data_path/profile");
+
+foreach my $u (@$users)
+ {
+ update_profile_thumb($u->{username});
+ print "\n";
+ }
+
+system("chmod", "-R", "777", "$data_path/profile");
+
+# system("chown", "-R", "nobody:nobody", "$data_path/profile");
+
+$dbh->disconnect();
+
diff --git a/bin/populate-thumbs.pl b/bin/populate-thumbs.pl
new file mode 100755
index 0000000..ff22207
--- /dev/null
+++ b/bin/populate-thumbs.pl
@@ -0,0 +1,48 @@
+#!/usr/bin/perl
+
+$ENV{HTTPS} = "on";
+
+use localbucky;
+
+
+$dbh = DBI->connect ($dsn);
+
+my $doit_id = $ARGV[0];
+
+if (length($doit_id))
+ {
+ my $thread = get_thread($doit_id);
+ check_and_render($thread);
+ }
+else
+ {
+ my $threads = get_threads();
+ foreach my $t (@$threads)
+ {
+ check_and_render($t);
+ }
+ }
+
+sub check_and_render
+ {
+ my ($t) = @_;
+ my $path = qq($data_path/$t->{id}/.thumb);
+ my $printed = 0;
+ my $files = get_files($t->{id});
+ foreach $f (@$files)
+ {
+ next unless ($f->{filename} =~ /(gif|jpe?g|png)$/i);
+ next unless (-e "$data_path/$f->{parent_id}/$f->{filename}");
+ system($RM_PATH, "-f", "$path/t.".(lc($f->{filename})));
+ if (! $printed)
+ { print qq(Generating thumbs for $t->{id} -- $t->{title}\n); $printed++; }
+ print "$f->{filename} ";
+ make_image_thumb({ file => $f, maxwidth => 145, maxheight => 110, key => $THUMB_LIBRARY_PREFIX });
+ }
+ print qq(\n\n) if ($printed);
+ }
+
+# system("chown", "-R", "carbon:psacln", "$data_path");
+
+$dbh->disconnect();
+
diff --git a/bin/username-export.pl b/bin/username-export.pl
new file mode 100755
index 0000000..38024ed
--- /dev/null
+++ b/bin/username-export.pl
@@ -0,0 +1,165 @@
+#!/usr/bin/perl
+
+$DEBUG = 1;
+
+use lib "../cgi-bin";
+use localbucky;
+
+$dbh = DBI->connect ($dsn);
+
+# get keyword + threads
+
+if (@ARGV > 0)
+ {
+ export_users(@ARGV);
+ }
+
+$dbh->disconnect();
+
+sub export_users
+ {
+ print "Exporting users @_\n";
+ my $threads = get_full_threads_by_username(@_);
+
+ print "Got " . @$threads . " threads";
+
+ # mkdir username, chdir
+ mkdir ($_[0]);
+ chdir ($_[0]);
+
+ # foreach thread:
+ foreach my $thread (@$threads)
+ {
+ export_thread($thread);
+ }
+
+ chdir("..");
+ }
+
+sub export_thread
+ {
+ my ($thread) = @_;
+
+ # get all comments & files
+ my $comments = get_comments($thread->{id});
+ my $files = get_files($thread->{id});
+
+ mkdir ("$thread->{id}");
+ chdir ("$thread->{id}");
+
+ print "thread $thread->{id} -- $thread->{title}\n";
+ print "comments: $thread->{comments}\n";
+ print "files: $thread->{files}\n";
+
+ open THREAD, ">thread" or die $!;
+ foreach my $key (keys %$thread)
+ {
+ print THREAD "$key:".$thread->{$key}."\n";
+ }
+ print THREAD "\n";
+ close THREAD;
+
+ # cat each comment & file to text files based on id
+ foreach my $comment (keys %$comments)
+ {
+ my $c = $comments->{$comment};
+ open COMMENT, ">comment.".$c->{id} or die $!;
+ foreach my $key (keys %$c)
+ {
+ next if ($key eq "comment");
+ print COMMENT "$key:".$c->{$key}."\n";
+ }
+ print COMMENT "\n";
+ print COMMENT $c->{comment};
+ close COMMENT;
+ }
+
+ foreach my $f (@$files)
+ {
+ open FILE, ">file.".$f->{id} or die $!;
+ foreach my $key (keys %$f)
+ {
+ print FILE "$key:".$f->{$key}."\n";
+ }
+ close FILE;
+ }
+
+ if (-e "$data_path/$thread->{id}")
+ {
+ print "Copying ...\n";
+ mkdir ("data/");
+ system ("/bin/cp -r $data_path/$thread->{id}/* data/")
+ }
+
+ chdir ("..");
+ print "\n";
+ }
+
+sub get_full_threads_by_username
+ {
+ my @usernames = @_;
+ my @rows;
+ my $query;
+ my @keys = qw(id title username keyword createdate lastmodified size private allowed flagged color);
+ my $rc = 0;
+
+ my $threadz = {};
+ for my $username (@usernames) {
+ print $username . "\n";
+ my $quser = $dbh->quote($username);
+
+ $query = "SELECT thread FROM comments WHERE username=$quser GROUP BY thread";
+ print $query . "\n";
+ $sth = $dbh->prepare($query);
+ $sth->execute();
+ while (my (@row) = $sth->fetchrow_array()) {
+ $threadz->{$row[0]} = 1;
+ }
+
+ $query = "SELECT thread FROM files WHERE username=$quser GROUP BY thread";
+ print $query . "\n";
+ $sth = $dbh->prepare($query);
+ $sth->execute();
+ while (my (@row) = $sth->fetchrow_array()) {
+ $threadz->{$row[0]} = 1;
+ }
+ }
+ my $values = join ",", sort keys %$threadz;
+
+ $query = "SELECT id,title,username,keyword,createdate,lastmodified,size,private,allowed,flagged,color FROM threads WHERE id IN ($values)";
+# if (defined($private) && $private)
+# {
+# $query .= " AND (ISNULL(private) OR private = '')";
+# }
+
+ print $query."<br>" if ($DEBUG);
+ $sth = $dbh->prepare($query);
+ $sth->execute();
+ while (my (@row) = $sth->fetchrow_array())
+ {
+ my %temphash;
+ for (my $i = 0; $i < @row; $i++)
+ {
+ $temphash{$keys[$i]} = $row[$i];
+ }
+ $rows[$rc] = \%temphash;
+ $rc++;
+ }
+ $sth->finish();
+
+ if ($rc == 0)
+ {
+ print "No threads!\n" if ($DEBUG);
+ return -1;
+ }
+
+ for (my $i = 0; $i < @rows; $i++)
+ {
+ $rows[$i]{comments} = count_comments($rows[$i]{id});
+ $rows[$i]{files} = count_files($rows[$i]{id});
+ }
+
+ return \@rows;
+ }
+
+
diff --git a/bin/whenis.pl b/bin/whenis.pl
new file mode 100755
index 0000000..0d37892
--- /dev/null
+++ b/bin/whenis.pl
@@ -0,0 +1,7 @@
+#!/usr/bin/perl
+
+use localbucky;
+
+my $when = $ARGV[0];
+
+print verbosedate($when)."\n";
diff --git a/install.pl b/install.pl
new file mode 100644
index 0000000..3d0ac38
--- /dev/null
+++ b/install.pl
@@ -0,0 +1,71 @@
+#!/usr/bin/perl
+
+### This script creates symlinks so things will appear as they do on
+### the carbonpictures.com bucky. You will still have to edit
+### "lib/constants.pm" and "cgi-bin/localbucky.pm" due to the ridiculous
+### way we set this up so long ago. But mostly just paths and shit.
+### Also, do touch up the stuff in "fortunes".
+
+### If you are going to use FTP/SCP to import shit, do something like this:
+# vi $BUCKY_ROOT/bin/buckypoll.pl
+### ..and set $localpath to "$BUCKY_DATA_ROOT/incoming"
+### then:
+# /usr/sbin/useradd --home $BUCKY_DATA_ROOT/incoming \
+# --password $BUCKY_FTP_PASS $BUCKY_FTP_LOGIN
+# chown $BUCKY_FTP_LOGIN $BUCKY_ROOT/bin/buckypoll.pl
+# su $BUCKY_FTP_LOGIN
+# nohup $BUCKY_ROOT/bin/buckypoll.pl > output.log 2>&1 &
+
+###################################################################3
+
+use lib "/bucky/lib";
+use Bucky;
+use Digest::MD5 qw (md5_hex);
+
+# path to HTTPS docroot
+$DOCROOT = "/web/engine/docs";
+$CGI_BIN = "/web/engine/cgi-bin";
+
+# path to bucky install
+$BUCKY_ROOT = "/bucky";
+$BUCKY_LIB = "/bucky/lib";
+
+# path to bucky data directory (if it lives somewhere else)
+$BUCKY_DATA_ROOT = "/bucky/data";
+
+# mysql shit
+$MYSQL_HOST = "carbonpictures.com";
+$MYSQL_USER = "bucky";
+$MYSQL_PASS = "wh4t3v3r";
+
+###################################################################3
+
+system('/bin/mkdir', '-p', $BUCKY_DATA_ROOT.'/incoming');
+system('/bin/mkdir', '-p', $BUCKY_DATA_ROOT.'/profile');
+system('/bin/mkdir', '-p', $BUCKY_DATA_ROOT.'/profile/.thumb');
+
+system('/bin/ln', '-s', $CGI_BIN.'bucky', $BUCKY_ROOT.'/cgi-bin');
+system('/bin/ln', '-s', $DOCROOT, $BUCKY_ROOT.'/docs');
+system('/bin/ln', '-s', $DOCROOT.'/css', $BUCKY_ROOT.'/css');
+system('/bin/ln', '-s', $BUCKY_DATA_ROOT, $DOCROOT.'/bucky/data');
+system('/bin/ln', '-s', $BUCKY_DATA_ROOT, $BUCKY_ROOT.'/data')
+ unless ($BUCKY_DATA_ROOT eq $BUCKY_ROOT.'/data');
+system('/bin/ln', '-s', $BUCKY_DATA_ROOT.'/incoming', $BUCKY_ROOT.'/incoming');
+
+open MYCNF, "$BUCKY_ROOT/.bucky.cnf";
+print MYCNF <<__OUT__;
+[client]
+host=$MYSQL_HOST
+user=$MYSQL_USER
+password=$MYSQL_PASS
+__OUT__
+close MYCNF;
+
+our $USER = ( username => "bucky" );
+
+$dbh = DBI->connect ($dsn);
+
+$hash = generate_invite();
+print STDERR "Please create an admin account: " invite_url($hash) . "\n";
+
+