How to set-up a Door that locks behind you after walk in to a room, but need a iPhone as a key to get out?

Hey Guys,
I need some help I set up a level to get inside the bedroom, the plan was, I already set up the some javascripts and the animation for the door to be closed (but don’t know how to reverse it"

  1. Player gets in a bedroom, but the door shuts behind him, and he’s trapped
  2. Player waits for 20 seconds, the Iphone rings
  3. The bedroom doors opens as the player picks up the Iphone into inventory,
  4. Then heads out of the bedroom then gets into the lab door that opened as well

I set the animation from DoorJoint, and the BedroomDoor as a child of DoorJoint.

JavaScript for PlayerInventory.js

#pragma strict
//Inventory List
public var hasIphone : boolean;

JavaScript for DoorCloses.js

var CloseDoorClip : AnimationClip;

private var playerInventory : PlayerInventory;
private var count : int;

function OnTriggerEnter (player : Collider) {
  if(player.tag=="Player")
  GameObject.Find("DoorJoint").GetComponent.<Animation>().Play("BedroomDoorClose");
}
function OnTriggerExit (player : Collider)
{
   if(player != null && player.HasIphone()) {
   GameObject.Find("DoorJoint").GetComponent.<Animation>().Play("BedroomDoorClose");
        }
}

JavaScript for Tags.js

#pragma strict

//List of tag strings for the game that will store data
public static var player : String = "Player";
public static var gameController : String = "Game Controller";
public static var enemy : String = "Enemy";
public static var iphone : String = "Iphone";
public static var doorjoint : String = "DoorJoint";

JavaScript for IphonePickup.js

#pragma strict

public var keyGrab : AudioClip;                         // Audioclip to play when the key is picked up.


private var player : GameObject;                        // Reference to the player.
private var playerInventory : PlayerInventory;      // Reference to the player's inventory.


function Awake ()
{
    // Setting up the references.
    player = GameObject.FindGameObjectWithTag(Tags.player);
    playerInventory = player.GetComponent(PlayerInventory);
}


function OnTriggerEnter (other : Collider)
{
    // If the colliding gameobject is the player...
    if(gameObject.tag == "Player");
    { 
        // ... the player has a key ...
        playerInventory.hasIphone = true;
        
        // ... and destroy this gameobject.
        Destroy(gameObject);
    }
}

If you only need to reverse the animation, just change the animation speed to -1

var doorJointAnimation = GameObject.Find("DoorJoint").GetComponent.<Animation>();
doorJointAnimation["BedroomDoorClose"].speed = -1.0f;
doorJointAnimation.Play("BedroomDoorClose");

Regards