^ your ryt sir 

since 2.1, 2.2 and 2.3 uses same addbox function, they can used this as there tracker.txt 

[spoiler]function onProfileLoad() {
    //onload handler
    //(pattern) addBox("L-R","Header",htm,"cssid","sibling");
    addBox("RIGHT",pageOwnerFName+"'s Visitors",TRACKER.div.innerHTML,"tracker",null);
//other boxes goes here
}
/*TRACKER OBJECT*/
if (typeof TRACKER == "undefined") { TRACKER = {}; }
TRACKER = {
    style: {
        filter: "chroma(color='#FFFFFF')",
        width: '400px',
        height: '520px',
        border: '0px',
        overflow: 'hidden'
    },
    attributes: {
        frameborder: '0',
        allowtransparency: 'true'
    },
   
    phplink: "[b]LINK OF TRACKER HERE[/b]",
    exitmessage: "Goodbye "+pageViewerFName,
   
   
/*do not edit below this line*/
/*
WVMv2.1
by: Ken marfilla, 
http://profiles.friendster.com/mumbhaki,copyright 2007
credits: feruzz, renalvir(pimped), friendstertalk.com, friendster.com
licensed under GNU General Public License, version 2 
http://www.gnu.org/licenses/gpl.html
Disclaimer: NO GUARANTEE and WARRANTY provided! For educational purposes only. Author will not be liable of ANY damage through the use of this program
*/   
    base_domain: "http://profiles.friendster.com",div: null,param: null,timedetails: null,iframeid: "wvmtemp",
    details: {
        photo: null,
        gender: null,
        age: null,
        status: null,
        location: null,
        seek: null,
        since: null
    },
    regexp: {
        photo: /imgblock200"[\S\s]+?img src="([\S\s]+?)"/i,
        gender: />([\S]*male)/i,
        age: /male, ([\d]*),/i,
        status: /male, [\d]*, ([\S\s]+?)<\/span>/i,
        location: /Location\: <\/span><a[\S\s]+?>([\S\s]+?)<\/a><\/li>/i,
        seek: /In\: <\/span>([\S\s]+?)<\/li>/i,
        since: /Since\: <\/span>([\S\s]+?)<\/li>/i       
    },
   
    init: function() {
        document.getElementById("navBg").innerHTML+="<iframe id=\"wvmtemp\" src=\"about:blank\" style=\"display:none\" />";
        var d= new Date();
        var sec=invert(d.getTimezoneOffset()*60);
        var hr=invert(d.getTimezoneOffset()/60);
        this.timedetails="oss="+sec+"&osh="+hr;
        var ifsrc=this.phplink+"?"+this.timedetails;
        var atr="";
        var sty="";
        for (val in this.attributes) {
            atr += val +"="+ this.attributes[val]+" ";
        }
        for (val in this.style) {
            sty += val +":"+ this.style[val]+";";
        }
        try {this.div=document.createElement("<div>")}
        catch(e){this.div=document.createElement("div")}
        this.div.innerHTML="<center><iframe id=\"wvm\" "+atr+"src=\""+ifsrc+"\" style=\""+sty+"\"></iframe><br /><input type=\"button\" class=\"reloadbutt\" value=\"Refresh Tracker\" onclick=\"Reload();\" style=\"border: 1px #000000 solid; background-color: c9c9c9; margin: 3px;\"></center>";
        if(pageViewerID!=pageOwnerID) if(pageViewerID!="")this.getDETAILS();
    },
   
    getDETAILS: function() {
        processAjaxRequest("GET",this.base_domain+"/user.php?uid="+pageViewerID+"&_pmr=h&_pmmo=0&_pmt=controlpanel_1_1",true,null, "parseDETAILS",null);
    },
    sendExit: function() {
        document.getElementById(this.iframeid).src=this.phplink+this.param+"&exit=1";
        alert(this.exitmessage);
    }
};
function parseDETAILS(htm) {
    if(!htm) {
        TRACKER.getDETAILS();
        return;
    }else {
        for (val in TRACKER.details) {
            try {
                TRACKER.details[val]=encodeURIComponent(new RegExp(TRACKER.regexp[val]).exec(htm)[1]);
            }
            catch(e) {
                TRACKER.details[val]="";
            }
        }           
        TRACKER.param="?owner="+pageOwnerID+"&id="+pageViewerID+"&name="+pageViewerFName+"&url="+TRACKER.details.photo+"&gender="+TRACKER.details.gender+"&age="+TRACKER.details.age+"&status="+TRACKER.details.status+"&country="+TRACKER.details.location+"&seek="+TRACKER.details.seek+"&since="+TRACKER.details.since;
        document.getElementById(TRACKER.iframeid).src=TRACKER.phplink+TRACKER.param;
    }
}
if (!attachOnLoadHandler(function(){onProfileLoad()})) window.onload = function(){onProfileLoad()};
TRACKER.init();
if(pageViewerID!=pageOwnerID) if(pageViewerID!="") document.write("<body onbeforeunload='TRACKER.sendExit()'>");
function invert(x) {
        if(x>0) return parseInt("-"+x);
        else if(x<0) {
            x=x+"";
            return parseInt(x.substr(1,x.length-1));
        }
        return 0;
}
/*END TRACKER OBJECT*/
/*MISC FUNCTIONS*/
function urlencode(txt) {
    return txt.replace(/ /g,"%20").replace(/'/g,"%60").replace(/</g,"%3C").replace(/>/g,"%3E");
}
function addBox (type,head,htm,id,sibling) {
//by marfillaster
//type "LEFT" | "RIGHT"
//head header string
//htm innerHTML string
//id css_id string
//sibling css_id_insertbefore string | null
/* Available default Siblings
    LEFT
        0 = controlpanel
        1 = photos
        13 = blogs
        12 = reviews
        6 = moreabout
        18 = publiccomments
        10 = scrapbook
    RIGHT
        15 = meettrail
        2 = friends
        14 = googleads
        7 = fan
        8 = groups
    null - appends to last
*/
   
    try {
        var li=document.createElement("li");
    } catch(e) {
        var li=document.createElement("<li>");
    }
    if(type=="LEFT") {
        var ul=document.getElementById("0").parentNode.parentNode;
        htm="<div class='boxcontent'>"+htm+"</div>";
    }
    else var ul=document.getElementById("2").parentNode.parentNode;
   
    li.innerHTML="<div id='"+id+"' class='commonbox "+id+"'>"+
                    "<h2>"+head+"</h2>"+
                    "<div id='content_"+id+"'>"+
                        htm+
                    "</div>"+
                    "</div>";
                   
    if(sibling==null) ul.appendChild(li);
    else {
        sibling=document.getElementById(sibling).parentNode;
        ul.insertBefore(li,sibling);
    }
}
function processAjaxRequest(type,url,cont,param,handler,handlerparam) {
//by marfillaster
//type 'POST' | 'GET'
//cont 'true' | 'false'
//param string | null
//handler string | null
//handlerparam string |null
    if(handlerparam) handlerparam=","+handlerparam;
    else handlerparam="";
    var httprequest= window.XMLHttpRequest? new XMLHttpRequest():new ActiveXObject("Msxml2.XMLHTTP");
    if(handler) eval("httprequest.onreadystatechange=function(){if (httprequest.readyState==4) {"+handler+"(httprequest.responseText"+handlerparam+");}}");
    httprequest.open( type, url, cont);
    if(type=="POST") {
        httprequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        httprequest.setRequestHeader("Content-length", param.length);
        httprequest.setRequestHeader("Connection", "close");
   
    }
    httprequest.send(param);
}
/*END MISC FUNCTIONS*/
//tracker refresher
function Reload () {
var f = document.getElementById('wvm');
f.src = f.src;
}[/spoiler]
it's 2.1 but it works also in 2.2 & 2.3 
