/*
new Ajax.Updater({ success: 'items' }, '/items', {
  parameters: { text: $F('text') },
  insertion: Insertion.Bottom
});

*/

Profiler = Class.create();
Object.extend(Object.extend(Profiler.prototype, Abstract.prototype), {
	initialize: function(wrapper){
	    this.wrapper    = $(wrapper);
	    this.bubble		= $('profile-container');
	    this.currentDiv = undefined;
	    
	    this.events = {
	      mouseover: this.mouseover.bind(this),
	      mouseout: this.mouseout.bind(this),
	      click: this.click.bind(this)
	    };

	    this.addObservers();
	  },
	
  addObservers: function() {
    var controls = this.wrapper.getElementsBySelector('.project-contributors a');
    controls.invoke('observe', 'click', this.events.mouseover);
    Event.observe('body','click', this.events.click);
//    controls.invoke('observe', 'mouseout', this.events.mouseout);
//    var c =  this.bubble.up().getElementsBySelector('#profile-container');
//	c.invoke('observe','click',this.positionProfile);
//	c.invoke('observe','mouseout',this.events.mouseout);
  },

  mouseover: function(event) {
  		var me = this;
  		this.currentDiv = event.element().up('div',1);
  		new Ajax.Updater('profile-container','/profile/'+event.target.href.split("#")[1],{
  			onComplete : function(transport){
				me.positionProfile(event);
  			},
  			onFailure : function(transport){
  				//alert('FAIL! '+transport);
  			}
  		});
  		
/*
  		var element = Event.element(event).up("a");
	    if (this.scrolling) this.scrolling.cancel();
    	this.moveTo(element.href.split("#")[1], this.scroller, { duration:this.options.duration });    
    	Event.stop(event);
*/
		Event.stop(event);
  },
  
  click: function(e){
		if((e.element() != this.bubble && !e.element().up('#profile-container')) || e.element().className == 'close-profile'){
			this.bubble.hide();
		}
		if(e.element().className == 'close-profile'){
			Event.stop(e);
		}
  },
  
  positionProfile: function(e){
	var proj = this.currentDiv;
	var x = proj.positionedOffset().left;
	var y = proj.positionedOffset().top;
	this.bubble.style.top = y+"px";
	this.bubble.style.left = x+"px";
  	this.bubble.style.display = "block";	
  },
  
  mouseout: function(event){
		$('profile-container').style.display = "none";
  }
});
