﻿var WallstTools;
if (!WallstTools) WallstTools = {};
if (!WallstTools.BookmarkWidget) {
    
    WallstTools.BookmarkWidget = {};

    WallstTools.BookmarkWidget.PlaceControlHere = function(control) {
        var fo_span_id = "bookmarkwg_" + new Date().getTime();
        document.write("<span id='" + fo_span_id + "'/>");
        var showads_fo_obj = document.getElementById(fo_span_id);
        control.Initialize();
        showads_fo_obj.appendChild(control.Container);
    }

    WallstTools.BookmarkWidget.Control = function() {
        this.mouseOutTimeout = 1000;
        this.disableautotoggle = false;
        this.Container = document.createElement('span');
        this.Container.className = "bw_container";
        this.Button = {};
        this.Button.Container = document.createElement('div');
        this.Button.Container.className = "bw_button";

        this.Button.SelectedItem = document.createElement('span');
        this.Button.SelectedItem.className = "bw_button_selecteditem";
        this.Button.Container.appendChild(this.Button.SelectedItem);

        this.Button.ArrowButton = document.createElement('span');
        this.Button.ArrowButton.appendChild(document.createElement('a'));

        this.Button.Container.appendChild(this.Button.ArrowButton);

        this.DropdownWindow = document.createElement('div');
        this.DropdownWindow.className = "bw_dropdown";

        this.Container.appendChild(this.Button.Container);
        this.Container.appendChild(this.DropdownWindow);

        this.Toggle(false);
    }

    WallstTools.BookmarkWidget.Control.prototype.Initialize = function() {
        var self = this;


        this.Button.ArrowButton.onclick = function() { self.disableautotoggle = true; self.Toggle(); }
        this.Button.Container.onmouseover = function() { if (!self.disableautotoggle) { self.Toggle(true);  } }
        this.DropdownWindow.onmouseover = function() { if (!self.disableautotoggle) { self.Toggle(true); } }

        this.Button.Container.onmouseout = function(e) {
            if (!e) e = eval('event');
            WallstTools.BookmarkWidget.Utils.onMouseOutHandler(self.Button.Container, e, function(current_mouse_target) {
                self.disableautotoggle = false; 
                self.HideDelayed();
            });
        }


        this.DropdownWindow.onmouseout = function(e) {
            if (!e) e = eval('event');
            WallstTools.BookmarkWidget.Utils.onMouseOutHandler(self.Button.Container, e, function(current_mouse_target) {
                self.disableautotoggle = false;
                self.HideDelayed();
            });
        }
    }

    WallstTools.BookmarkWidget.Control.prototype.AddItem = function(item, selected) {
        if (selected) {
            this.Button.SelectedItem.appendChild(item.Container);
            item.Container.style.display = "inline";
        } else
            this.DropdownWindow.appendChild(item.Container);
    }

    WallstTools.BookmarkWidget.Control.prototype.Toggle = function(display) {
        if (display == null) {
            display = !(this.DropdownWindow.style.display == "block");
        }
        
        if (display) {
            clearTimeout(this.closeTimeoutId);
            this.DropdownWindow.style.display = "block";
            this.Button.ArrowButton.className = "bw_button_arrow bw_button_arrow_scrolldown";
        } else {
            this.DropdownWindow.style.display = "none";
            this.Button.ArrowButton.className = "bw_button_arrow bw_button_arrow_scrollup";
        }
    }


    WallstTools.BookmarkWidget.Control.prototype.HideDelayed = function() {
        var self = this;
        this.closeTimeoutId = setTimeout(function() { self.Toggle(false); }, this.mouseOutTimeout);
    }

    WallstTools.BookmarkWidget.Item = function(text, bookmarkId) {
        this.Container = document.createElement('div');
        this.Container.className = "bw_item";
        this.Container.onclick = function() { WallstTools.BookmarkWidget.BookmarkThis(bookmarkId); };

        var content = document.createElement('a');
        content.href = "#";
        content.innerHTML = text;
        content.className = "bw_item_" + bookmarkId;

        this.Container.appendChild(content);
    }
    
    WallstTools.BookmarkWidget.BookmarkThis = function(bookmark)
    {
        var pageURL;
        var pageTitle;

        pageURL = encodeURIComponent(document.location);
        pageTitle = encodeURIComponent(document.title);

        switch(bookmark)
        {
            case "blogmemes": window.open('http://www.blogmemes.net/post.php?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "delicious": window.open('http://del.icio.us/post?v=2&url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "digg": window.open('http://digg.com/submit?phase=2&url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "furl":window.open('http://www.furl.net/storeIt.jsp?t='+pageURL+'&u='+pageTitle,"Bookmark"); break;
            case "mrwong":window.open('http://www.mister-wong.com/index.php?action=addurl&bm_url='+pageURL+'&bm_description='+pageTitle,"Bookmark"); break;
            case "netscape":window.open('http://www.netscape.com/submit/?U='+pageURL+'&T='+pageTitle,"Bookmark"); break;
            case "netvouz":window.open('http://netvouz.com/action/submitBookmark?url='+pageURL+'&title='+pageTitle+'&popup=no',"Bookmark"); break;
            case "plugim":window.open('http://www.plugim.com/submit?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "reddit":window.open('http://reddit.com/submit?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "slashdot":window.open('http://slashdot.org/bookmark.pl?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "squidoo":window.open('href="http://www.squidoo.com/lensmaster/bookmark?'+pageURL,"Bookmark"); break;
            case "stumbleupon":window.open('href="http://www.stumbleupon.com/submit?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "technorati":window.open('http://technorati.com/faves/?add='+pageURL,"Bookmark"); break;
            case "myyahoo":window.open('http://myweb2.search.yahoo.com/myresults/bookmarklet?u='+pageURL+'&t='+pageTitle,"Bookmark"); break;
            case "facebook":window.open('http://www.facebook.com/sharer.php?u='+pageURL+'&t='+pageTitle,"Bookmark"); break;
            case "ask":window.open('http://myjeeves.ask.com/mysearch/BookmarkIt?v=1.2&t=webpages&url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "live":window.open('https://favorites.live.com/quickadd.aspx?marklet=1&mkt=en-us&url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "google":window.open('http://www.google.com/bookmarks/mark?op=add&bkmk='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "kinja":window.open('http://kinja.com/id.knj?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "newsvine":window.open('http://www.newsvine.com/_wine/save?u='+pageURL+'&h='+pageTitle,"Bookmark"); break;
            case "rojo":window.open('http://www.rojo.com/add-subscription/?resource='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "Backflip":window.open('http://www.backflip.com/add_page_pop.ihtml?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "blogmarks":window.open('http://blogmarks.net/my/new.php?mini=1&simple=1&url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "buddymarks":window.open('?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "buddymarks":window.open('http://buddymarks.com/add_bookmark.php?bookmark_url='+pageURL+'&bookmark_title='+pageTitle,"Bookmark"); break;
            case "diigo":window.open('http://www.diigo.com/post?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "dzone":window.open('http://www.dzone.com/links/add.html?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "feedmarker":window.open('http://www.feedmarker.com/admin.php?do=bookmarklet_mark&url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "feedmelinks":window.open('http://feedmelinks.com/categorize?from=toolbar&op=submit&url='+pageURL+'&name='+pageTitle,"Bookmark"); break;
            case "linkroll":window.open('http://www.linkroll.com/index.php?action=insertLink&url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "magnolia":window.open('http://ma.gnolia.com/bookmarklet/add?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "maple":window.open('http://www.maple.nu/bookmarks/bookmarklet?bookmark[url]='+pageURL+'&bookmark[name]='+pageTitle,"Bookmark"); break;
            case "simpy":window.open('http://simpy.com/simpy/LinkAdd.do?v=6&src=bookmarklet&href='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "shadows":window.open('http://www.shadows.com/shadows.aspx?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "spurl":window.open('http://www.spurl.net/spurl.php?v=3&url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "wink":window.open('http://www.wink.com/_/tag?url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "zurpy":window.open('http://tag.zurpy.com/?box=1&url='+pageURL+'&title='+pageTitle,"Bookmark"); break;
            case "linkedin": window.open('http://www.linkedin.com/shareArticle?mini=true&url=' + pageURL + '&title=' + pageTitle, "Bookmark"); break;
            case "myspace": window.open('http://www.myspace.com/Modules/PostTo/Pages/?u=' + pageURL + '&t=' + pageTitle, "Bookmark"); break;
            case "twitter": window.open('http://twitter.com/home/?status='+ pageTitle + ' : ' + pageURL, "Bookmark"); break;
        }
    }

    WallstTools.BookmarkWidget.Utils = {
    
        is_child_of : function (parent, child) {
            if (child != null) {
                while (child.parentNode) {
                    if ((child = child.parentNode) == parent) {
                        return true;
                    }
                }
            }
            return false;
        },
        
        onMouseOutHandler : function (element, event, func) {
            var current_mouse_target = null;
            if (event.toElement) {
                current_mouse_target = event.toElement;
            } else if (event.relatedTarget) {
                current_mouse_target = event.relatedTarget;
            }
            if (!WallstTools.BookmarkWidget.Utils.is_child_of(element, current_mouse_target) && element != current_mouse_target) {
                func(current_mouse_target);
            }
        }
    }

}




