

var MemoryListUpdater = Class.create();
Object.extend(MemoryListUpdater.prototype, {

	initialize: function(styleElem, idPrefix, img1, img2, img3, url) {
		this.styleElem = styleElem;
		this.idPrefix = idPrefix;		
		this.img1 = img1;
		this.img2 = img2;
		this.img3 = img3;
		this.upElems = $$(styleElem);
		this.buildObjects();
		this.url = url;
	},

	buildObjects: function () {
		for(i = 0; i < this.upElems.length; ++i) {		
			this.upElems[i] = 
				Object.extend(this.upElems[i], new MemoryListElement(
						this.img1, 
						this.img2, 
						this.img3, 
						this));
		};
	},
	
	reBuildObjects: function() {
		this.upElems = null;
		this.upElems = $$(this.styleElem);
		for(i = 0; i < this.upElems.length; ++i) {		
			this.upElems[i] = 
				Object.extend(this.upElems[i], new MemoryListElement(
						this.img1, 
						this.img2, 
						this.img3, 
						this));
		}
	},
	
	saveElement: function(element) {
		var updateUrl = this.url+element.adId();
		element.updatingElement();
		new Ajax.Request(updateUrl, {
  			method: 'post',
  			
  			onSuccess: function(transport) {  			
  				element.updatedElement();		    		    		      			         
  			},
  			onFailure: function(transport) {
  				element.resetElement();
  				alert("Muistilistalle tallentaminen ep�onnistui.");  				
  			},
  			on413: function(transport) {
  				element.resetElement();
  				alert("Muistilistan maksimi koko on liian suuri.\n Poista listalta ensin ilmoituksia.");
  			}
		});
	}
});


var MemoryListRemover = Class.create();
Object.extend(MemoryListRemover.prototype, {

	initialize: function(styleElem, idPrefix, img1, img2, img3, url) {
		this.styleElem = styleElem;
		this.idPrefix = idPrefix;		
		this.img1 = img1;
		this.img2 = img2;
		this.img3 = img3;
		this.upElems = $$(styleElem);
		this.buildObjects();
		this.url = url;
	},

	buildObjects: function () {
		for(i = 0; i < this.upElems.length; ++i) {		
			this.upElems[i] = 
				Object.extend(this.upElems[i], new MemoryListElement(
						this.img1, 
						this.img2, 
						this.img3, 
						this));
		};
	},
	
	reBuildObjects: function() {
		this.upElems = null;
		this.upElems = $$(this.styleElem);
		for(i = 0; i < this.upElems.length; ++i) {		
			this.upElems[i] = 
				Object.extend(this.upElems[i], new MemoryListElement(
						this.img1, 
						this.img2, 
						this.img3, 
						this));
		}
	},
	
	saveElement: function(element) {
		var updateUrl = this.url+element.adId();
		element.updatingElement();
		if(confirm("Haluatko varmasti poistaa ilmoituksen muistilistalta?")) {		
			new Ajax.Request(updateUrl, {
	  			method: 'post',
	  			
	  			onSuccess: function(transport) {  			
	  				element.updatedElement();		  
	  				element.up("TR").hide();
	  				subtractResult();	    		      			         
	  			},
	  			onFailure: function(transport) {
	  				element.resetElement();
	  				alert("Poistaminen ep�onnistui.");  				
	  			}
			});
		} else {
			element.resetElement();
		}
	}
});

var MemoryListElement = Class.create();
Object.extend(MemoryListElement.prototype, {
	initialize: function(img1, img2, img3, parent) {
		this.img1 = img1;
		this.img2 = img2;
		this.img3 = img3;
		this.updating = false;
		this.parent = parent;
	}, 
	
	onclick: function() {
		if(!this.updating) {
			this.save();
		} 
	},
	
	adId: function() {
		return this.id.gsub("__mem__","");
	},
	
	save: function() {
		this.updating = true;
		this.parent.saveElement(this);
	},
	
	updatingElement: function() {
		this.src = this.img2;
	},
	
	updatedElement: function() {
		this.src = this.img3;				
	},
	
	resetElement: function() {
		this.src = this.img1;
		this.updating = false;
	}
});

function subtractResult() {
	var results = $('results').innerHTML;
	results --;
	
	if (results == 0) {
		$('results').update(results);
		location.reload(true);
	} else {
		$('results').update(results);
	}
}

