/* Picasa Webalbum Integration jQuery plugin
 * This library was inspired aon pwa by Dieter Raber
 * @name jquery.pwi.js
 * @author Jeroen Diderik - http://www.jdee.nl/
 * @revision 1.2.0
 * @date January 25, 2010
 * @copyright (c) 2009 Jeroen Diderik(www.jdee.nl)
 * @license Creative Commons Attribution-Share Alike 3.0 Netherlands License - http://creativecommons.org/licenses/by-sa/3.0/nl/
 * @Visit http://pwi.googlecode.com/ for more informations, duscussions etc about this library
 */
 
var nom_photos = new Array();  var titre_photos= new Array(); var nb_photos;  var drapeau=""; //gallerrific accueil
var nom_album; 
(function ($) {
	var elem; var opts = {};
	$.fn.pwi = function (opts) {
		var $self; var settings = {};
		opts = $.extend({},	$.fn.pwi.defaults, opts);
		elem = this;
		function _initialize() {
			settings = opts;
			ts = new Date().getTime();
			settings.id = ts;
///////////////////////
if(drapeau=="galeries"){
			$self = $("<div id='pwi_" + ts + "'/>").appendTo(elem);
			$self.addClass('pwi_container');
}
///////////////////////
			_start();
			return false;
		}
		function _start() {
			if (settings.username === '') {
				alert('Make sure you specify at least your username.' + '\n' + 'See http://pwi.googlecode.com for more info');
				return;
			}
			switch (settings.mode) {
			case 'latest':
				getLatest();
				break;
			case 'album':
				getAlbum();
				break;
			case 'keyword':
				getAlbum();
				break;
			default:
				getAlbums();
				break;
			}
		}
		function formatDate($dt) {
			var $today = new Date(Number($dt));
			$year = $today.getUTCFullYear();
			if ($year < 1000) {
				$year += 1900;
			}
			return (settings.months[($today.getUTCMonth())] + " " + $today.getUTCDate() + ", " + $year);
		}
		function formatDateTime($dt) {
			var $today = new Date(Number($dt));
			$year = $today.getUTCFullYear();
			if ($year < 1000) {
				$year += 1900;
			}
			if($today == "Invalid Date"){
				return $dt;
			}else{
				return ($today.getUTCDate() + "-" + ($today.getUTCMonth() + 1) + "-" + $year + " " + $today.getUTCHours() + ":" + ($today.getUTCMinutes() < 10 ? "0" + $today.getUTCMinutes() : $today.getUTCMinutes()));
			}
		}

		function photo(photo){
				var $html; var $d = ""; var $c = ""; 
				$img_base = photo.content.src;
				$id_base = photo.gphoto$id.$t;
				$c = (photo.summary ? photo.summary.$t : "");
/*				if(settings.showPhotoDate){
					if( photo.exif$tags.exif$time ){
						$d = formatDateTime(photo.exif$tags.exif$time.$t);
					}else if( photo.gphoto$timestamp ){
						$d = formatDateTime(photo.gphoto$timestamp.$t);
					}else{
						$d = formatDateTime(photo.published.$t);
					}
					$d += " ";
				}
				$d += $c.replace(new RegExp("'", "g"), "&#39;");
				$html = $("<div class='pwi_photo' style='height:" + (settings.thumbSize + 1) + "px;cursor: pointer;'/>");
				$html.append("<a href='" + $img_base + "?imgmax=" + settings.photoSize + "' rel='lb-" + settings.username + "' title='" + $d + "'><img src='" + $img_base + "?imgmax=" + settings.thumbSize + "&crop=" + settings.thumbCrop + "'/></a>");
				//if(settings.showPhotoDownload){$c += "download";}
				if (settings.showPhotoCaption){
					if(settings.showPhotoCaptionDate && settings.showPhotoDate){ $c = $d; }
					if(settings.photoCaptionLength > 0){ $c = $c.substring(0, settings.photoCaptionLength);}
					$html.find("a").append("<br/>" + $c);
				}
*/
//alert("<a href='" + $img_base + "?imgmax=" + settings.photoSize + "' rel='lb-" + settings.username + "' title='" + $d + "'><img src='" + $img_base + "?imgmax=" + settings.thumbSize + "&crop=" + settings.thumbCrop + "'/></a>");				
				return $img_base + "?imgmax=" + settings.photoSize;
//	return $html;
		}
		
		function albums(j) { //titres et couverture des albums
			var $scAlbums = $("<div/>"); i=0;
			while(i < settings.albumMaxResults && i< j.feed.entry.length){
				var $id_base = j.feed.entry[i].gphoto$name.$t;
				$album_date = formatDate(j.feed.entry[i].gphoto$timestamp.$t);
				$thumb = j.feed.entry[i].media$group.media$thumbnail[0].url.replace(new RegExp("/s160-c/", "g"), "/");
				if ($.inArray($id_base, settings.albums) > -1 || settings.albums.length === 0) {
					$scAlbum = $("<div class='pwi_album'/>");
					$scAlbum.bind('click.pwi',  $id_base, function(e){
						e.stopPropagation();
						settings.page = 1;
						settings.album = e.data;
						if(typeof(settings.onclickAlbumThumb) === "function"){
							settings.onclickAlbumThumb(e, settings);
							return false;
						}else{
//							getAlbum();
							return false;
						}
					})
                 if(j.feed.entry[i].title.$t != 'accueil'){ //élimination de l'album accueil
				    nom_albm=j.feed.entry[i].title.$t;  albm=nom_albm.replace(new RegExp(" ", "g"), "");
                    //$scAlbum.append("<br /><img onclick='fenetre(\"../inc/_galerie.htm?picasa="+nom_picasa+"&album="+ nom_albm1 +"\",\"yes\",980,950)' src='" + $thumb + "?imgmax=" + settings.albumThumbSize + "&crop=" + settings.albumCrop + "'/></a>");
                    $scAlbum.append("<br /><img onclick='charge_galerie(\""+nom_albm+"\",\""+albm+"\")' src='" + $thumb + "?imgmax=" + settings.albumThumbSize + "&crop=" + settings.albumCrop + "'/> ");
					settings.showAlbumTitles ? $scAlbum.append("<br/>" + nom_albm ): false ;// + "<br />" + (settings.showAlbumPhotoCount ? "&nbsp;&nbsp;&nbsp;" + j.feed.entry[i].gphoto$numphotos.$t + " " + settings.labels.photos : " ")) : false;
					$scAlbums.append($scAlbum);
				 }
				}
				i++;
			}
			$scAlbums.append("<div style='clear: both;height:0px;'/>");
			settings.albumstore = j;
			show(false, $scAlbums);
		}
		
		function album(j) {  // détail album
			var $scPhotos; var $scPhotosDesc;
			$np = j.feed.openSearch$totalResults.$t;
			$at = ""; $navRow = "";
			$loc = j.feed.gphoto$location === undefined ? "" : j.feed.gphoto$location.$t;
			$ad = j.feed.subtitle === undefined ? "" : j.feed.subtitle.$t;
			$album_date = formatDate(j.feed.gphoto$timestamp === undefined ? '' : j.feed.gphoto$timestamp.$t);
			$item_plural = ($np == "1") ? false : true;
			
			$at = (j.feed.title === "undefined" || settings.albumTitle.length > 0) ? settings.albumTitle : j.feed.title.$t;
			$scPhotos = $("<div/>");
/*			if (settings.mode != 'album') {
			var tmp = $("<div class='pwi_album_backlink'>" + settings.labels.albums + "</div>").bind('click.pwi', function (e) {
					e.stopPropagation();
					getAlbums();
					return false;
				});
				$scPhotos.append(tmp);
			}

			if (settings.showAlbumDescription) {
				$scPhotosDesc = $("<div class='pwi_album_description'/>");
				$scPhotosDesc.append("<div class='title'>" + $at + "</div>");
				$scPhotosDesc.append("<div class='details'>" + $np + " " + ($item_plural ? settings.labels.photos : settings.labels.photo) + (settings.showAlbumdate ? ", " + $album_date : "") + (settings.showAlbumLocation && $loc ? ", " + $loc : "") + "</div>");
				$scPhotosDesc.append("<div class='description'>" + $ad + "</div>");
				if (settings.showSlideshowLink) {
					if(settings.mode === 'keyword'){
						//alert("currently not supported");
					}else{
						$scPhotosDesc.append("<div><a href='http://picasaweb.google.com/" + settings.username + "/" + j.feed.gphoto$name.$t + "" + ((settings.authKey != "") ? "?authkey=" + settings.authKey : "") + "#slideshow/" + j.feed.entry[0].gphoto$id.$t + "' rel='gb_page_fs[]' target='_new' class='sslink'>" + settings.labels.slideshow + "</a></div>");
					}
				}
				$scPhotos.append($scPhotosDesc);
			}
*/

//var nom_photos = new Array();  var titre_photos= new Array(); 
/*
			if ($np > settings.maxResults) {
				$pageCount = ($np / settings.maxResults);
				var $ppage = $("<div class='pwi_prevpage'/>").text(settings.labels.prev);
				$npage = $("<div class='pwi_nextpage'/>").text(settings.labels.next);
				$navRow = $("<div class='pwi_pager'/>");
				if (settings.page > 1) {
					$ppage.addClass('link').bind('click.pwi', function (e) {
						e.stopPropagation();
						settings.page = (parseInt(settings.page) - 1);
						getAlbum();
						return false;
					});
				}

				$navRow.append($ppage);
				for (var p = 1; p < $pageCount + 1; p++) {
					if (p == settings.page) {
						tmp = "<div class='pwi_pager_current'>" + p + "</div> ";
					} else {
						tmp = $("<div class='pwi_pager_page'>" + p + "</div>").bind('click.pwi', p, function (e) {
							e.stopPropagation();
							settings.page = e.data;
							getAlbum();
							return false
						});
					}
					$navRow.append(tmp);
				}
				if (settings.page < $pageCount) {
					$npage.addClass('link').bind('click.pwi', function (e) {
						e.stopPropagation();
						settings.page = (parseInt(settings.page) + 1);
						getAlbum();
						return false
					});
				}
				$navRow.append($npage);
				$navRow.append("<div style='clear: both;height:0px;'/>");
			}
	
			if($navRow.length > 0 && (settings.showPager === 'both' || settings.showPager === 'top')){
				$scPhotos.append($navRow);
			}
*/			
			var i = ((settings.page-1)*settings.maxResults);

			while(i < (settings.maxResults*settings.page) && i < $np) {
				//     var $scPhoto = photo(j.feed.entry[i]);//******* 
				nom_photos[i] = photo(j.feed.entry[i]);

				//$scPhotos.append($scPhoto);//*******affichage photos
                //////////////////////galerific	

                if(drapeau=="galleriffic"){
				  //var description=j.feed.entry[i].summary ? j.feed.entry[i].summary.$t : "";
                  //$("#album").append("<li><a class='thumb' name='img"+i+"' href='"+ nom_photos[i]+ "'title=''><img src='"+ nom_photos[i] +"' alt='' height='" + settings.thumbSize + "'/></a><div class='caption'><div class='image-title'></div><div class='image-desc'></div></div></li>");
				  var description=j.feed.entry[i].summary.$t;
                  $("#album").append("<li><a class='thumb' name='img"+i+"' href='"+ nom_photos[i]+ "'title=''><img src='"+ nom_photos[i] +"' alt='' height='" + settings.thumbSize + "'/></a> <div class='caption'><div class='image-title'></div><div class='image-desc'>"+description+"</div></div></li>");
	            }
			  i++;
			}
			nb_photos =i;
            if(drapeau=="galleriffic"){ apres_appel_async(); }
            if(drapeau=="accueil"){ photos_tournantes1(); }
						
/*			if($navRow.length > 0 && (settings.showPager === 'both' || settings.showPager === 'bottom')){
				$scPhotos.append($navRow.clone(true));
			}

			settings.photostore[settings.album] = j;
			var $s = $(".pwi_photo", $scPhotos).css(settings.thumbCss);
			if (typeof(settings.popupExt) === "function") {
				settings.popupExt($s.find("a[rel='lb-" + settings.username + "']"));
			} else if (typeof(settings.onclickThumb) === "function") {
				$s.find("a[rel='lb-" + settings.username + "']").bind('click.pwi', clickThumb);
			} else if (typeof(settings.onclickThumb) != "function" && $.slimbox) {
				$s.find("a[rel='lb-" + settings.username + "']").slimbox(settings.slimbox_config);
			}
			show(false, $scPhotos);
*/
       }
		
/*		function latest(j) {
			var $scPhotos = $("<div/>");
			$len = j.feed ? j.feed.entry.length : 0,
			i = 0;
			while (i < settings.maxResults && i < $len) {
				var $scPhoto = photo(j.feed.entry[i]);
				$scPhotos.append($scPhoto);
				i++;
			}
			$scPhotos.append("<div style='clear: both;height:0px;'> </div>");
			var $s = $("div.pwi_photo", $scPhotos).css(settings.thumbCss);
			if (typeof(settings.popupExt) === "function") {
				settings.popupExt($s.find("a[rel='lb-" + settings.username + "']"));
			} else if (typeof(settings.onclickThumb) === "function") {
				$s.find("a[rel='lb-" + settings.username + "']").bind('click', clickThumb);
			} else if (typeof(settings.onclickThumb) != "function" && $.slimbox) {
				$s.find("a[rel='lb-" + settings.username + "']").slimbox(settings.slimbox_config);
			}
			show(false, $scPhotos);
		}
		
		function clickAlbumThumb(ref){
			settings.onclickAlbumThumb(ref);
			return false;
		}
		function clickThumb() {
			settings.onclickThumb.call(this);
			return false;
		}
*/
	function getAlbums() {
			if (settings.albumstore.feed) {
				albums(settings.albumstore);
			} else {
				show(true, '');
				var $url = 'http://picasaweb.google.com/data/feed/api/user/' + settings.username + '?kind=album&access=' + settings.albumTypes + '&alt=json';
				$.getJSON($url, 'callback=?', albums);
			}
			return $self;
		}

    function getAlbum() {
			if (settings.photostore[settings.album]) {
				album(settings.photostore[settings.album]);
			} else {
				var $si = ((settings.page - 1) * settings.maxResults) + 1;
				if(settings.mode === 'keyword'){
					var $url = 'http://picasaweb.google.com/data/feed/api/user/' +settings.username + '?alt=json&kind=photo&tag=' + settings.keyword +'&max-results=' + settings.maxResults + '&start-index=' + $si +((settings.authKey != "") ? "&authkey=" + settings.authKey : "");
				}else{
					var $url = 'http://picasaweb.google.com/data/feed/api/user/' +settings.username + '/album/' + settings.album + '?kind=photo&alt=json' + ((settings.authKey != "") ? "&authkey=" + settings.authKey : "");
				}
				show(true, '');
				$.getJSON($url, 'callback=?', album);
			}
			return $self;
		}
/*		function getLatest() {
			show(true, ''); 
			var $url = 'http://picasaweb.google.com/data/feed/api/user/' + settings.username + (settings.album != "" ? '/album/' + settings.album : '') + '?kind=photo&max-results='+settings.maxResults+'&alt=json&q=' + ((settings.authKey != "") ? "&authkey=" + settings.authKey : "");
			$.getJSON($url, 'callback=?', latest);
			return $self;
		}
*/
        function show(loading, data) {
			if (loading) {
	//			document.body.style.cursor = "wait";
				//if ($.blockUI){ $self.block(settings.blockUIConfig);}
			} else {
				document.body.style.cursor = "default";
				//if ($.blockUI){ $self.unblock(); }
				$self.html(data);
			}
		}
		_initialize();
	}
	$.fn.pwi.defaults = {
		mode: 'albums',
		username: '',
		album: "",
		authKey: "",
		albums: [],
		albumCrop: 1,
		albumTitle: "",
		albumThumbSize: 160, /*(default: 160, supported: 32, 48, 64, 72, 144, 160)*/

		albumMaxResults: 999,
		albumsPerPage: 10,
		albumStartIndex: 1,
		albumTypes: "public",
		page: 1,
		photoSize: 512, /*(default: 800, supported: 200, 288, 320, 400, 512, 576, 640, 720, 800) */
		maxResults: 100,
		showPager: 'bottom', //'top', 'bottom', 'both'
		thumbSize: 72, //(default: 72, supported (un)cropped: 32, 48, 64, 72, 144, 160 and uncropped only: 200, 288, 320, 400, 512, 576, 640, 720, 800)
		thumbCrop: 0,
		thumbCss: {
			'margin': '5px'
		},
		onclickThumb: "",
		onclickAlbumThumb: "",
		popupExt: "",
		showAlbumTitles: true,
		showAlbumdate: true,
		showAlbumPhotoCount: true,
		showAlbumDescription: true,
		showAlbumLocation: true,
		showSlideshowLink: true,
		showPhotoCaption: false,
		showPhotoCaptionDate: false,
		photoCaptionLength: 0,
		showPhotoDownload: false,
		showPhotoDate: true,
		labels: {
			photo: "photo",
			photos: "photos",
			albums: "Back to albums",
			slideshow: "Display slideshow",
			loading: "PWI fetching data...",
			page: "Page",
			prev: "Previous",
			next: "Next",
			devider: "|"
		},
		months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
		slimbox_config: {
			loop: false,
			overlayOpacity: 0.6,
			overlayFadeDuration: 400,
			resizeDuration: 400,
			resizeEasing: "swing",
			initialWidth: 250,
			initlaHeight: 250,
			imageFadeDuration: 400,
			captionAnimationDuration: 400,
			counterText: "{x}/{y}",
			closeKeys: [27, 88, 67, 70],
			prevKeys: [37, 80],
			nextKeys: [39, 83]
		},
		blockUIConfig: {
			message: "<div class='lbLoading pwi_loader'>loading...</div>",
			css: "pwi_loader"
		},
		albumstore: {},
		photostore: {},
		token: ""
	};

})(jQuery);
