﻿


// ==========================================================================
/**
 * Class that represents the photoalbum.
 */
var Picasa = Class.create();
Picasa.prototype = {
	uri: null,
	lang: null,	
	initialize: function(u,lang){
		if(u){this.uri = u;}
		if(lang){this.lang = lang;}
	},	
	loadFeed: function(u,lang){
	        $("wait").show();
	        if(u){this.uri = u;}
	        if(lang){this.lang = lang;}
            
            /*var _this = this;
            var album = new google.feeds.Feed(this.buildURL());    
            album.setResultFormat(google.feeds.Feed.XML_FORMAT);
            album.setNumEntries(100);
            album.load(function(result) {        
                    if (!result.error) {
                        _this.parseFeed(result);
                    }
                });
            */
            
            window.activePicasa = this;
		    var headTag = document.getElementsByTagName('head')[0]; 
		    var script = document.createElement("script");
		    script.src = this.buildURL();
		    script.language = "JavaScript";
		    headTag.appendChild(script);
                
	},	
    buildURL: function(){	        
            var url = "http://picasaweb.google.com/data/feed/api/user/";
            url += this.uri + "?kind=album&thumbsize=160&alt=json&callback=window.activePicasa.parseFeed";
            //if(this.lang){url += "&hl="+this.lang;}
            return url;         
	},
	parseFeed: function(json){
		this.entries = {};		
		e = json.feed.entry;
		for(var i=0;i < e.length;i++){
			this.entries[i] = new Album(e[i]);
		}				        
		try {
			this.onsuccess();
      } catch (e) {}
	},
	onsuccess: function(){   
	    $('content').innerHTML = "<div class='right pointer' onclick='$$(\".opencloseselector\").each(function(item){item.show()});'> open </div><div class='right'>/</div><div class='right pointer' onclick='$$(\".opencloseselector\").each(function(item){item.hide()});'> close </div>";
	    for(k in this.entries){
            try{
		        var entry = this.entries[k];		    
		        var eventDiv = $('content');
		        var div = document.createElement("div");		        		    
		        var str = "<div class='title2 pointer' onclick='javascript:new Effect.toggle($(\"picasa_content_rep"+k+"\"),\"blind\",{duration:0.3});'>"+entry.title+"</div><div class='opencloseselector' id='picasa_content_rep"+k+"'><div class='picture_prev'><img class='pointer album_cover' src="+entry.thumb +" onclick='picasa.loadPics($(\"picasa_content_rep"+k+"\"),\""+entry.id+"\");' /></div><div class='album_summary'>"+entry.summary+"</div><div class='album_summary'>#"+entry.numphotos+"</div></div>";
		        //var str = "<div class='picture' id='picasa_content_rep"+k+"' style='background-image:url("+entry.thumb+");' onclick='picasa.loadPics($(\"picasa_content_rep"+k+"\"),\""+entry.id+"\");'>"+entry.title+"</div>";		        
		        //str += "<div class='title2 pointer' onclick='javascript:new Effect.toggle($(\"picasa_content"+k+"\"),\"blind\");'>" + entry.title + "</div>";
                //str += "<div class='what' id='picasa_content"+k+"' style='display:none;'><div>"+entry.summary+"</div><div>#"+entry.numphotos+"</div><div id='picasa_content_rep"+k+"'></div></div>";		   
		        div.innerHTML = str;
		        eventDiv.appendChild(div);
		        //new Tip("picasa_content_rep"+k, entry.summary+"<br/>#"+entry.numphotos, {title:entry.title,delay: 0,fixed: true,hook:{target: 'topLeft', tip: 'bottomLeft'},offset:{x:0,y:0},className: 'owntip' });
	        }catch(e){
		        alert(e.description);
	        }
	    }
		$("wait").hide();
        Element.hide(eventDiv); 
        new Effect.Appear(eventDiv);
    },
    loadPics: function(divID,albumID) {
            $(divID).innerHTML = "<div class='loading' onclick='picasa.loadPics($(\""+divID+"\"),\""+albumID+"\");'> </div>";
            //add the JSON script
            this.divID = divID;
            window.activePicasa = this;            
		    var headTag = document.getElementsByTagName('head')[0]; 
		    var script = document.createElement("script");
		    script.src = albumID.sub("/entry/","/feed/")+"&kind=photo&thumbsize=64&callback=window.activePicasa.parsePics";
		    script.language = "JavaScript";
		    headTag.appendChild(script);
            
            /*
            var _this = this;            
            var pics = new google.feeds.Feed(albumID.sub("/entry/","/feed/")+"?kind=photo&thumbsize=64");    
            pics.setResultFormat(google.feeds.Feed.XML_FORMAT);
            pics.setNumEntries(500);
            pics.load(function(result) {        
                    if (!result.error) {
                        _this.parsePics(divID,result);
                    }
                });
            */
            
    },
    parsePics: function(result) {
        //$(divID).innerHTML = "<div class='title2'>"+result.xmlDocument.getElementsByTagName('title')[0].text+"</div>";        
        var i = 1;
        $(this.divID).innerHTML = "";
        var imagesString = "";
        var pictures = {};
		pictures = result.feed.entry;
		for (var i = 0; i < pictures.length; i++) {          
              var thumb = pictures[i].media$group.media$thumbnail[0].url;
              var content = pictures[i].media$group.media$content[0].url;
              var linkInnerHTML = "<img class='img_thumb' src='"+thumb+"' />";              
              imagesString += "<a href='"+content+"?imgmax=640' rel='lightbox["+this.divID.id+"]' onmouseover='new Effect.Highlight(this,{duration: 0.5});'>"+linkInnerHTML+"</a>";
        }
        $(this.divID).innerHTML += "<div class='thumbsdiv'>"+imagesString+"</div>";
        //var downloadLink = result.xmlDocument.getElementsByTagName("link");        
        //$(divID).innerHTML += "<div class='picAd'><a href='"+downloadLink[0].getAttribute("href")+"' target='_blank'>download album</a> [Google pack / picasa necessary to download]</div>";
        setTimeout(new Effect.Highlight(this.divID), 10000);
        myLightbox.initialize();        
    }
};





// ==========================================================================
var Album = Class.create();
Album.prototype = {
	title: null,
	id: null,
	thumb:null,
	initialize: function(entry){
          this.title = rep(entry.title.$t);          
          this.summary = rep(entry.summary.$t);         
          this.numphotos = entry.gphoto$numphotos.$t;          
          this.id = entry.id.$t;
          this.thumb = entry.media$group.media$thumbnail[0].url;	
	}
};