/*------------------------------------------------------------
 * 
 * Guests - holds a list of guests for each profile
 * 
 * 
 */
var Guests = new Class({
	
	initialize: function() {
		this.inviteNewGuest();
		this.editGuests();
	},
	
	init_save_buttons: function() {
		this.cancelGuest();
		this.inviteExistingGuest();
		this.reInviteExistingGuest();
		this.removeGuestAccess();
		this.saveGuest();
	},
	
	inviteNewGuest: function() {
		if ($('inv-new-button')){
			$('inv-new-button').addEvent('click', 
				function(){
					this.updateGuestList('new-guest');
				}.bind(this)
			);
		}
	},
	
	cancelGuest: function() {
		if ($('cancel-guest-button')){
			$('cancel-guest-button').addEvent('click', this.newGuest.bind(this));
		}
	},
	
	inviteExistingGuest: function() {
		if ($('inv-guest-button')){
			$('inv-guest-button').addEvent('click', 
				function(){
					this.updateGuestList('inv-existing-guest');
				}.bind(this)
			);
		}
	},
	
	reInviteExistingGuest: function() {
		if ($('re-inv-guest-button')){
			$('re-inv-guest-button').addEvent('click', 
				function(){
					this.updateGuestList('re-invite-guest');
				}.bind(this)
			);
		}
	},
	
	removeGuestAccess: function() {
		if ($('remove-access-button')){
			$('remove-access-button').addEvent('click', 
                function(){
                    var doRemove = confirm("Do you really want to remove this guest's access?");
                    if( doRemove ){
                        this.updateGuestList('remove-guest-access');
                    }
                }.bind(this)
			);
		}
	},

	saveGuest: function() {

		if ($('save-guest-button')){
			$('save-guest-button').addEvent('click', 
				function(){
					this.updateGuestList('save-guest');
				}.bind(this)
			);
		}
	},
	
	editGuests: function() {
		
	    $ES('.guest-table').each( function(node) {
			var table = node;
			var trs = table.getElements("tr");
			trs.each( function(trnode){
                if( trnode.id != null && trnode.id != "" ){
                    trnode.addEvent('click', function(ev){
                        var tr = trnode;
                        this.resetSelectedRows();
                        this.updateRow(tr);
                        this.getGuest(splitId(tr.id));
                    }.bind(this));
                }
			}.bind(this));
	    }.bind(this));
	},
	
	updateRow: function(item) {
		var tr = item;
		tr.addClass("editing");
	},
	
	resetSelectedRows: function() {
	    $ES('.guest-table').each( function(node) {
			var table = node;
			var trs = table.getElements("tr");
			trs.each( function(i){
				i.removeClass("editing");
				i.addClass("guest-edit");
			})
	    }.bind(this));
	},
	
	newGuest: function() {
		new Ajax('/account/new_guest',{
			method:'post',
            data: { 'new_guest': 'true' },
			onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript){
                $('col1').innerHTML = responseTree;
				this.inviteNewGuest();
			        this.init_save_buttons();
				this.editGuests();
				this.resetSelectedRows();
			}.bind(this) 
		}).request();
	},
	
	updateGuestList: function(guest_action_type) {
		$('guest-action-type').value = guest_action_type; 
		if( 'new-guest' == guest_action_type  ) {
            $('guest_form_id').set('send', {
                onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript){
                    $('col2').innerHTML = responseTree;
                    this.newGuest();
                    this.editGuests();
		    if( $('guest_is_recipient') && $('guest_is_recipient').value == 'true' ) {
                      $('attribute_types_3').value = $('relation').value;
                      redoSearch();
                    }
                }.bind(this)
            });
            $('guest_form_id').send();
		} else {
            $('guest_form_id').set('send', {
                onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript){
                    $('col2').innerHTML = responseTree;
                    this.newGuest();
		    if( $('guest_is_recipient') && $('guest_is_recipient').value == 'true' ) {
                      $('attribute_types_3').value = $('relation').value;
                      redoSearch();
                    }
                }.bind(this)
            });
            $('guest_form_id').send();
		}
	},
	
	getGuest: function(guest_id) {
		new Ajax('/account/edit_guest',{
			method:'post',
			data:{id:guest_id},
			onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript){
                $('col1').innerHTML = responseTree;
				this.cancelGuest();
				this.init_save_buttons();
			}.bind(this) 
		}).request();
	}

});
Guests.implement(new Options);

function init_guests(){
	
	guests = new Guests();
}

/*

function initEditGuests(){
	$ES("guest-edit").each( function(i){
		i.addEvent("click", function(){
			getGuest(splitId( i.getParent().getParent().getParent() ));
			updateRow(i);
			alert('now');
		}.bind(i));
	});
}
window.addEvent("domready",initEditGuests);

function getGuest(guest_id)
{
	//onSuccess:???
	//alert(this);
	new Ajax('/account/edit_guest',{
		method:'post',
		data:{id:guest_id},
		update:$('col1'),
		allowScripts:true
	}).request();
}

function updateRow(item){
	var tr = item.getParent().getParent().getParent()
	var table = item.getParent().getParent().getParent().getParent();
	var trs = table.getElements("tr");
	trs.each( function(i){
		i.removeClass("editing");
	})
	item.getParent().getParent().getParent().addClass("editing");
}

function getRecipient(guest_id)
{
	if (! guest_id) {
		new Ajax('/account/new_guest',{
			method:'post',
			data:{recipient:"yes"},
			update:$('col1'),
			allowScripts:true
			}).request();
	} else {
		new Ajax('/account/edit_guest',{
			method:'post',
			data:{id:guest_id, recipient:"yes"},
			update:$('col1'),
			allowScripts:true
			}).request();
	}
	
}

function newGuest()
{
	new Ajax('/account/new_guest',{
		method:'post',
		update:$('col1'),
		allowScripts:true
		}).request();
}

function updateGuestList(guest_id)
{
	if( '' != guest_id  ) {
		$('guest_form_id').send({
			update: $('col2'),
			onSuccess: function (){ getGuest(guest_id); }});
	} else {
		$('guest_form_id').send({
			update: $('col2'),
			onSuccess: newGuest});
	}
}
*/
