/*	
	2009-01-12 ElKuNi
*/
var tabSelect=1;
document.observe('lightview:hidden', function(event) {
  if(tabSelect==1){
  	my_picasa.checkAccess();
  }
});


function show_step(opc){
	if(opc==1){
		$("aligner").hide();
		$("selector").show();
		$("tab_template").removeClassName("selected");
		$("tab_add").addClassName("selected");
		}
	else{
		$("selector").hide();
		$("aligner").show();
		$("tab_add").removeClassName("selected");
		$("tab_template").addClassName("selected");
		Widget.setPreset(Widget._setting.preset_index,true);	
		}
	tabSelect=opc;
}

function initPage(tmpFileId,platform,profile,sig_session) {
	Gallery.init();

	Preset.init($("preset"));
	showThrobber("Loading...");
	Widget.init(tmpFileId,platform,profile,sig_session);
	Carrousel.init();

	/*$(document.body).observe("mousedown", function(ev) {
		if (Event.element(ev).tagName == "BODY") {
			Widget.clearFocus();
		}
	});*/
}

var Preset = {

	DATA: [  //x,y,w,h,  x_repeat, y_repeat
			[], // dummy
			[ [0,0,0.333,0.333,3,3] ], //3_3_1
			[ [0,0,1, 0.666], [0,0.666, 0.333,0.333, 3,1]], //3_3_2
			[ [0,0,0.666,0.666], [0.666, 0, 0.333, 0.333, 1,2], [0,0.666, 0.333,0.333, 3,1]], //3_3_3
			[ [0,0,0.333, 0.333, 3,1], [0,0.333, 1,0.333], [0,0.666, 0.333,0.333, 3,1] ], //3_3_4
			//[ [0,0,0.666,0.333], [0.666, 0,0.333,0.666], [0, 0.333, 0.333, 0.666], [0.333,0.333,0.333,0.333], [0.333, 0.666, 0.666,0.333] ], //3_3_5
			[ [0,0,0.75,0.5], [0.75,0,0.25,0.5], [0,0.5,0.25,0.5], [0.25,0.5,0.75,0.5] ], //3_3_5
			[ [0,0,0.333,1, 3, 1] ], //3_3_6
			[ [0,0,1, 0.333, 1, 3] ], //3_3_7
			[ [0,0,0.25,0.25,4,4] ], //4_4_1
			[ [0,0,0.5,0.5], [0.5,0,0.25,0.25,2,2], [0, 0.5,0.25,0.25,2,2], [0.5,0.5,0.5,0.5] ], //4_4_2
			[ [0,0,1,0.75], [0, 0.75,0.25,0.25,4,1] ], //4_4_3
			[ [0,0,0.25,0.5,1,2], [0.25,0,0.5,0.5,1,2], [0.75,0,0.25,0.5,1,2] ], //4_4_4
			//[ [0,0,0.25,0.5,1,2], [0.25,0,0.5,0.75], [0.25,0.75,0.5,0.25], [0.75,0,0.25,0.5,1,2] ], //4_4_5
			[ [0,0,0.5,0.5], [0.5,0,0.5,0.5], [0,0.5,0.5,0.5], [0.5,0.5,0.5,0.5] ], //4_4_5
			//[ [0,0,0.5,0.25], [0.5,0,0.5,0.5], [0,0.25,0.5,0.5], [0.5,0.5,0.5,0.25], [0, 0.75,0.25,0.25], [0.25,0.75,0.5,0.25], [0.75,0.75,0.25,0.25] ], //4_4_6
			[ [0,0,0.5,0.25,2,1], [0,0.25,0.25,0.5], [0.25,0.25,0.5,0.5], [0.75,0.25,0.25,0.5], [0,0.75,0.5,0.5,2,1] ], //4_4_6
			[ [0,0,0.75,0.5], [0.75,0,0.25,0.5], [0,0.5,0.5,0.5], [0.5,0.5,0.5,0.5] ], //4_4_7
			[ [0,0,0.75,0.5], [0.75,0,0.25,0.5], [0,0.5,0.25,0.25], [0.25,0.5,0.75,0.25], [0, 0.75,0.5,0.25,2,1] ] //4_4_8
		],

	init: function(element) {
		var preset_html = [""];
		for (var i=1;i<=7;i++) {
			preset_html.push("<a href='#' id='preset_"+i+"' class='preset_item' onclick='Widget.setPreset("+i+");return false;'><img src='images_new/3_3_"+i+".jpg' border='0'/></a>");
		}

		for (var i=1;i<=8;i++) {
			preset_html.push("<a href='#' id='preset_"+(i+7)+"' class='preset_item' onclick='Widget.setPreset("+(i+7)+");return false;'><img src='images_new/4_4_"+i+".jpg' border='0'/></a>");
		}

		$("preset").innerHTML = preset_html.join("");
	}
}



function showThrobber(msg) {
	$("dark_mask").style.display = "block";
	$("dark_mask").setOpacity(0.6);

	$("waiting_message").innerHTML = msg || "Waiting...";
	$("throbber").setStyle({visibility: "inherit", display: "block"});

}

function hideThrobber() {
	$("throbber").setStyle({visibility: "hidden", display: "none"});

	$("dark_mask").style.display = "none";
}


var Carrousel = {
	
	_page: 1, 
	
	init: function() {
		$("btn_left").hide();
	},

	go: function(page) {
		this._page+=page;
		
		start=(this._page-1)*5;
		indi=0;
		$("photos_selected").update("");
		var cells = Widget._widget.getElementsBySelector(".cell");
		Widget._setting.cell_list = cells.map(function(cell) {
			indi++;										 
			if(indi>start){
				var index = parseInt(cell.id.substr(5));
				var img = cell.getElementsBySelector("img")[0];
				url=img.src;
				
				var new_selected = $("photo_selectedsample").cloneNode(true);
				new_selected.id = "photo_selected"+index;
				new_selected.setObjectRect(0,0,52,65);
		
				$("photos_selected").appendChild(new_selected);
		
				var photo_selcontainer = new_selected.getElementsBySelector("img")[0];
				photo_selcontainer.src=url;
				
				var photo_selremove = new_selected.getElementsBySelector("a")[0];
				photo_selremove.id = "photo_selremove"+index;
				Event.observe(photo_selremove, "click", Widget.onRemovePhoto);
				$("wrapper_photos_selected").show();
			}
		});
		
		if(indi==0)
			$("wrapper_photos_selected").hide();
		else{
			if(this._page==1)
				$("btn_left").hide();
			else
				$("btn_left").show();			
			if(this._page==Math.ceil(indi/5))
				$("btn_right").hide();
			else
				$("btn_right").show();
		}
	}
}

var my_FB = {
	_uid: null,
	_album_list: null,
	_photo_list: null,
	_photo_template: null,
	_init_facebook: false,
	
	init: function (){
		this._photo_template = new Template(["<div class='photo_item'><a href='javascript:void(0);' id='#{index}' onclick='my_FB.onClick_Image(this);return false;'><img src='#{src}' title='#{caption}'/><br/><img src='../images_new/ico_add.png' style='width:11px;height:11px; border:1px solid #FFFFFF;'>Add</a></div>"].join(""));
	},
		
	onConnected: function(){
		$("fromfacebook_login").hide();
		$("fromfacebook_gallery").show();		
		
		if(!this._init_facebook){			
			// add in some XFBML. note that we set useyou=false so it doesn't display "you" 
			$("fromfacebook_profile").innerHTML = "<span>" 
			+ "<fb:profile-pic uid=loggedinuser facebook-logo=true width='35px' height='35px' linked=false></fb:profile-pic>" 
			+ " <fb:name uid=loggedinuser useyou=false linked=false></fb:name>. You are signed in with your Facebook account." 
			+ "</span>"; 
			// because this is XFBML, we need to tell Facebook to re-process the document 
			FB.XFBML.Host.parseDomTree();
		
			function checkComplete(dataResponse){
				this._uid = dataResponse.responseText;
				FB.Facebook.apiClient.photos_getAlbums(this._uid, null, function(result, ex) {																	 
						if (result.length==undefined) {
							$("fromfacebook_album").hide();
							$("fromfacebook_noalbum").show();
							return;
						}
						
						my_FB._album_list = result;
						var album_select = $("fb_album");
						album_select.innerHTML = "";
						
						result.each(function(album, index) {
							var option = document.createElement("OPTION");
							option.value = album.aid;
							option.innerHTML = album.name;
							album_select.appendChild(option);
						});
				
						$("fromfacebook_album").show();
						album_select.selectedIndex = 0;				
						my_FB.onChangeAlbum(0);								 
				}); 
			}
			
			function errFunc(){
				//alert("error")
			}
					
			var url = 'photo_gallery/facebook/post_login.php';		
			var pars = "";
	
			new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:checkComplete, onFailure:errFunc});
		}
		this._init_facebook=true;
	},
	
	onNotConnected: function(){
		$("fromfacebook_login").show();
		$("fromfacebook_gallery").hide();
	},

	check_conect: function() {		
		FB.Connect.ifUserConnected(this.onConnected,this.onNotConnected);
	},
	
	
	onChangeAlbum: function(index) {						
		if (!this._album_list) return;

		this._photo_list = null;		
		$("fromfacebook_list").innerHTML = "";		
		
		this.getPhotos(this._album_list[index].aid);		
	},

	getPhotos: function(album_id) {
		this.showThrobber();
		FB.Facebook.apiClient.photos_get(this._uid, album_id, null, function(result, ex) {														  
			if (result.length==0) {
				my_FB.hideThrobber();
				$("fromfacebook_list").hide();
				return;
			}
						
			var box = $("fromfacebook_list");
			result.each(function(photo, index) {
				photo.index = index;
				var html = my_FB._photo_template.evaluate(photo);
				box.insert( html );	
				if (index>0 && (index%4==3)) {
					box.insert("<div class='line_break'></div>");
				}
			 });
			my_FB._photo_list= result;
			});
		this.hideThrobber();
	},
	
	showThrobber: function() {
		$("fromfacebook_list").hide();
		$("fromfacebook_throbber").show();
	},

	hideThrobber: function() {
		$("fromfacebook_list").show();
		$("fromfacebook_throbber").hide();
	},

	onClick_Image: function(image_link) {		
		var index = $(image_link).id;
		var photo = this._photo_list[index];
		var cell = Widget.addPhoto(photo.src_big);
		Widget.setFocus(cell);
	}	
}

var my_myspace = {
	_uid: null,
	_album_list: [],
	_photo_list: [],
	_photo_template: null,
	_init_myspace: false,
	
	init: function (){
		this._photo_template = new Template(["<div class='photo_item'><a href='javascript:void(0);' id='#{index}' onclick='my_myspace.onClick_Image(this);return false;'><img src='#{smallImageUri}' title='#{caption}'/><br/><img src='../images_new/ico_add.png' style='width:11px;height:11px; border:1px solid #FFFFFF;'>Add</a></div>"].join(""));
	},
	
	getAlbums: function(){
		var options = {
				method:"get",
				parameters: "profile=" + Widget._profile ,
				onComplete: this.onLoadAlbumsSuccess,
				onFailure: my_myspace.onLoadAlbumsError
			};	
			
		new Ajax.Request("photo_gallery/myspace/get_albums.php", options);
	},
	
	onLoadAlbumsSuccess: function(transport){
			rsp=transport.responseText.evalJSON();
			var album_select = $("mys_album");
			album_select.innerHTML = "";
			
			albums=rsp.albums;
			albums.each(function(album, index) {				
				var option = document.createElement("OPTION");
				option.value = album.id;
				option.innerHTML = album.title;
				album_select.appendChild(option);
				my_myspace._album_list.push(album.id);
			});

			$("frommyspace_album").show();
			album_select.selectedIndex = 0;				
			my_myspace.onChangeAlbum(0);
		},
		
	onLoadAlbumsError: function(transport){},

	onChangeAlbum: function(index) {						
		if (!this._album_list) return;

		this._photo_list = [];
		$("frommyspace_list").innerHTML = "";
		
		this.getPhotos(this._album_list[index]);		
	},

	getPhotos: function(album_id) {
		var options = {
				method:"get",
				parameters: "profile=" + Widget._profile + "&album=" + album_id,
				onComplete: this.onLoadPhotosSuccess,
				onFailure: my_myspace.onLoadPhotosError
			};	
		this.showThrobber();
		new Ajax.Request("photo_gallery/myspace/get_photos.php", options);		
	},
	
	onLoadPhotosSuccess: function(transport){
			rsp=transport.responseText.evalJSON();
			photos=rsp.photos;

			if (photos.length==0) {
				my_myspace.hideThrobber();
				$("frommyspace_list").hide();
				return;
			}

			var box = $("frommyspace_list");
			photos.each(function(photo, index) {
				photo.index = index;
				var html = my_myspace._photo_template.evaluate(photo);
				box.insert( html );	
				if (index>0 && (index%4==3)) {
					box.insert("<div class='line_break'></div>");
				}
				my_myspace._photo_list.push(photo.imageUri);
			 });
			my_myspace.hideThrobber();
		},
		
		
	onLoadPhotosError: function(transport){},
	
	showThrobber: function() {
		$("frommyspace_list").hide();
		$("frommyspace_throbber").show();
	},

	hideThrobber: function() {
		$("frommyspace_list").show();
		$("frommyspace_throbber").hide();
	},

	onClick_Image: function(image_link) {		
		var index = $(image_link).id;
		var photo = this._photo_list[index];
		var cell = Widget.addPhoto(photo);
		Widget.setFocus(cell);
	}	
}

var my_friendster = {
	_uid: null,
	_album_list: [],
	_photo_list: [],
	_photo_template: null,
	_init_friendster: false,
	
	init: function (){
		this._photo_template = new Template(["<div class='photo_item'><a href='javascript:void(0);' id='#{index}' onclick='my_friendster.onClick_Image(this);return false;'><img src='#{smallImageUri}' title='#{caption}'/><br/><img src='../images_new/ico_add.png' style='width:11px;height:11px; border:1px solid #FFFFFF;'>Add</a></div>"].join(""));
	},
	
	getAlbums: function(){
		var options = {
				method:"get",
				parameters: "profile=" + Widget._profile + "&sig_session=" + Widget._sig_session ,
				onComplete: this.onLoadAlbumsSuccess,
				onFailure: my_friendster.onLoadAlbumsError
			};	
			
		new Ajax.Request("photo_gallery/friendster/get_albums.php", options);
	},
	
	onLoadAlbumsSuccess: function(transport){
			rsp=transport.responseText.evalJSON();
			var album_select = $("friendster_album");
			album_select.innerHTML = "";
			
			albums=rsp.albums;
			albums.each(function(album, index) {				
				var option = document.createElement("OPTION");
				option.value = album.id;
				option.innerHTML = album.title;
				album_select.appendChild(option);
				my_friendster._album_list.push(album.id);
			});

			$("fromfriendster_album").show();
			album_select.selectedIndex = 0;				
			my_friendster.onChangeAlbum(0);
		},
		
	onLoadAlbumsError: function(transport){},

	onChangeAlbum: function(index) {						
		if (!this._album_list) return;

		this._photo_list = [];
		$("fromfriendster_list").innerHTML = "";
		
		this.getPhotos(this._album_list[index]);		
	},

	getPhotos: function(album_id) {
		var options = {
				method:"get",				
				parameters: "profile=" + Widget._profile + "&album=" + album_id + "&sig_session=" + Widget._sig_session,
				onComplete: this.onLoadPhotosSuccess,
				onFailure: my_friendster.onLoadPhotosError
			};	
		this.showThrobber();
		new Ajax.Request("photo_gallery/friendster/get_photos.php", options);		
	},
	
	onLoadPhotosSuccess: function(transport){
			rsp=transport.responseText.evalJSON();
			photos=rsp.photos;

			if (photos.length==0) {
				my_friendster.hideThrobber();
				$("fromfriendster_list").hide();
				return;
			}

			var box = $("fromfriendster_list");
			photos.each(function(photo, index) {
				photo.index = index;
				var html = my_friendster._photo_template.evaluate(photo);
				box.insert( html );	
				if (index>0 && (index%4==3)) {
					box.insert("<div class='line_break'></div>");
				}
				my_friendster._photo_list.push(photo.imageUri);
			 });
			my_friendster.hideThrobber();
		},
		
		
	onLoadPhotosError: function(transport){},
	
	showThrobber: function() {
		$("fromfriendster_list").hide();
		$("fromfriendster_throbber").show();
	},

	hideThrobber: function() {
		$("fromfriendster_list").show();
		$("fromfriendster_throbber").hide();
	},

	onClick_Image: function(image_link) {		
		var index = $(image_link).id;
		var photo = this._photo_list[index];
		var cell = Widget.addPhoto(photo);
		Widget.setFocus(cell);
	}	
}

var my_picasa = {
	_uid: null,
	_album_list: [],
	_photo_list: [],
	_photo_template: null,
	_init_picasa: false,
	
	init: function (){
		this._photo_template = new Template(["<div class='photo_item'><a href='javascript:void(0);' id='#{index}' onclick='my_picasa.onClick_Image(this);return false;'><img src='#{smallImageUri}' title='#{caption}'/><br/><img src='../images_new/ico_add.png' style='width:11px;height:11px; border:1px solid #FFFFFF;'>Add</a></div>"].join(""));
	},
	
	getAlbums: function(){
		var options = {
				method:"get",
				parameters: "menu=user",
				onComplete: this.onLoadAlbumsSuccess,
				onFailure: this.onLoadAlbumsError
			};	
			
		new Ajax.Request("photo_gallery/picasa/picasa.php?command=retrieveSelf", options);
	},
	
	onLoadAlbumsSuccess: function(transport){
		rsp=transport.responseText.evalJSON();
		if(rsp.status=="nologin"){
			my_picasa.requestUserLogin();
			}
		else{
			$("frompicasa_login").hide();
			var album_select = $("pic_album");
			album_select.innerHTML = "";
			
			albums=rsp.albums;
			albums.each(function(album, index) {				
				var option = document.createElement("OPTION");
				option.value = album.id;
				option.innerHTML = album.title;
				album_select.appendChild(option);
				my_picasa._album_list.push(album.id);
			});

			$("frompicasa_album").show();
			album_select.selectedIndex = 0;				
			my_picasa.onChangeAlbum(0);
		}
	},
	
	onLoadAlbumsError: function(transport){
		alert("error")
	},
	
	requestUserLogin: function(){
		Lightview.show({
			  href: 'https://www.google.com/accounts/AuthSubRequest?next=http://www.dundoo.com/photo_gallery/picasa/picasa.php%3Fcommand%3Daccess&scope=http://picasaweb.google.com/data&secure=&session=1',
			  rel: 'iframe',
			  options: {
					width:650,
					height:450,
					topclose: true,
					overlayClose: false
			  }
			});
	},
	
	checkAccess: function(){
		var options = {
				method:"get",
				parameters: "menu=user",
				onComplete: this.onLoadAccessSuccess,
				onFailure: this.onLoadAccessError
			};	
			
		new Ajax.Request("photo_gallery/picasa/picasa.php?command=retrieveSelf", options);
	},
	
	onLoadAccessSuccess: function(transport){
		rsp=transport.responseText.evalJSON();
		if(rsp.status=="nologin"){
			$("frompicasa_login").show();
			$("frompicasa_album").hide();
			}
		else{
			my_picasa.onLoadAlbumsSuccess(transport)		
		}
	},
	
	onLoadccessError: function(transport){
		alert("error")
	},
	
	onChangeAlbum: function(index) {						
		if (!this._album_list) return;

		this._photo_list = [];
		$("frompicasa_list").innerHTML = "";
		
		this.getPhotos(this._album_list[index]);		
	},

	getPhotos: function(album_id) {
		var options = {
				method:"get",
				parameters: "command=retrieveAlbumFeed&album=" + album_id,
				onComplete: this.onLoadPhotosSuccess,
				onFailure: my_picasa.onLoadPhotosError
			};	
		this.showThrobber();
		new Ajax.Request("photo_gallery/picasa/picasa.php", options);		
	},
	
	onLoadPhotosSuccess: function(transport){			
			rsp=transport.responseText.evalJSON();
			photos=rsp.photos;

			if (photos.length==0) {
				my_myspace.hideThrobber();
				$("frompicasa_list").hide();
				return;
			}

			var box = $("frompicasa_list");
			photos.each(function(photo, index) {
				photo.index = index;
				var html = my_picasa._photo_template.evaluate(photo);
				box.insert( html );	
				if (index>0 && (index%4==3)) {
					box.insert("<div class='line_break'></div>");
				}
				my_picasa._photo_list.push(photo.imageUri);
			 });
			my_picasa.hideThrobber();
		},
		
		
	onLoadPhotosError: function(transport){},
	
	showThrobber: function() {
		$("frompicasa_list").hide();
		$("frompicasa_throbber").show();
	},

	hideThrobber: function() {
		$("frompicasa_list").show();
		$("frompicasa_throbber").hide();
	},

	onClick_Image: function(image_link) {		
		var index = $(image_link).id;
		var photo = this._photo_list[index];
		var cell = Widget.addPhoto(photo);
		Widget.setFocus(cell);
	}	
}

var Flickr = {
	_request: null,
	_api_url: "http://api.flickr.com/services/rest/",

	_username: null,
	_nsid: null,

	_page_index:0,
	_init_samples: false,

	init: function() {
		//api_key: "f90208dfe11d4e79f195c4a1a2ab4062",
		this._get_photos_params = {
			method: "flickr.people.getPublicPhotos",
			format: "json",			
			api_key: "92018991c540648d7fc07965ecf5ddd5",
			jsoncallback: "Flickr.onGetPhotosComplete",

			per_page: 20
		}

		this._photo_template = new Template([
			"<div class='photo_item'><a href='#{original_path}' id='#{index}' onclick='Flickr.onClick_Image(this);return false;'><img src='#{square}' title='#{caption}'/><br/><img src='../images_new/ico_add.png' style='width:11px;height:11px; border:1px solid #FFFFFF;'>Add</a></div>"
			].join("")
		);

	},
	
	clearRequest: function() {
		this._setuser_request = null;
		this._getphoto_request = null;

		this.hideThrobber();
	},

	showThrobber: function() {
		$("flickr_photo_list").style.display = "none";
		$("flickr_throbber").style.display = "block";

		$("flickr_paginator").style.display = "none";
	},

	hideThrobber: function() {
		$("flickr_photo_list").style.display = "block";
		$("flickr_throbber").style.display = "none";
	},

	onClick_GetPhotos: function() {
		if (this._setuser_request || this._getphoto_request) {
			return;
		}

		var name = $("flickr_username").value;

		if (this._username != name) {
			this.setUsername(name);
		}
		else {
			this._page_index = 1;
			this.getPhotoList();
		}
	},

	setUsername: function(name) {
		if (this._setuser_request || this._getphoto_request) {
			return;
		}

		this.showThrobber();

		this._username = name;
		this._nsid = null;

		var params = null;
		if (this._username.indexOf("@") == -1) {
			params = {
				method: "flickr.people.findByUsername",
				format: "json",
				api_key: "f90208dfe11d4e79f195c4a1a2ab4062",
				jsoncallback: "Flickr.onFindUserComplete",
				username: this._username
			}
		}
		else {
			// email 
			params = {
				method: "flickr.people.findByEmail",
				format: "json",
				api_key: "f90208dfe11d4e79f195c4a1a2ab4062",
				jsoncallback: "Flickr.onFindUserComplete",
				find_email: this._username
			}		
		}

		var options = options || {
			method:"get",
			crossSite: true,
			parameters: params,
			onFailure: function(transport) {
				Flickr.onFindUserError(transport);
			}

		};	
		
		this._setuser_request = new Ajax.Request(this._api_url, options);

	},

	onFindUserComplete: function(rsp) {
		this.clearRequest();

		if (rsp.stat == "ok") {
			this._page_index = 0;
			this._nsid = rsp.user.nsid;
			this._get_photos_params.user_id = this._nsid;
			this.next();
		}
		else {
			this.onFindUserError(rsp);
		}
	},
	
	onFindUserError: function(rsp) {
		this.clearRequest();
	},

	next: function() {
		if (this._setuser_request || this._getphoto_request) {
			return;
		}

		this._page_index++;
		this.getPhotoList();
	},

	prev: function() {
		if (this._setuser_request || this._getphoto_request) {
			return;
		}

		if (this._page_index == 0) {
			return;
		}

		this._page_index--;
		this.getPhotoList();
	},


	getPhotoList: function() {
		this.showThrobber();

		this._get_photos_params.page = this._page_index;

		this.getPhotos();
	},
	
	getPhotos: function() {
		var options = options || {
			method:"get",
			crossSite: true,
			parameters: this._get_photos_params,
			onFailure: function(transport) {
				Flickr.onGetPhotosError(transport);
			}

		};	
	
		
		this._getphoto_request = new Ajax.Request(this._api_url, options);
	},

	onGetPhotosComplete: function(rsp) {
		this.clearRequest();

		if (rsp.stat == "ok") {
			rsp.photos.photo.each(function(e) {
				var url = "http://static.flickr.com/";
				e.square = url+e.server+"/"+e.id+"_"+e.secret+"_s.jpg";
				e.thumbnail = url+e.server+"/"+e.id+"_"+e.secret+"_t.jpg";
				e.path = url+e.server+"/"+e.id+"_"+e.secret+".jpg"; // medium size
				e.original_path = url+e.server+"/"+e.id+"_"+e.secret+"_o.jpg";
			});

			this._photo_list = rsp.photos.photo;

			this.updatePhotoList();

			$("flickr_prev").style.display = (rsp.photos.page == 1)?"none":"inline";
			$("flickr_next").style.display = (this._photo_list.length<20)?"none":"inline";
			
			$("flickr_paginator").style.display = "block";
		}
	},

	onGetPhotosError: function(rsp) {
		this.clearRequest();
		
		//alert("error");
	},

	updatePhotoList: function() {
		var box = $("flickr_photo_list");
		box.innerHTML = "";

		this._photo_list.each(function(photo, index) {
			photo.index = index;
			var html = Flickr._photo_template.evaluate(photo);
			box.insert( html );	
			if (index>0 && (index%4==3)) {
				box.insert("<div class='line_break'></div>");
			}
		});
	},

	onClick_Image: function(image_link) {
		var index = $(image_link).id;
		var photo = this._photo_list[index];
		var cell = Widget.addPhoto(photo.path);
		Widget.setFocus(cell);
	}

}

//flickr.getPhotoList(imageHolder.username, pageIndex, imageHolder.pagePerCount);
var URLGallery = {
	
	_photo_list: [], 

	init: function() {
		this._photo_template = new Template([
			"<div class='photo_item'><a href='#{url}' onclick='URLGallery.onClick_Image(this);return false;'><img src='#{url}' onload='this.className=\"loaded\"'/><br/><img src='../images_new/ico_add.png' style='width:11px;height:11px; border:1px solid #FFFFFF;'>Add</a></div>"
			].join("")
		);
	},

	onClick_GetPhoto: function() {
		var url = $("fromurl_image_url").value;
		if (url == "") {
			return;
		}
		this._photo_list.push(url);

		var box = $("fromurl_photo_list");
		var html = this._photo_template.evaluate({url:url});
		box.insert( html );

		count = this._photo_list.length;
		if (count>0 && (count%5==4)) {
			box.insert("<div class='line_break'></div>");
		}	
	},

	onClick_Image: function(image_link) {
		var img = $(image_link).getElementsBySelector("img")[0];
		if (!img.hasClassName("loaded")) {
			return;
		}

		var cell = Widget.addPhoto(img.src);
		Widget.setFocus(cell);
	}

}

var UploadGallery = {
	
	_photo_list: [], 

	init: function() {
		this._photo_template = new Template([
			"<div class='photo_item'><a href='#{url}' onclick='UploadGallery.onClick_Image(this);return false;'><img src='#{url}' onload='this.className=\"loaded\"'/><br/><img src='../images_new/ico_add.png' style='width:11px;height:11px; border:1px solid #FFFFFF;'>Add</a></div>"
			].join("")
		);
	},

	onClick_UploadPhoto: function(url) {
		if (url == "") {
			return;
		}
		
		this._photo_list.push(url);

		var box = $("fromupload_photo_list");
		var html = this._photo_template.evaluate({url:url});
		box.insert( html );

		count = this._photo_list.length;
		if (count>0 && (count%5==4)) {
			box.insert("<div class='line_break'></div>");
		}	
		
	},

	onClick_Image: function(image_link) {
		var img = $(image_link).getElementsBySelector("img")[0];
		if (!img.hasClassName("loaded")) {
			return;
		}

		var cell = Widget.addPhoto(img.src);
		Widget.setFocus(cell);
	}

}


var Gallery = {

	_init_facebook: false,
	_init_photobucket: false,
	_init_flickr: false,
	_init_myspace: false,
	_tab_selected: "",
	_init_picasa: false,
	_tab_selected: "",

	init: function() {
		my_FB.init();
		Flickr.init();
		URLGallery.init();
		UploadGallery.init();
		my_myspace.init();
		my_friendster.init();
		my_picasa.init();
		

		$("fromupload").show();
		_tab_selected="fromupload";
	},
	
	initMy_Facebook: function() {
		//if (this.my_FB) return;	
		my_FB.check_conect();
	},

	initPhotobucket: function() {
		if (this._init_photobucket) return;
		
		if(document.location.host=="localhost")
			path=document.location.host+"/dundoo";
		else
			path=document.location.host;

		$("jwidget").src =
			"http://photobucket.com/svc/jwidget.php?width=460&height=520&largeThumb=false"
			+"&pbaffsite=272&bg=%23FFFFFF&border=false&bordercolor=%23000000&url=http://"
			+path+"/cllbck_photobucket.html&linkType=url&textcolor=%23000000&linkcolor=%230000FF&media=image&btntxt=Paste&searchenabled=false"
			+"&searchlinkcolor=&searchbgcolor=";

		this._init_photobucket = true;
	},

	initFlickr: function() {
		if (this._init_flickr) return;
		
		Flickr.onClick_GetPhotos();
		this._init_flickr = true;
	},
	
	initMyspace: function(){
		if (this._init_myspace) return;
		
		my_myspace.getAlbums();
		this._init_myspace = true;
	},
	
	initFriendster: function(){
		if (this._init_friendster) return;
		
		my_friendster.getAlbums();
		this._init_friendster = true;
	},
	
	initPicasa: function(){
		if (this._init_picasa) return;

		my_picasa.getAlbums();
		this._init_picasa=true;		
	},

	change: function(source) {
		$("btn_"+_tab_selected).removeClassName("selected");
		$(_tab_selected).hide();
		$("btn_"+source).addClassName("selected");
		_tab_selected=source;
		$(source).show();

		if (source == "fromfacebook") {						
			this.initMy_Facebook();			
		}
		else if (source == "fromphotobucket") {
			this.initPhotobucket();
		}
		else if (source == "fromflickr") {
			this.initFlickr();
		}
		else if (source == "frommyspace") {
			this.initMyspace();
		}
		else if (source == "fromfriendster") {
			this.initFriendster();
		}
		else if (source == "frompicasa") {
			this.initPicasa();
		}
	},

	onInsertURL: function(url) {
		var cell = Widget.addPhoto(url);
	}
}