How do I add more waypoints to a moving platform script.

This is what im using for the script, but i would like to add more waypoints to one moving platform.

    var targetA : GameObject;
var targetB : GameObject;
var targetC : GameObject;

var speed : float = 0.1;

function FixedUpdate () {
    var weight = Mathf.Cos(Time.time * speed * 2 * Mathf.PI) * 0.5 + 0.5;
    transform.position = targetA.transform.position * weight
                        + targetB.transform.position * (1-weight);
}

Your position assignment can be made easier to read by using Vector3.Lerp since it does the same thing as your weight multiplication:

transform.position = Vector3.Lerp(targetB, TargetA, weight);
//for your consine stuff, flip source and destination since cos starts at 1

For going between multiple waypoints, you just need to consider what when your waypoints change and set up a nice transition between them. Something like:

var waypoints : GameObject[]; //waypoints go in the array
//(you could use transforms in stead of GameObjects)
var speed : float = 0.1; //Waypoints per second?

private var index = 0; //Which waypoints we're between
private var previous : GameObject; //previous waypoint
private var next : GameObject; //next waypoint
private var adjustment : float = 0; //waypointsPassed / speed
private var weight : float = 0; //weight

function FixedUpdate () {
    if(waypoints.length < 2) return; //Don't bother when there's nowhere to go

    previous = waypoints[index]; //Where we last were
    if(index != waypoints.length - 1) next = waypoints[index+1]; //Where we're going
    else next = waypoints[0]; //go back to the start

    //that cosine stuff is kind of nonsense so I recommend just using smoothstep
    //but if you must, you could swap source and destination or do angle addition etc.
    weight = (time - adjustment) * 0.1;
    if(weight > 1) { //We've just passed a waypoint
        weight -= 1; //cut back the weight
        adjustment += 1 / speed; //adjust the time
        if(index < waypoints.length - 1) index++; //we're at  the next point
        else index = 0; //we're back to the start
    }

    transform.position = Vector3.Lerp(previous, next, Mathf.SmoothStep(0, 1, weight));
}