Switching between cameras

I am trying to create an environment that has several cameras scattered around the scene. I am currently using this simple script just to test out the act of switching cameras :

function OnTriggerEnter (hit : Collider)
{

    if(hit.gameObject.tag == "Player")
    {
        Debug.Log("dfsd");
    GameObject.Find("MainCamera").GetComponent("Camera").active = false;
    GameObject.Find("SideCamera").GetComponent("Camera").active = true;
    }

}

I am using a trigger to trigger the event but this is obviously for a very small scale project. How can i make it work where a script can cycle through all the cameras so that if the player enters a room, it changes the camera to that room...but when they enter into the hallway, it activates the previous camera and so on...???

all help would be greatly appreciated!

I found a script that works perfectly! It detects which camera is closest to the player...hope this helps anyone else that is looking for this

var multicam : Camera[];
static var Player: GameObject;
Player = GameObject.FindWithTag ("Player");

function Update () 
{
var minDistance: float = 5000;
var closest: int;

for (i = 0; i < multicam.Length; i++) 
{
var distance = Vector3.Distance(Player.transform.position, multicam*.transform.position);*
 *if (distance < minDistance)* 
 *{*
 *minDistance = distance;*
 *closest = i;*
 *//Debug.Log(closest);*
 *}*
 *for (cameras in multicam)*
 *{*
 *if (cameras !=multicam [closest])*
 *{*
 *cameras.enabled = false;*
 *cameras.GetComponent(AudioListener).enabled = false;*
 *}*
*}*
*multicam[closest].enabled = true;*
*multicam[closest].GetComponent(AudioListener).enabled = true;*
*}*
*}*
*```*

anyone know what i should attach this script too?