var XMLHttpReq;
var albums = []; / / all of the album
var userName = "hengone@gmail.com"; / / picasa user name
var img_small = 144; / / thumbnail size, the effective size of the other: 32, 48, 64, 72, 144, 160;
var img_max = 1024; / / for each image size, the effective size of the other: 200, 288, 320, 400, 512, 576, 640, 720, 800
var max_results = 20; / / The photo shows a number of
var navigae_page = 1; / / url parameters that the current number of inquiries from
var current_page = ""; / / Current Page
/ **
* The creation of AJAX request
* @ Return the request object
* /
function createXMLHttpRequest ()
(
if (window.XMLHttpRequest)
(
XMLHttpReq = new XMLHttpRequest ();
)
else if (window.ActiveXObject)
(
try
(
XMLHttpReq = new ActiveXObject ( "Msxml2.XMLHTTP");
)
catch (e)
(
try
(
XMLHttpReq = new ActiveXObject ( "Microsoft.XMLHTTP");
)
catch (e)
(
)
)
)
)

function createDomDocument (obj)
(
var xmlData;

try
(
xmlData = createObject ( "Msxml2.DOMDocument");
)
catch (e)
(
xmlData = createObject ( "Msxml.DOMDocument");
)

xmlData.async = false;

xmlData.loadXML (obj);

return xmlData;
)

function createObject (strName)
(
var stm;
try
(
stm = new ActiveXObject (strName);
)
catch (e)
(
var strMsg = "Your computer is not installed" + strName + ", or your browser settings for the page is not local access";
throw strMsg;
)
return stm;
)

function load ()
(
userName = "blair";
var url = 'http://picasaweb.google.com/data/feed/api/user/' + userName + '? category = album & max-results = 30 & alt = json';
createXMLHttpRequest ();
XMLHttpReq.open ( "get", url, true);

XMLHttpReq.onreadystatechange = function ()
(
if (XMLHttpReq.readyState == 4)
(
if (XMLHttpReq.status == 200)
(
/ / document.write (XMLHttpReq.responseText);
/ / parseAlbumFeed (XMLHttpReq.responseText);
if (XMLHttpReq.responseText =='')
(
alert ( 'no album!');
)
parseAlbumJson (XMLHttpReq.responseText);
)
)

)
XMLHttpReq.send (null);
)

function parseAlbumFeed (obj)
(
var doc = createDomDocument (obj);

var entryElements = doc.getElementsByTagName ( 'entry');
/ / Specific information dealing with each Album
for (var i = 0; i <entryElements.length; i + +)
(
var entry = entryElements [i];

var album = new Album ();

/ / Album title
album.title = entry.getElementsByTagName ( 'title') [0]. text;

/ / Album description
album.summary = entry.getElementsByTagName ( 'summary') [0]. text;

/ / Access to album
album.access = entry.getElementsByTagName ( 'gphoto: access') [0]. text;

/ / Album thumbnails
var thumbnail = entry.getElementsByTagName ( 'media: thumbnail') [0];
album.thumbnail = new Thumbnail (thumbnail.getAttribute ( 'url'));
albums.push (album);

)
for (var i = 0; i <albums.length; i + +)
(
var album = albums [i];
alert (album.title + "," + album.summary + "," + album.access + "," + album.thumbnail.url);
)
)

function parseAlbumJson (obj)
(
var func = new Function ( "return" + obj);
var json = func ();
var album = new Album ();
var str = "";
for (var i = 0; i <json.feed.entry.length; i + +)
(
album.title = json.feed.entry [i]. title. $ t;
album.desc = json.feed.entry [i]. summary. $ t;
album.access = json.feed.entry [i]. gphoto $ access. $ t
album.date = json.feed.entry [i]. gphoto $ timestamp. $ t;
var c = new Date ();
c.setTime (album.date);
album.date = c.toLocaleDateString () + "" + c.toLocaleTimeString ();
album.num = json.feed.entry [i]. gphoto $ numphotos. $ t;
album.src = json.feed.entry [i]. media $ group.media $ thumbnail [0]. url;
album.id = json.feed.entry [i]. gphoto $ id. $ t;
albums.push (album);
str + = "<a href=javascript:void(0)'" + album.id + "',1" + ")> <img src =" + album.src + "? imgmax =" + img_small + "& crop = 1 border = 0 /> </ a> ";
/ / document.write (album.id + "");
/ / alert ( 'album title:' + album.title + '\ n Album Description:' + album.desc + '\ n album permissions:' + album.access + "\ n Album Date:" + album.date + '\ n Photo number:' + album.num + '\ n album cover:' + album.src + '\ n Album ID:' + album.id);
)
document.getElementById ( "album"). innerHTML = str;
)

function Album ()
(
this.title = "";
this.summary = "";
this.access = "";
this.thumbnail = "";
)

function Thumbnail (url)
(
this.url = url;
this.width = 80;
this.height = 80;
)

function getAlbum (albumid, newPage)
(
if (current_page == newPage)
(
return;
)
current_page = newPage;
navigae_page = ((current_page - 1) * max_results) + 1;
var url = 'http://picasaweb.google.com/data/feed/api/user/' + userName + '/ albumid /' + albumid + '? category = photo & max-results =' + max_results + '& start-index = '+ navigae_page +' & alt = json ';
createXMLHttpRequest ();
XMLHttpReq.open ( "get", url, true);

XMLHttpReq.onreadystatechange = function ()
(
if (XMLHttpReq.readyState == 4)
(
if (XMLHttpReq.status == 200)
(
var func = new Function ( "return" + XMLHttpReq.responseText);
var json = func ();
display (json, albumid);
)
)

)
XMLHttpReq.send (null);
)

function display (j, albumid)
(
var img_sum = j.feed.openSearch $ totalResults. $ t;
var album_title = j.feed.subtitle. $ t;
var album_date = j.feed.gphoto $ timestamp. $ t;
var c = new Date ();
c.setTime (album_date);
album_date = c.toLocaleDateString () + "" + c.toLocaleTimeString ();
var len = j.feed.entry.length;
/ / Paging
var page = "";
var pageCount = (img_sum / max_results);
var ppage = "Previous |"
npage = "| Next";
if (current_page> 1)
(
ppage = "<a href=javascript:void(0)'" + albumid + "'," + (parseInt(current_page)-1) + ")> Previous </ a> |";
);
if (current_page <pageCount)
(
npage = "| <a href=javascript:void(0)'" + albumid + "'," + (parseInt(current_page) + 1) + ")> Next </ a>";
);
page + = ppage + "page";
for (var i = 1; i <pageCount + 1; i + +)
(
if (i == current_page)
(
page + = "<b> [" + (i) + "] </ b>";
)
else
(
page + = "<a href=javascript:void(0)'" + albumid + "'," + i +" )> "+ (i) +" </ a> ";
);
);
page + = npage;
/ / alert (img_sum + "," + album_title + "," + album_date + "," + len);
var str = "";
for (var i = 0; i <len; i + +)
(
var img_src = j.feed.entry [i]. content.src;
var img_id = j.feed.entry [i]. gphoto $ id. $ t;
var img_desc = j.feed.entry [i]. summary. $ t;
var img_date = j.feed.entry [i]. exif $ tags.exif $ time? j.feed.entry [i]. exif $ tags.exif $ time. $ t: j.feed.entry [i]. published . $ t;
/ / alert (img_src + "," + img_id + "," + img_desc + "," + img_date);
str + = "<a href=" + img_src + "&crop=0 target=_blank title=" + img_desc + "> <img src =" + img_src + "? imgmax =" + img_small + "& crop = 1 border = 1 /> </ a> ";
)

var slideshow = "<a href = 'http://picasaweb.google.com/" + userName + "/" + j.feed.gphoto $ name. $ t + "/ photo # s" + j.feed.entry [0]. gphoto $ id. $ t + " 'rel =' gb_page_fs [] 'target =' _new '> View as slideshow </ a>";

document.getElementById ( "album"). style.display = "none";
document.getElementById ( "slideshow"). innerHTML = slideshow;
document.getElementById ( "img"). innerHTML = str;
document.getElementById ( "page"). innerHTML = page;
)

