/*
 * Su.pr stumble upon / twitter js
 */

var supr = {
    api: "http://apps.telepixtv.com/supr/",
    methods: {
        SHORTEN : "shorten.php?"
    },
    params: {
        longUrl  : "",
        shortUrl : "",
        msg      : "",
        login    : ""
    },

    init: function( url, msg ) {
        if (this.params.login == "")
            this.setParamsFromUri(this.getScriptUri());
        this.params.longUrl = url;
        this.params.msg = msg;
        this.shorten_url();
    },

    no_cache: function() {
        return "&nocache=" + (new Date()).getTime() + Math.floor(Math.random()*20000) + "&callback=?";
    },

    shorten_url: function() {
        jQuery.getJSON(this.api + this.methods.SHORTEN + "longUrl=" + this.params.longUrl + "&login=" + this.params.login + this.no_cache(), this.callback_shorten);
    },
    callback_shorten: function( data ) {
        // ref: http://www.stumbleupon.com/developers/Supr:API_documentation/#shorten
        if ( data.errorCode == 0 ) {
            supr.params.shortUrl = data.results[supr.params.longUrl].shortUrl;
            supr.post();
            return;
        }
        alert(data.errorMessage);
    },

    post: function() {
        var tweet_url = "http://twitter.com/home?status=" + encodeURIComponent(this.params.msg + " " + this.params.shortUrl);
        TweetAndTrack.newWindow(tweet_url, "600", "400");
    },

    setParamsFromUri: function(uri) {
        if (!uri) return;
        var qstr = uri.substring(uri.indexOf("?")+1);
        var pairs = qstr.split("&");
        for(var i=0; i<pairs.length; i++) {
            var pair = pairs[i].split("=");
            this.params[pair[0]] = pair[1];
        }
    },

    getScriptUri: function() {
        var uri = null;
        jQuery("script").each(function() {
            if(/\/suprtweet.*\?/i.test(this.src)) {
                uri = this.src;
                return false;
            }
        });
        return uri;
    }
};

var TweetAndTrack = {};
TweetAndTrack.open = function( targ, url ) {
    var child_spans = targ.getElementsByTagName('span');
    if (child_spans && child_spans.length > 0) {
        msg = child_spans[0].innerHTML.toString();
    } else {
        msg = '';
    }

    supr.init( url, msg );
    return false;
};

TweetAndTrack.newWindow = function(url, width, height) {
    var a = function() {
        if(!window.open(url,'t','scrollbars=yes,toolbar=1,resizable=1,status=1,width='+width+',height='+height)) 
            document.location.href=url;
    };
    
    if( /Firefox/.test(navigator.userAgent) ) {
        setTimeout(a, 0);
    } else {
        a();
    }
};