Event.addBehavior({
	// Grab info from the secret form the the JS can build links with the right info.
	'form select[rel=permissions]': function() {  
		var permission_class = ""
		var link_text = ""
		switch (this.value) {
			case "1": permission_class = 'open_to_public'; link_text = 'Open to Public'; break;
			case "2": permission_class = 'only_my_friends'; link_text = 'Only my friends'; break;
			case "3": permission_class = 'no_one'; link_text = 'No One'; break;
			default: permission_class = '';
		}

		var modal_box_id = this.id + "_box"
		var modal_link_id = this.id + "_link"
		var modal_box = $div({id:modal_box_id} );
		
		var modal_link = $div( {}, $a({id:modal_link_id, href:"#"+modal_box_id},link_text) );
		
		modal_link.addClassName("permissions")
		modal_link.addClassName(permission_class)
		
		this.up().insertBefore(modal_link, this)
		this.up().insertBefore(modal_box, this)
		
		//Update the value so it is serialized correctly
		add_permission_link(modal_box, "open_to_public", "Open to Public", this, 1)
		add_permission_link(modal_box, "only_my_friends", "Only my friends", this, 2)
		add_permission_link(modal_box,"no_one", "No One", this, 3)

		new Control.Modal(modal_link_id,{
		     opacity: 0.5,
		     position: 'relative',
		     width: 126,
		     height: 62
		 });
		this.hide()
	}
	
	})
	
	function add_permission_link(modal_box_to_add_to, permission_class, permission_name, select_box_to_replace, value_of_permission)
	{
		var permisions_form = select_box_to_replace.form
		var original_value = select_box_to_replace.value
		
		select_box_to_replace.value = value_of_permission
		var link_parameters = permisions_form.getInputs('hidden','authenticity_token')
		link_parameters.push(select_box_to_replace)
		Form.serializeElements(link_parameters)
		
		//Control.Modal did not like it when you added a Remote.Link to the link.. adding an onlick here was the only way I could do it.
		// IE did not even respect the onclick- so.. we had to resort to putting it in the href...
		var permissions_remote_link = $a({href:'javascript:update_permission("'+
																					permisions_form.action+"?"+Form.serializeElements(link_parameters)+
																					'","'+permission_name+'","'+
																					 select_box_to_replace.name+'",'+ value_of_permission+',"'+ permission_class+'");'
																			},
																			permission_name)
		var div = $div({}, permissions_remote_link)
		div.addClassName("permissions")
		div.addClassName(permission_class)
		modal_box_to_add_to.appendChild(div)
		
		select_box_to_replace.value = original_value
		return div;
	}
	
	function update_permission(link_href, link_body, permission, new_value, permission_class) {
		new Ajax.Request(link_href, { method: 'put',
			//parameters: {permission: new_value},
 	      	//onLoading: function(){profile.getElementsBySelector('div.conditions div#loading').first().show();}.bind(profile),
			//onComplete: function(){profile.getElementsBySelector('div.conditions div#loading').first().hide();}.bind(profile),
			onSuccess: function(transport) {
				var select_box_id = permission.replace("[","_").replace("]","")
				//This is needed so that if the user goes back and forth between pages the correct permissions is displayed
				$(select_box_id).value = new_value
				var current_permission_link = $(select_box_id+"_link")
				current_permission_link.update(link_body)
				var permission_setting = current_permission_link.parentNode
				permission_setting.removeClassName("open_to_public");
				permission_setting.removeClassName("only_my_friends");
				permission_setting.removeClassName("no_one");
				permission_setting.addClassName(permission_class)
			}
		}
		)
		Control.Modal.close()
		//return false;
	}
	
