var FavoriCart = new Class({
	Implements: [Options],
	Extends: CookieCart,

	/**
	 * Options
	 *
	 */
	options : {
		display_number : -5,
		display_mini_container_left : 'table.fav_col_left',
		display_mini_container_right : 'table.fav_col_right',
		display_container : '.favoris_list',
		max_record : 15
	},
	
	initialize : function(id, options) {
		this.parent(id, options);
	},
	
	/**
	 * 
	 * 
	 */
	display_list: function() {
		if ( $$(this.options.display_mini_container_left) && $$(this.options.display_mini_container_right) ) {
			var bFromLast = false;
			var iNumber = this.options.display_number;
			if ( iNumber < 0) {
				bFromLast = true;
				iNumber = -iNumber;
			}
			var aDisplay = new Array();
			var aTemp = new Array(); 
			if ( bFromLast )
				for(var i = this.nb_record-1; i >= this.nb_record - iNumber && i >= 0; i-- ) {
					aTemp = this.records[i].split(this.options.info_separator);
					aTemp.push(i);
					aDisplay.push(aTemp);
				}
			else 
				for(var i = 0; i < iNumber; i++ )
					if ( i < this.nb_records ) {
						aTemp = this.records[i].split(this.options.info_separator);
						aTemp.push(i);
						aDisplay.push(this.records[i].split(this.options.info_separator));
					}
			
			var sAff = '<tbody>';
			for(i = 0; i < aDisplay.length && i < 3; i++) {
				sAff += '<tr>';
					sAff += '<td>';
						sAff += '<h5>' + aDisplay[i][0] + '</h5>';
						sAff += '<a href="'+ aDisplay[i][2] +'" title="'+aDisplay[i][1]+'">' + ((aDisplay[i][1].length > 26) ? aDisplay[i][1].substring(0,26) + '...' : aDisplay[i][1]) + '</a>';
					sAff += '</td>';
					sAff += '<td class="col_checkbox">';
						sAff += '<input id="'+ aDisplay[i][3]+'" type="checkbox" name="index_' + aDisplay[i][4] + '" value="' + aDisplay[i][3] + '" />';
					sAff += '</td>';
				sAff += '</tr>';
			}
			sAff += '</tbody>';

			$$(this.options.display_mini_container_left).set('html',sAff);
			
			sAff = '<tbody>';
				for(i=3; i < aDisplay.length; i++) {
					sAff += '<tr>';
						sAff += '<td>';
							sAff += '<h5>' + aDisplay[i][0] + '</h5>';
							sAff += '<a href="'+ aDisplay[i][2] +'" title="'+aDisplay[i][1]+'">' + ((aDisplay[i][1].length > 26) ? aDisplay[i][1].substring(0,26) + '...' : aDisplay[i][1]) + '</a>';
						sAff += '</td>';
						sAff += '<td class="col_checkbox">';
							sAff += '<input id="'+ aDisplay[i][3]+'" type="checkbox" name="index_' + aDisplay[i][4] + '" value="' + aDisplay[i][3] + '" />';
						sAff += '</td>';
					sAff += '</tr>';
				}
			sAff += '</tbody>';
				
			$$(this.options.display_mini_container_right).set('html',sAff);
			
		}
	},
	
	add : function(information) {
		return this.parent(information);
	},
	
	add_fav : function(obj) {
		var bReturn = false;
		if ( this.nb_record < this.options.max_record ) {
			var information = $$(obj).getElements('.hidden_infos_fav');
			if (this.add($$(information).get('html').toString()))
			{
				this.display_list();
				bReturn = true;
			}
		}
		else
			alert('Vous avez atteint votre nombre total de favoris. Veuillez en supprimer certains.');
		
		return bReturn;
	},

	remove : function(index) {
		return this.parent(index);
	},
	

	remove_fav : function(name) {
		var index = -1;
		var aTemp;
		for(var i = 0; i < this.nb_record; i++) {
			aTemp = this.records[i].split(this.options.info_separator);
			if ( aTemp[3] == name ) {
				index = i;
				break;
			}
		}

		if ( this.remove(index) ) {
			if ( $$('#fav_line_' + name) ) 
				$$('#fav_line_' + name).dispose();
			
			var aFavList = $$('table.list_favoris');
			
			if ( aFavList ) {
				aFavList.each(function(elem) {
					if ((elem.getElements('tbody tr')).length == 0) {
						elem.dispose();
					}
				});
			}
		}
	},
	
	
	remove_selected_fav : function() {
		var aFav = $$('.fav_item:checked');
		for(var i=0; i<aFav.length; i++) {
			this.remove_fav(aFav[i].get('value'));
		}
		this.display_list();
		return false;
	}
});
