var CanvasAjax = {
	ajaxRetrys: 5, 

	deleteItem: function(Img, retrys) {
		if(typeof(retrys) != 'undefined') {
			if(retrys > this.ajaxRetrys)
				return false;
		} else
			var retrys = 1;
		
		var me = this;
		var deleteItem_callback = {
			success: this.successDeleteItem, 
			failure: function(o) { me.failureDeleteItem(Img, retrys) }
		};

		YAHOO.util.Connect.asyncRequest('POST', 'Media/delete/'+Img._ID, deleteItem_callback);
	},
 
	successDeleteItem: function(o) {
	},
 
	failureDeleteItem: function(Img, retrys) {
		this.deleteItem(Img, retrys+1);
	},
 
  	
	addToCollection: function(Img, Box, retrys) {
		if(typeof(retrys) != 'undefined') {
			if(retrys > this.ajaxRetrys)
				return false;
		} else
			var retrys = 1;
		
		var me = this;
		var addToCollection_callback = {
			success: this.successAddToCollection, 
			failure: function(o) { me.failureAddToCollection(Img, Box, retrys) }
		};

		YAHOO.util.Connect.asyncRequest('POST', 'MediaCollection/addItem/'+Box._ID+'/'+Img._ID, addToCollection_callback);
	},
 
 	successAddToCollection: function(o) {
 	},
 
 	failureAddToCollection: function(Img, Box, retrys) {
 		this.addToCollection(Img, Box, retrys+1);
 	},

 	
	removeFromCollection: function(Img, Box, retrys) {
		if(typeof(retrys) != 'undefined') {
			if(retrys > this.ajaxRetrys)
				return false;
		} else
			var retrys = 1;
	
		var me = this;
		var removeFromCollection_callback = {
			success: this.successRemoveFromCollection, 
			failure: function(o) { me.failureRemoveFromCollection(Img, Box, retrys) }
		};
		
		YAHOO.util.Connect.asyncRequest('POST', 'MediaCollection/removeItem/'+Box._ID+'/'+Img._ID, removeFromCollection_callback);
	},
 
 	successRemoveFromCollection: function(o) {
 	},
 
 	failureRemoveFromCollection: function(Img, Box, retrys) {
 		this.removeFromCollection(Img, Box, retrys+1);
 	},
 	
 	
 	removeAllItemsFromCollection: function(Box, retrys) {
		if(typeof(retrys) != 'undefined') {
			if(retrys > this.ajaxRetrys)
				return false;
		} else
			var retrys = 1; 
		
		var me = this;
		var removeAllItemsFromCollection_callback = {
			success: this.successRemoveAllItemsFromCollection, 
			failure: function(o) { me.failureRemoveAllItemsFromCollection(Box, retrys) }
		};
		
		YAHOO.util.Connect.asyncRequest('POST', 'MediaCollection/removeAllItems/'+Box._ID, removeAllItemsFromCollection_callback);
	},
 
 	successRemoveAllItemsFromCollection: function(o) {
 	},
 
 	failureRemoveAllItemsFromCollection: function(Box, retrys) {
 		this.removeAllItemsFromCollection(Box, retrys+1);
 	},
 	
 	
 	addCollection: function(Box, retrys) {
		if(typeof(retrys) != 'undefined') {
			if(retrys > this.ajaxRetrys)
				return false;
		} else
			var retrys = 1; 
			 	
 		var me = this;
		var addCollection_callback = {
			success: function(o) { me.successAddCollection(o, Box) }, 
			failure: function(o) { me.failureAddCollection(Box, retrys) }
		};
		
		YAHOO.util.Connect.asyncRequest('POST', 'MediaCollection/add', addCollection_callback);
	},
 
 	successAddCollection: function(o, Box) {
 		var response = YAHOO.lang.JSON.parse(o.responseText);
 		Box.setID(response.ID);
 	},
 
 	failureAddCollection: function(Box, retrys) {
 		this.addCollection(Box, retrys+1);
 	},
 	
 	
  	removeCollection: function(Box, retrys) {
		if(typeof(retrys) != 'undefined') {
			if(retrys > this.ajaxRetrys)
				return false;
		} else
			var retrys = 1;
		
		var me = this;
		var removeCollection_callback = {
			success: this.successRemoveCollection,
			failure: function(o) { me.failureRemoveCollection(Box, retrys) }
		};
		
		YAHOO.util.Connect.asyncRequest('POST', 'MediaCollection/delete/'+Box._ID, removeCollection_callback);
	},
 
 	successRemoveCollection: function(o) {
 	},
 
 	failureRemoveCollection: function(Box, retrys) {
 		this.removeCollection(Box, retrys+1);
 	},
 	
 	
 	cropImage: function(ID, params, callback) {
		me = this;
 		var cropImage_callback = {
 			success: function(o) { me.successCropImage(o, callback) }, 
 			failure: function(o) { me.failureCropImage(o, callback) }
 		};
 		
		var paramstring = "";
		for (paramname in params) {
			if(paramstring == "")
				paramstring = paramname + "=" + params[paramname];
			else
				paramstring = paramstring + "&" + paramname + "=" + params[paramname];
		}
 		YAHOO.util.Connect.asyncRequest('POST', 'MediaPhoto/crop/'+ID, cropImage_callback, paramstring);
 	},
 	
 	successCropImage: function(o, callback) {
		try  {
			var response = YAHOO.lang.JSON.parse(o.responseText);
			callback(response);
		}  
		catch (x) {
			return false;
		} 
 	}, 
 	
 	failureCropImage: function(o, callback) {
 		callback(false);
 	},
 	
 	filterImage: function(ID, filtername, callback) {
		me = this;
 		var filterImage_callback = {
 			success: function(o) { me.successFilterImage(o, callback) }, 
 			failure: function(o) { me.failureFilterImage(o, callback) }
 		};
 		
		var paramstring = "filter=" + filtername + "&show=1";
 		
 		YAHOO.util.Connect.asyncRequest('POST', 'MediaPhoto/filter/'+ID, filterImage_callback, paramstring);
 	},
 	
 	successFilterImage: function(o, callback) {
		try  {
			var response = YAHOO.lang.JSON.parse(o.responseText);
			callback(response);
		}  
		catch (x) {
			return false;
		} 
 	}, 
 	
 	failureFilterImage: function(o, callback) {
 		callback(false);
 	},
 	
 	photoExport: function(imagelist, service, callback) {
 		me = this;
 		var photoExport_callback = {
 			success: function(o) { me.successPhotoExport(o, callback) },
 			failure: function(o) { me.failurePhotoExport(o, callback) }
 		};
 		
 		var paramstring = "items=" + imagelist + "&service=" + service;
 		
 		YAHOO.util.Connect.asyncRequest('POST', 'MediaPhoto/export/', photoExport_callback, paramstring);
 	},
 	
 	successPhotoExport: function(o, callback) {
		try  {
			var response = YAHOO.lang.JSON.parse(o.responseText);
			callback(response);
		}  
		catch (x) {
			return false;
		} 
 	},
 	
 	failurePhotoExport: function(o, callback) {
 		callback(false);
 	}, 
 	
 	photoExport_submit: function(formObject) {
 		var photoExport_submit_callback = {
 			success: this.successPhotoExport_submit,
 			failure: this.failurePhotoExport_submit
 		};
 		
 		YAHOO.util.Connect.setForm(formObject);
 		YAHOO.util.Connect.asyncRequest('POST', formObject.action, photoExport_submit_callback);
 	},
 	
 	successPhotoExport_submit: function(o) {
		var content = YD.get('content'); 
		content.innerHTML = o.responseText; 
 	},
 	
 	failurePhotoExport_submit: function(o) {
 		return false;
 	},
 	
 	videoExport: function(service, callback) {
 		me = this;
 		var videoExport_callback = {
 			success: function(o) { me.successVideoExport(o, callback) },
 			failure: function(o) { me.failureVideoExport(o, callback) }
 		};
 		
 		var paramstring = "service=" + service;
 		
 		YAHOO.util.Connect.asyncRequest('POST', 'MediaVideo/export/' + canvaselement.selected._ID, videoExport_callback, paramstring);
 	},
 	
 	successVideoExport: function(o, callback) {
		try  {
			var response = YAHOO.lang.JSON.parse(o.responseText);
			callback(response);
		}  
		catch (x) {
			return false;
		} 
 	},
 	
 	failureVideoExport: function(o, callback) {
 		callback(false);
 	}, 

 	videoExport_submit: function(formObject) {
 		var videoExport_submit_callback = {
 			success: this.successVideoExport_submit,
 			failure: this.failureVideoExport_submit
 		};

 		YAHOO.util.Connect.setForm(formObject);
 		YAHOO.util.Connect.asyncRequest('POST', formObject.action, videoExport_submit_callback);
 	},

 	successVideoExport_submit: function(o) {
		var content = YD.get('content'); 
		content.innerHTML = o.responseText; 
 	},
 	
 	failureVideoExport_submit: function(o) {
 		return false;
 	},

 	photoshowExport: function(service, callback) {
 		me = this;
 		var photoshowExport_callback = {
 			success: function(o) { me.successPhotoshowExport(o, callback) },
 			failure: function(o) { me.failurePhotoshowExport(o, callback) }
 		};
 		
 		var paramstring = "service=" + service;
 		
 		YAHOO.util.Connect.asyncRequest('POST', 'MediaPhotoshow/export/' + canvaselement.selected._ID, photoshowExport_callback, paramstring);
 	},

 	successPhotoshowExport: function(o, callback) {
		try  {
			var response = YAHOO.lang.JSON.parse(o.responseText);
			callback(response);
		}  
		catch (x) {
			return false;
		} 
 	},

 	failurePhotoshowExport: function(o, callback) {
 		callback(false);
 	},

 	/*photoshowExport_submit: function(formObject) {
 		var photoshowExport_submit_callback = {
 			success: this.successPhotoshowExport_submit,
 			failure: this.failurePhotoshowExport_submit
 		};

 		YAHOO.util.Connect.setForm(formObject);
 		YAHOO.util.Connect.asyncRequest('POST', formObject.action, photoshowExport_submit_callback);
 	},

 	successPhotoshowExport_submit: function(o) {
		var content = YD.get('content');
		content.innerHTML = o.responseText;
 	},

 	failurePhotoshowExport_submit: function(o) {
 		return false;
 	},*/

 	ajaxForm_submit: function(formObject, id) {
 		var ajaxForm_submit_Callback = {
 			success: this.successAjaxForm_submit,
 			failure: this.failureAjaxForm_submit
 		};
 		
 		YAHOO.util.Connect.setForm(formObject);
 		YAHOO.util.Connect.asyncRequest('POST', formObject.action, ajaxForm_submit_Callback);
 	},
 	
 	successAjaxForm_submit: function(o) {
		var content = YD.get('content');
		content.innerHTML = o.responseText;
 	},
 	
 	failureAjaxForm_submit: function(o) {
 		return false;
 	}, 
 	
 	facebookForm_submit: function(formObject) {
 		var facebookForm_submit_Callback = {
 			success: this.successFacebookForm_submit,
 			failure: this.failureFacebookForm_submit
 		};
 		
 		YAHOO.util.Connect.setForm(formObject);
 		YAHOO.util.Connect.asyncRequest('POST', formObject.action, facebookForm_submit_Callback);
 	},
 	
 	successFacebookForm_submit: function(o) {
		try  {
			var response = YAHOO.lang.JSON.parse(o.responseText);
		}  
		catch (x) {
			return false;
		}
		
		facebook_publish_feed_story(35969684706, {
			"comment":response.comment,
			"profile":'<a href=\"' + response.absurl + 'ididit/profile/' + response.userid + '\">Visit my profile.</a>',
			"images":[{"src":"http://ididit.co.nz/ididit/img/logo-ididit.png", "href":"http://ididit.co.nz"}]}); 
		facebook_onload(true);
		
 	},
 	
 	failureFacebookForm_submit: function(o) {
 		return false;
 	} 
}; 
