Sources.picasa = function() {
    var id = "picasa";
    var baseURL = "api://picasaweb.google.com/?";
    Sources.register(id);

    return {
        id: id,
        displayName: 'Picasa',
        type: 'photo',
        
        setState: function(feed) {
            $("#item-tab-what-picasa").click();
            
            var params = explodeQueryString(decodeURIComponent(feed.replace(baseURL, "")));

            if (!params) {
                $("#picasa-opts").val("album");
            }
            else if (params["album"]) {
                $("#picasa-opts").val("album");
                var picasaURL = "http://picasaweb.google.com/" + params['user'] + "/" + params['album'];
                $("#picasa-album").val(picasaURL);
            }
            else if (params["search"]) {
                $("#picasa-opts").val("search");
                $("#picasa-search").val(params["search"]);

            }
            $("#picasa-opts").change();
        },
        
        getFeedURL: function() {
            var feedURL = baseURL;
            var feedType = $("#picasa-opts").val();

            var typeID = "#picasa-" + feedType;
            var typeField = $(typeID);
            if (typeField.val()) {
                var typeVal = typeField.val();
                if (feedType == 'search') {
                    feedURL += feedType + "=" + typeVal;                
                }
                else if (feedType == 'album') {
                    var match_user = typeVal.match(/http:\/\/picasaweb\.google\.(?:[\w\.]*)\/(.*)/);
                    var match_album = typeVal.match(/http:\/\/picasaweb\.google\.(?:[\w\.]*)\/(.*)\/([^#]*).*/);
                    if (match_album) {
                        feedURL += "user=" + match_album[1];
                        if (match_album[2]) {
                            feedURL += "&album=" + match_album[2];
                        }
                    }
                    else if (match_user) {
                        feedURL += "user=" + match_user[1];
                    }
                    else {
                        alert("That doesn't seem to be a valid Picasa URL");
                        $("#picasa-album").focus();
                        $("#picasa-album").select();
                    }
                }
            }
            return feedURL;
        },

        isFeedURL: function(feedURL) {
            return (feedURL.indexOf(baseURL) == 0);
        }
    };
}();
