/*
 * Several classes are defined in this file
 */

/*********************************************************************/


/*
 * Layer item button
 */
function LayersOSLayerItem(referal, displayable, layer){
	this._referal = referal;
	this._displayable = displayable;		
	this._layer = layer;

	var me = this;	
		
	//Get HTML to display this Item
	if (this._displayable[0].id == 'layersOS_myfriends_other_item_container'){
		var html = $(this._referal._templates.getLayerItemHTML(this._layer));	
	}
	else{
		var html = $(this._referal._templates.getLayerItemOverThisPageHTML(this._layer));
	}
		
	this._displayable.append(html).show();
	  
	html.click(
		function(){
			me.layersOSLayerItemClick();
		}
	);
	
	// Check whether this layer item corresponds to the one displayed	
	if (os.currentLayer._id == this._layer._id){
		this._displayable.find('#layersOS_list_layer_main' + this._layer._id).addClass('layer_selected');
	}
}

LayersOSLayerItem.prototype._referal;
LayersOSLayerItem.prototype._displayable;
LayersOSLayerItem.prototype._layer;


LayersOSLayerItem.prototype.endLayersOSLayerItemClick = function(){

}


LayersOSLayerItem.prototype.layersOSLayerItemClick = function(){
	try {
		
		//Loading a layer from my friends layers list
		if (this._displayable[0].id == 'layersOS_myfriends_other_item_container') {
			window.open(layersOS_spm_site + this._layer._owner + '/' + this._layer._id);			
		}
		//Loading a layer from "layers over this page".
		else{
			this._referal._state = 'openLayerFromList';
			
			var me = this;
			
			// Remove selected class from every item		
			$(".layersOS_list_layer_main").each(function(){
				$(this).removeClass('layer_selected');
			});
			
			// Check whether this layer item corresponds to the one displayed
			if (os.currentLayer._id == this._layer._id) {
				os.removeCurrentLayer();
			}
			else {
				var res = true;

				if( (os.getCurrentLayer()._dirtyData || os.getCurrentLayer()._dirtyTitle || os.getCurrentLayer()._dirtyDescription) && (os.getCurrentUser()._username == os.getCurrentLayer()._owner) ){
					res = confirm("Are you sure you want to close the current layer?");
				}

				if (!res) {
					return;
				}else{

					os.removeCurrentLayer();
				
					this._displayable.find('#layersOS_list_layer_main' + this._layer._id).addClass('layer_selected');
					os.removeCurrentLayer();
					os.getLayer(this._layer.getId());
				}
			}
		}
				
	}catch(e){}
}

