///////////////////////////////////////////////////////////////////////////
//  Comments for this code can be found in source control
//////////////////////////////////////////////////////////////////////////
function deleteUser(friendid, name, url){
	if ( confirm('Are you sure you want to delete ' + name + ' from your list of friends?') ) {
		location.href = url;
	}
}

var checkflag = "false";
function checkUncheckAll(field){
	if (checkflag == "false") {
		for (i = 0; i < field.length; i++) {
			field[i].checked = true;
		}
		field.checked = true;
		checkflag = "true";
	}else {
		for (i = 0; i < field.length; i++) {
			field[i].checked = false;
		}
		field.checked = false;
		checkflag = "false";
	}
}

function checkCountry(form){
	if(form.f_country.value != 'US'){
		form.f_region.disabled = true;
		form.f_region_other.disabled = false;
		form.f_region_other.value = '';
		form.f_region_other.focus();
	}else{
		form.f_region.disabled = false;
		form.f_postal_code.disabled = false;
		form.f_region_other.disabled = true;
		form.f_region_other.value = '(NA)';
	}
}

function registerEvent(object, event, cmd, append)
{
	if(arguments.length < 3) return alert("Invalid arguments. Please use the format \nregisterEvent(object, event, command, [append]).");
	if (typeof append != "boolean") append = true;

	var event = object + "." + event.toLowerCase();
	var objEvent = eval(event);

	var strEvent = (objEvent) ? objEvent.toString() : "";
	strEvent = strEvent.substring(strEvent.indexOf("{")+1, strEvent.lastIndexOf("}"));
	strEvent = (append) ? (strEvent + cmd) : (cmd + strEvent);
	strEvent += "\n";
	eval(event + " = new Function(strEvent)");
	return true;
}

function countCharacters(formName, elementName)
{
	var formElementString = "document." + formName + "." + elementName;
	var ID = formElementString + ".CharacterCount";

	if (!document.getElementById(ID)) document.write("<INPUT ID='" + ID + "' TYPE='TEXT' SIZE='4' onfocus='blur();'>");
	
	var functionString = "updateCountCharacters('" + formElementString + "');";
	
	registerEvent("window", "onload", "registerEvent(\"" + formElementString + "\", \"onkeydown\", \"" + functionString + "\", false);", false);
	registerEvent("window", "onload", "registerEvent(\"" + formElementString + "\", \"onkeyup\", \"" + functionString + "\", false);", false);
	registerEvent("window", "onload", functionString, false);
	setInterval(functionString, 1000);
}

function updateCountCharacters(formElementString)
{
	var formElement = eval(formElementString);
	var ID = formElementString + ".CharacterCount";
	var formElementValue = formElement.value.replace(/\n/g, '\r\n').replace(/\r\r/g, '\r');
	document.getElementById(ID).value = parseInt(formElementValue.length, 10);
}

function generalizeDomain()
{
	var domainArray = document.domain.split(".");
	var domainArrayLength = domainArray.length;
	if (domainArrayLength >= 2) document.domain = domainArray[domainArrayLength - 2] + "." + domainArray[domainArrayLength - 1];
}
if ( (QueryString('fuseaction') != 'blog.create') && (QueryString('fuseaction') != 'blog.edit') && (QueryString('fuseaction') != 'blog.commentreply') && (QueryString('fuseaction') != 'blog.comment') )
	generalizeDomain();

function openWin( windowURL, windowName, windowFeatures ) { 
	return window.open( windowURL, windowName, windowFeatures ) ;
}

function QueryString_Parse() {
	QueryString.keys = new Array();
	QueryString.values = new Array();
	var query = window.location.search.substring(1);
	var pairs = query.split("&");
	for (var i = 0; i < pairs.length; i++) {
		var pos = pairs[i].indexOf('=');
		if (pos >= 0) {
			var argname = pairs[i].substring(0,pos);
			var value = pairs[i].substring(pos+1);
			QueryString.keys[QueryString.keys.length] = argname;
			QueryString.values[QueryString.values.length] = value;
		}
	}
}

function QueryString(key) {
	QueryString_Parse();
	var value = null;
	for (var i = 0; i < QueryString.keys.length; i++) {
		if (QueryString.keys[i] == key) {
			value = QueryString.values[i].toLowerCase();
			break;
		}
	}
	return value;
}

function wrapFF(which, atlen) {
	if (navigator.userAgent.toLowerCase().indexOf("firefox") != -1) {
		var start = which.innerHTML;
		var finish = start.substr(0,1);
		var mini = "";
		var inTag = 0;
		var current = 0;
		var next = "";
		while (start.length) {
			mini = start.substr(1,1);
			finish = finish + mini;
			start = start.substring(1, start.length);
			switch (mini) {
				case " ":
					current = 0;
				break;
				case "<":
					inTag = 1;
					current = 0;
				break;
				case ">":
					inTag = 0;
					current = 0;
				break;
				default:
					if (!inTag) {
						current = current + 1;
						next = start.substring(0,Math.min(3,start.length));
						if (current == atlen && (next.indexOf("<") == -1) && (next.indexOf(">") == -1) && (next.indexOf(" ") == -1) ) {
							finish = finish + " ";
							current = 0;
						}
					}
				}
		}
		which.innerHTML = finish;
	}
}

function stripTicks(str)
{
	var s = str;
	while(s.indexOf("'") != -1)
	s = s.replace("'","");
	return s;
}

function random()
{
	randomseed = (randomseed * randoma + randomc) % randomm;
	return randomseed / randomm;
}

var randomm = 714025;
var randoma = 4096;
var randomc = 150889;
var acnt	= 1;


randomseed = Date.parse(new Date()); 
randomNumber = random() + "";
if (typeof OASHost == "undefined") OASHost = "www";


function get_url() { //el=str, case_sensitive=bool
	var rs="i";
	var urls = new String(document.URL);
	urls = stripTicks(urls);

	var el = "friendID";
	var re = new RegExp( "\\?[\\w\\W]*"+ el +"=([^\\&\\?#]*)", rs);
	var arr = re.exec(urls);
if (!arr) {
	elg = "groupID";
	var red = new RegExp( "\\?[\\w\\W]*"+ elg +"=([^\\&\\?#]*)", rs);
	arr = red.exec(urls);
	}
	if(arr && arr.length>1){	
	return arr[1];
	}else{ 
	var expr = /\/([\w]*)$/i;
	var arr = expr.exec(urls);
		if(arr && arr.length>1)
			return arr[1].toLowerCase();
		else 
			return '';
	}
}

function oas_ad()
{
	
	var argv = oas_ad.arguments;

	var friendID = 0;
	var AdTopicID = 0;
	page = argv[0];
	pos =argv[1];
	

	if(argv.length ==3){
		AdTopicID = argv[2];
	}
	
	subd = 'deSB';

	re_ex = /,/;
	
	temp_flag = 0;
	if(re_ex.test(page)){
		site_arr = page.split(",");
		page = site_arr[1];
	}
	
	switch (pos)
	{
		case 'Frame1':
			friendID = get_url();
			var pxsize = 'width=728 height=90';
			pos = 'leaderboard';
			subd = 'deLB';
			break;
		case 'Top':
			var pxsize = 'width=468 height=60';
			pos = 'banner';
			subd = 'deBR';
			break;
		case 'x08':
			var pxsize = 'width=430 height=600';
			pos = 'halfpage';
			subd = 'deHP';
			if (leaderboardRegion) leaderboardRegion.style.display ='none';
			break;
		case 'x14':
			var pxsize = 'width=300 height=300';
			pos = 'mrec';
			subd = 'deMR';
			break;
		case 'x15':
			var pxsize = 'width=160 height=600';
			pos = 'skyscraper';
			subd = 'deSK';
			break;
		case 'x54': //feature profile
			var pxsize = 'width=225 height=170';
			pos = 'profile';
			subd = 'deFP';
			break;
		case 'x54-1': //feature profile small
			var pxsize = 'width=200 height=170';
			pos = 'profile';
			subd = 'uhpfp';
			break;
		case 'x55': //feature group
			var pxsize = 'width=640 height=280';
			pos = 'group';
			subd = 'deFG';
			break;
		case 'x56':
			var pxsize = 'width=460 height=140';
			break;
		case 'x69': // This was added for the anchor man inbox add.
			var pxsize = 'width=628 height=288';
			break;
		case 'x77':
			var pxsize = 'width=1 height=1';
			pos = '1x1';
			subd = 'deSB';
			break;
		case 'x78': // login page
			var pxsize = 'width=750 height=600';
			pos = 'interstitial';
			subd = 'deSB';
			break;
		case 'x85':
			var pxsize = 'width=300 height=300';
			break;
		case 'x86':
			var pxsize = 'width=465 height=360';
			break;
		case 'x87':
			var pxsize = 'width=463 height=400';
			break;
		case 'x88':
			var pxsize = 'width=440 height=140';
			pos = 'featuredband';
			subd = 'deFB';
			break;
		case 'fspecial':
			var pxsize = 'width=440 height=140';
			pos = 'fspecial';
			subd = 'deSB';
			break;
		case 'featblg':
			var pxsize = 'width=500 height=100';
			pos = 'featblg';
			subd = 'deSB';
			break;
		case 'uhpfp': //uhp feature profile
			var pxsize = 'width=200 height=170';
			pos = 'uhpfp';
			subd = 'deFP';
			break;
		case 'west':
			var pxsize = 'width=440 height=160';
			pos = 'west';
			subd = 'deWB';
			break;
		case 'east':
			var pxsize = 'width=300 height=100';
			pos = 'east';
			subd = 'deEB';
			break;
		case 'featvid':
			var pxsize = 'width=300 height=170';
			pos = 'featvid';
			subd = 'deFV';
			break;
		case 'movpro':
			var pxsize = 'width=300 height=250';
			pos = 'movpro';
			subd = 'deMP';
			break;
		case 'fmovl':
			var pxsize = 'width=229 height=216';
			pos = 'fmovl';
			subd = 'deFML';
			break;
		case 'fmovr':
			var pxsize = 'width=229 height=216';
			pos = 'fmovr';
			subd = 'deFMR';
			break;
		case 'vrec':
			var pxsize = 'width=240 height=400';
			pos = 'vrec';
			subd = 'deVR';
			break;
		default:
			var pxsize = 'width=468 height=60';
			pos = 'test';
			break;
	}

	var rand = randomNumber.substring(2,11);
	
	if(friendID){
		friendID = "&friendid="+friendID;
	}
	
	if(AdTopicID){
		AdTopicID = "&category="+AdTopicID;
	}
	
	document.write("<IFRAME " + pxsize + " style=\"position:relative;z-index:10000\" MARGINWIDTH=0 MARGINHEIGHT=0 HSPACE=0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no src='http://"+subd+".myspace.com/html.ng/site=myspace&position="+pos+"&page="+page+"&rand="+rand+friendID+AdTopicID+"&acnt="+acnt+"'></iframe>");
	acnt = acnt + 1;

}

var up_bDoPresence = false; 
var up_iCheckSeconds = 10; 

var serverPath = "";

function up_launchChat(userID,roomID)
{
window.open( "http://chat.myspace.com/index.cfm?fuseaction=messenger.chatroom&roomID="+roomID, "ICWindow_ChatRoom"+userID+roomID, "status=1,toolbar=0,directories=0,menubar=0,location=0,scrollbars=0,resizable=1,width=800,height=600" );
}

function up_launchChatWithRoom(userID,roomID, subroomID)
{
window.open( "http://chat.myspace.com/index.cfm?fuseaction=messenger.chatroom&roomID="+roomID+"&subroomID="+subroomID, "ICWindow_ChatRoom"+userID+roomID, "status=1,toolbar=0,directories=0,menubar=0,location=0,scrollbars=0,resizable=1,width=800,height=600" );
}

function up_launchIC( userID, destinationUserID, destinationName, sender, profile, gender, age, loc, image )
{		
	up_localUserID = userID;
	var popupWindowTest = null;
	userProfile = profile;
	userGender = gender;
	userAge = age;
	userLocation = loc;
	userImage = image;
	if (sender != 1) {
		popupWindowTest = window.open( "http://chat.myspace.com/index.cfm?fuseaction=messenger&strDestinationUserID=" + destinationUserID + "&sendType=" + sender, "ICWindow_" + up_replaceAlpha(userID) + "_" + up_replaceAlpha(destinationUserID), "status=1,toolbar=0,directories=0,menubar=0,location=0,scrollbars=0,resizable=0,width=360,height=362" );
		popupWindowTest.status = "Myspace.com" 
	}
	
	if( popupWindowTest == null )
	{
		up_showICNotify( userID, destinationUserID, destinationName );
	}
	else
	{
		up_clearICNotify( destinationUserID, false ); 
	}
}

function up_showICNotify( userID, destinationUserID, destinationName )
{
	up_localUserID = userID;
	
	var bAdd = true;
	for( var i = 0 ; i < up_launchArray.length ; i++ )
	{
		if( up_launchArray[i].destID == destinationUserID )
		{
			if( destinationName != undefined )
			{
				up_launchArray[i].destName = "<strong>" + destinationName + "</strong>";
			}
			bAdd = false;
		}
	}
	
	destinationName = destinationName == undefined ? "A website member" : "<strong>" + destinationName + "</strong>";
	
	if( bAdd )
	{
		var userObj = new Object();
		userObj.destID = destinationUserID;
		userObj.destName = destinationName;
		up_launchArray.push( userObj );
	}
	
	up_showNotification();
}

function up_clearICNotify( clearDestID, bForceClear )
{
	var tempArray = up_launchArray;
	up_launchArray = new Array();
	
	var bRemoved = false;
	
	while( tempArray.length > 0 )
	{
		var userObj = tempArray.pop();
		
		if( userObj.destID != clearDestID )
		{
			up_launchArray.push( userObj );
		}
		else
		{
			bRemoved = true;
		}
	}
	
	if( bRemoved || !bForceClear )
	{	
		frames['up_icLauncher'].location.href = "http://chat.myspace.com/index.cfm?fuseaction=messenger.icOpened&destinationUserID=" + clearDestID + "&doPresence=" + ( up_bDoPresence && !up_is_win_ie ? "true" : "false" ) + "&forceClear=" + ( bForceClear ? "true" : "false" ) + "&iRefreshInterval=" + up_iCheckSeconds + "&refresh=" + Math.floor( Math.random() * 100000000000 );
	}
	
	up_showNotification();
}

function up_showNotification()
{
	var elem = document.getElementById( "up_icNotifications" );
	
	if( up_launchArray.length > 0 )
	{
		if( up_displayedNotificationID != up_launchArray[0].destID )
		{
			elem.innerHTML = '<div class="up_mbox"><div class="up_mbox1"><div class="up_mbox2"></div></div><div class="up_mboxgut" style="text-align:center">' + ( up_is_win_ie ? '' : '<table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td align="center">' ) + '<table border="0" cellpadding="1" cellspacing="5"><tr><td nowrap align="center"><strong style="font-size:larger;">Incoming IM Message</strong></td><td width="1" bgcolor="#000000" rowspan="3"></td><td><b>Gender:</b> '+userGender+' <b>Age:</b> '+userAge+'</td><td width="1" bgcolor="#000000" rowspan="3"><td rowspan="3"><img src="'+userImage+'" border="0" height="75"></tr><tr><td align="center">' + up_launchArray[0].destName + ' wants to IM you.<br>Would you like to accept?</td><td><b>Location:</b> '+userLocation+'</td></tr><tr><td nowrap align="center"><a style="font-size:larger;" href="" onClick="javascript: up_launchIC( \'' + up_localUserID + '\', \'' + up_launchArray[0].destID + '\', \'\', \'3\' ); return false;">Yes</a>&nbsp;|&nbsp;<a style="font-size:larger;" href="" onClick="javascript: up_clearICNotify( \'' + up_launchArray[0].destID + '\', true ); return false;">No</a></td><td nowrap align="center"><a style="font-size:larger;" href="'+userProfile+'" target="_blank">View Profile</a></td></tr></table>' + ( up_is_win_ie ? '' : '</td></tr></table>' ) + '</div><div class="up_mbox3"><div class="up_mbox4"></div></div></div>';
			up_displayedNotificationID = up_launchArray[0].destID;
			up_animate( 130 );
		}
	}
	else
	{
		up_displayedNotificationID = "";
		up_animate( -200 );
	}
}

function up_animate( iWhereTo )
{
	if( up_iDivCurrentY != iWhereTo )
	{
		up_iDivCurrentY += iWhereTo < up_iDivCurrentY ? -10 : 10;
		
		var elem = document.getElementById( "up_icNotifications" );
		elem.style.top = up_iDivCurrentY;
		elem.style.left = 200;		
		setTimeout( "up_animate(" + iWhereTo + ")", 33 );
	}
}

function up_replaceAlpha( strIn )
{
	var strOut = "";
	for( var i = 0 ; i < strIn.length ; i++ )
	{
		var cChar = strIn.charAt(i);
		if( ( cChar >= 'A' && cChar <= 'Z' )
			|| ( cChar >= 'a' && cChar <= 'z' )
			|| ( cChar >= '0' && cChar <= '9' ) )
		{
			strOut += cChar;
		}
		else
		{
			strOut += "_";
		}
	}
	
	return strOut;
}

function up_checkIC()
{
	if( up_is_win_ie )
	{
		up_icCheckImage = new Image();
		up_icCheckImage.onLoad = up_onImageLoad();
		up_icCheckImage.src = serverPath+"win_ie_pd.cfm?refresh=" + Math.floor( Math.random() * 100000000000 );
	}
	else
	{
		frames['up_icLauncher'].location.href = serverPath+"icLauncher.cfm?iRefreshInterval=" + up_iCheckSeconds + "&refresh=" + Math.floor( Math.random() * 100000000000 );
	}
}

function up_onImageLoad()
{
	clearTimeout( up_timeoutID );
	
	if (!up_icCheckImage.complete)
	{
		up_timeoutID = setTimeout("up_onImageLoad()", 250);
	}
	else
	{
		if( up_icCheckImage.height == 2 )
		{
			frames['up_icLauncher'].location.href = serverPath+"icLauncher.cfm?iRefreshInterval=0&refresh=" + Math.floor( Math.random() * 100000000000 );
		}
		else
		{
			//alert( "Nothing to launch" );
		}
		
		up_timeoutID = setTimeout("up_checkIC()", 1000 * up_iCheckSeconds);
	}
}


document.write( '<style type="text/css">' );
document.write( '.up_mbox { background: #ffffff url(http://x.myspace.com/images/userplane/fbox.gif) repeat-y top right; border: 0; margin: 2px 0 6px 0; padding: 0; }' );
document.write( '.up_mbox1 { background: url(http://x.myspace.com/images/userplane/fbox1.gif) no-repeat top right; height: 8px; font: normal 0px/0px Sans-serif; margin: 0; padding: 0; }' );
document.write( '.up_mbox2 { display: block; background: url(http://x.myspace.com/images/userplane/fbox2.gif) no-repeat top left; height: 8px; width: 8px; font: normal 0px/0px Sans-serif; margin: 0; padding: 0; }' );
document.write( '.up_mbox3 { background: url(http://x.myspace.com/images/userplane/fbox3.gif) no-repeat bottom right; height: 8px; font: normal 0px/0px Sans-serif; margin: 0; padding: 0; }' );
document.write( '.up_mbox4 { display: block; background: url(http://x.myspace.com/images/userplane/fbox4.gif) no-repeat bottom left; height: 8px; width: 8px; font: normal 0px/0px Sans-serif; margin: 0; padding: 0; }' );
document.write( '.up_mboxgut { background: url(http://x.myspace.com/images/userplane/fboxgut.gif) repeat-y top left; font: 11px/18px Verdana, Geneva, Arial, Helvetica, Helve, Sans-serif; margin: 0; padding: 0 10px 0 10px; word-wrap: break-word; }' );
document.write( '</style>' );
document.write( '<iframe name="up_icLauncher" id="up_icLauncher" style="width:0px; height:0px; border: 1px" src=""></iframe>' );
document.write( '<div id="up_icNotifications" style="position:absolute; width:550px; z-index:9999; left: 30px; top: -200px;"></div>' );
var up_iDivCurrentY = -200;
var up_launchArray = new Array();
var up_localUserID = "";
var up_displayedNotificationID = "";

var up_icCheckImage = null;
var up_timeoutID = null;

// determine if is Windows IE (up_is_win_ie)
var up_agt 			= navigator.userAgent.toLowerCase();
var up_appVer 		= navigator.appVersion.toLowerCase();
var up_is_mac 		= up_agt.indexOf('mac') != -1;
var up_is_safari 	= up_agt.indexOf('safari') != -1 && up_is_mac;
var up_is_khtml  	= up_is_safari || up_agt.indexOf('konqueror') != -1;
var up_is_ie  	 	= up_appVer.indexOf('msie') != -1 && up_agt.indexOf("opera") == -1 && !up_is_khtml;
var up_is_win   	= up_is_mac ? false : (up_agt.indexOf("win") != -1 || up_agt.indexOf("16bit") != -1);
var up_is_win_ie 	= up_is_win && up_is_ie; 

if( up_bDoPresence )
{
	up_checkIC();
}


function reverse(inputString)
{
	var outputString = "";
	for (var i = inputString.length - 1; i >= 0; i--) outputString += inputString.charAt(i);
	return outputString;
}

function left(inputString, n)
{
	if (inputString.length > n) return inputString.substring(0, n);
	else return inputString;
}

function right(inputString, n)
{
	if (inputString.length > n) return inputString.substring(inputString.length - n);
	else return inputString;
}

function padLeft (inputString, stringLength, padCharacter)
{
	var outputString = inputString;
	var c = padCharacter.substring(0, 1); 
	while (outputString.length < stringLength) outputString = c + outputString;
	return outputString;
};

function padRight(inputString, stringLength, padCharacter)
{
	var outputString = inputString;
	var c = padCharacter.substring(0, 1); 
	while (outputString.length < stringLength) outputString = outputString + c;
	return new String(outputString);
};

function wddxSerializer_serializeValue(obj)
{
	var bSuccess = true;
	var val;

	if (obj == null)
	{
		this.write("<null/>");
	}
	else if (typeof(val = obj.valueOf()) == "string")
	{
		this.serializeString(val);
	}
	else if (typeof(val = obj.valueOf()) == "number")
	{
		if (
			typeof(obj.getTimezoneOffset) == "function" &&
			typeof(obj.toGMTString) == "function")
		{
			this.write("<dateTime>" + 
				(obj.getYear() < 1000 ? 1900+obj.getYear() : obj.getYear()) + "-" + (obj.getMonth() + 1) + "-" + obj.getDate() +
				"T" + obj.getHours() + ":" + obj.getMinutes() + ":" + obj.getSeconds());
			if (this.useTimezoneInfo)
			{
				this.write(this.timezoneString);
			}
			this.write("</dateTime>");
		}
		else
		{
			this.write("<number>" + val + "</number>");
		}
	}
	else if (typeof(val = obj.valueOf()) == "boolean")
	{
		this.write("<boolean value='" + val + "'/>");
	}
	else if (typeof(obj) == "object")
	{
		if (typeof(obj.wddxSerialize) == "function")
		{
			bSuccess = obj.wddxSerialize(this);
		}
		else if (
			typeof(obj.join) == "function" &&
			typeof(obj.reverse) == "function" &&
			typeof(obj.sort) == "function" &&
			typeof(obj.length) == "number")
		{
			this.write("<array length='" + obj.length + "'>");
			for (var i = 0; bSuccess && i < obj.length; ++i)
			{
				bSuccess = this.serializeValue(obj[i]);
			}
			this.write("</array>");
		}
		else
		{

			if (typeof(obj.wddxSerializationType) == 'string')
			{
				this.write('<struct type="'+ obj.wddxSerializationType +'">')
			}
			else
			{
				this.write("<struct>");
			}
						
			for (var prop in obj)
			{
				if (prop != 'wddxSerializationType')
				{
					bSuccess = this.serializeVariable(prop, obj[prop]);
					if (! bSuccess)
					{
						break;
					}
				}
			}
			
			this.write("</struct>");
		}
	}
	else
	{
		bSuccess = false;
	}
	return bSuccess;
}

function wddxSerializer_serializeAttr(s)
{
	for (var i = 0; i < s.length; ++i)
	{
		this.write(this.at[s.charAt(i)]);
	}
}

function wddxSerializer_serializeAttrOld(s)
{
	this.write(s);
}

function wddxSerializer_serializeString(s)
{
	this.write("<string>");
	for (var i = 0; i < s.length; ++i)
	{
		this.write(this.et[s.charAt(i)]);
	}
	this.write("</string>");
}

function wddxSerializer_serializeStringOld(s)
{
	this.write("<string><![CDATA[");
	
	pos = s.indexOf("]]>");
	if (pos != -1)
	{
		startPos = 0;
		while (pos != -1)
		{
			this.write(s.substring(startPos, pos) + "]]>]]&gt;<![CDATA[");
			
			startPos = pos + 3;
			if (startPos < s.length)
			{
				pos = s.indexOf("]]>", startPos);
			}
			else
			{
				pos = -1;
			}
		}
		this.write(s.substring(startPos, s.length));
	}
	else
	{
		this.write(s);
	}
			
	this.write("]]></string>");
}

function wddxSerializer_serializeVariable(name, obj)
{
	var bSuccess = true;
	
	if (typeof(obj) != "function")
	{
		this.write("<var name='");
		this.preserveVarCase ? this.serializeAttr(name) : this.serializeAttr(name.toLowerCase());
		this.write("'>");

		bSuccess = this.serializeValue(obj);
		this.write("</var>");
	}

	return bSuccess;
}

function wddxSerializer_write(str)
{
	this.wddxPacket[this.wddxPacket.length] = str;
}

function wddxSerializer_writeOld(str)
{
	this.wddxPacket += str;
}

function wddxSerializer_initPacket()
{
	this.wddxPacket = new Array();
}
function wddxSerializer_initPacketOld()
{
	this.wddxPacket = "";
}

function wddxSerializer_extractPacket()
{
	return this.wddxPacket.join("");
}

function wddxSerializer_extractPacketOld()
{
	return this.wddxPacket;
}

function wddxSerializer_serialize(rootObj)
{
	this.initPacket();

	this.write("<wddxPacket version='1.0'><header/><data>");
	var bSuccess = this.serializeValue(rootObj);
	this.write("</data></wddxPacket>");

	if (bSuccess)
	{
		return this.extractPacket();
	}
	else
	{	
		return null;
	}
}

function WddxSerializer()
{
	if (navigator.appVersion != "" && navigator.appVersion.indexOf("MSIE 3.") == -1)
	{
		var et = new Array();
		var n2c = new Array();
		var c2n = new Array();
		var at = new Array();

		for (var i = 0; i < 256; ++i)
		{
			var d1 = Math.floor(i/64);
			var d2 = Math.floor((i%64)/8);
			var d3 = i%8;
			var c = eval("\"\\" + d1.toString(10) + d2.toString(10) + d3.toString(10) + "\"");
			n2c[i] = c;
			c2n[c] = i; 
			if (i < 32 && i != 9 && i != 10 && i != 13)
			{
				var hex = i.toString(16);
				if (hex.length == 1)
				{
					hex = "0" + hex;
				}

				et[n2c[i]] = "<char code='" + hex + "'/>";
				at[n2c[i]] = "";

			}
			else if (i < 128)
			{
				et[n2c[i]] = n2c[i];
				at[n2c[i]] = n2c[i];
			}
			else
			{
				et[n2c[i]] = "&#x" + i.toString(16) + ";";
				at[n2c[i]] = "&#x" + i.toString(16) + ";";
			}
		}
		et["<"] = "&lt;";
		et[">"] = "&gt;";
		et["&"] = "&amp;";

		at["<"] = "&lt;";
		at[">"] = "&gt;";
		at["&"] = "&amp;";
		at["'"] = "&apos;";
		at["\""] = "&quot;";

		this.n2c = n2c;
		this.c2n = c2n;
		this.et = et;    
		this.at = at;
		
		this.serializeString = wddxSerializer_serializeString;
		this.serializeAttr = wddxSerializer_serializeAttr;
		this.write = wddxSerializer_write;
		this.initPacket = wddxSerializer_initPacket;
		this.extractPacket = wddxSerializer_extractPacket;
	}
	else
	{
		// The browser is most likely MSIE 3.x, it is NS 2.0 compatible
		this.serializeString = wddxSerializer_serializeStringOld;
		this.serializeAttr = wddxSerializer_serializeAttrOld;
		this.write = wddxSerializer_writeOld;
		this.initPacket = wddxSerializer_initPacketOld;
		this.extractPacket = wddxSerializer_extractPacketOld;
	}

	var tzOffset = (new Date()).getTimezoneOffset();

	if (tzOffset >= 0)
	{
		this.timezoneString = '-';
	}
	else
	{
		this.timezoneString = '+';
	}
	this.timezoneString += Math.floor(Math.abs(tzOffset) / 60) + ":" + (Math.abs(tzOffset) % 60);

	this.preserveVarCase = false;
	this.useTimezoneInfo = true;

	// Common functions
	this.serialize = wddxSerializer_serialize;
	this.serializeValue = wddxSerializer_serializeValue;
	this.serializeVariable = wddxSerializer_serializeVariable;
}

function wddxRecordset_isColumn(name)
{
	return (typeof(this[name]) == "object" && 
		    name.indexOf("_private_") == -1);
}

function wddxRecordset_getRowCount()
{
	var nRowCount = 0;
	for (var col in this)
	{
		if (this.isColumn(col))
		{
			nRowCount = this[col].length;
			break;
		}
	}
	return nRowCount;
}

function wddxRecordset_addColumn(name)
{
	var nLen = this.getRowCount();
	var colValue = new Array(nLen);
	for (var i = 0; i < nLen; ++i)
	{
		colValue[i] = null;
	}
	this[this.preserveFieldCase ? name : name.toLowerCase()] = colValue;
}

function wddxRecordset_addRows(n)
{
	for (var col in this)
	{
		if (this.isColumn(col))
		{
			var nLen = this[col].length;
			for (var i = nLen; i < nLen + n; ++i)
			{
				this[col][i] = null;
			}
		}
	}
}

function wddxRecordset_getField(row, col)
{
	return this[this.preserveFieldCase ? col : col.toLowerCase()][row];
}

function wddxRecordset_setField(row, col, value)
{
	this[this.preserveFieldCase ? col : col.toLowerCase()][row] = value;
}

function wddxRecordset_wddxSerialize(serializer)
{
	// Create an array and a list of column names
	var colNamesList = "";
	var colNames = new Array();
	var i = 0;
	for (var col in this)
	{
		if (this.isColumn(col))
		{
			colNames[i++] = col;

		if (colNamesList.length > 0)
			{
				colNamesList += ",";
			}
			colNamesList += col;
		}
	}
	
	var nRows = this.getRowCount();
	
	serializer.write("<recordset rowCount='" + nRows + "' fieldNames='" + colNamesList + "'>");
	
	var bSuccess = true;
	for (i = 0; bSuccess && i < colNames.length; i++)
	{
		var name = colNames[i];
		serializer.write("<field name='" + name + "'>");
		
		for (var row = 0; bSuccess && row < nRows; row++)
		{
			bSuccess = serializer.serializeValue(this[name][row]);
		}
		
		serializer.write("</field>");
	}
	
	serializer.write("</recordset>");
	
	return bSuccess;
}

function wddxRecordset_dump(escapeStrings)
{
	// Get row count
	var nRows = this.getRowCount();
	
	// Determine column names
	var colNames = new Array();
	var i = 0;
	for (var col in this)
	{
		if (typeof(this[col]) == "object")
		{
			colNames[i++] = col;
		}
	}

	var o = "<table border=1><tr><td><b>RowNumber</b></td>";
	for (i = 0; i < colNames.length; ++i)
	{
		o += "<td><b>" + colNames[i] + "</b></td>";
	}
	o += "</tr>";
	
	// Build data cells
	for (var row = 0; row < nRows; ++row)
	{
		o += "<tr><td>" + row + "</td>";
		for (i = 0; i < colNames.length; ++i)
		{
			var elem = this.getField(row, colNames[i]);
		if (escapeStrings && typeof(elem) == "string")
			{
				var str = "";
				for (var j = 0; j < elem.length; ++j)
				{
					var ch = elem.charAt(j);
					if (ch == '<')
					{
						str += "&lt;";
					}
					else if (ch == '>')
					{
						str += "&gt;";
					}
					else if (ch == '&')
					{
						str += "&amp;";
					}
					else
					{
						str += ch;
					}
				}
				o += ("<td>" + str + "</td>");
			}
			else
			{
				o += ("<td>" + elem + "</td>");
			}
		}
		o += "</tr>";
	}

	o += "</table>";

	return o;
}

function WddxRecordset()
{
	this.preserveFieldCase = false;
	if (typeof(wddxRecordsetExtensions) == "object")
	{
		for (var prop in wddxRecordsetExtensions)
		{
			this[prop] = wddxRecordsetExtensions[prop]
		}
	}
	this.getRowCount = wddxRecordset_getRowCount;
	this.addColumn = wddxRecordset_addColumn;
	this.addRows = wddxRecordset_addRows;
	this.isColumn = wddxRecordset_isColumn;
	this.getField = wddxRecordset_getField;
	this.setField = wddxRecordset_setField;
	this.wddxSerialize = wddxRecordset_wddxSerialize;
	this.dump = wddxRecordset_dump;

	if (WddxRecordset.arguments.length > 0)
	{
		if (typeof(val = WddxRecordset.arguments[0].valueOf()) == "boolean")
		{
			this.preserveFieldCase = WddxRecordset.arguments[0];
		}
		else
		{
			var cols = WddxRecordset.arguments[0];
			var nLen = 0;
			if (WddxRecordset.arguments.length > 1)
			{
				if (typeof(val = WddxRecordset.arguments[1].valueOf()) == "boolean")
				{
					this.preserveFieldCase = WddxRecordset.arguments[1];
				}
				else
				{
					nLen = WddxRecordset.arguments[1];

					if (WddxRecordset.arguments.length > 2)
					{
						this.preserveFieldCase = WddxRecordset.arguments[2];
					}
				}
			}
			
			for (var i = 0; i < cols.length; ++i)
			{
				var colValue = new Array(nLen);
				for (var j = 0; j < nLen; ++j)
				{
					colValue[j] = null;
				}
			
				this[this.preserveFieldCase ? cols[i] : cols[i].toLowerCase()] = colValue;
			}
		}
	}
}

function registerWddxRecordsetExtension(name, func)
{
	// Perform simple validation of arguments
	if (typeof(name) == "string" && typeof(func) == "function")
	{
		// Guarantee existence of wddxRecordsetExtensions object
		if (typeof(wddxRecordsetExtensions) != "object")
		{
			// Create wddxRecordsetExtensions instance
			wddxRecordsetExtensions = new Object();
		}
		
		// Register extension; override an existing one
		wddxRecordsetExtensions[name] = func;
	}
}

function wddxBinary_wddxSerialize(serializer) 
{
	serializer.write(
		"<binary encoding='" + this.encoding + "'>" + this.data + "</binary>");
	return true;
}

function WddxBinary(data, encoding)
{
	this.data = data != null ? data : "";
	this.encoding = encoding != null ? encoding : "base64";

	// Custom serialization mechanism
	this.wddxSerialize = wddxBinary_wddxSerialize;
}

function BrowserDetect() {
	var ua = navigator.userAgent.toLowerCase(); 

	this.isGecko       = (ua.indexOf('gecko') != -1 && ua.indexOf('safari') == -1);
	this.isAppleWebKit = (ua.indexOf('applewebkit') != -1);

	this.isKonqueror   = (ua.indexOf('konqueror') != -1); 
	this.isSafari      = (ua.indexOf('safari') != - 1);
	this.isOmniweb     = (ua.indexOf('omniweb') != - 1);
	this.isOpera       = (ua.indexOf('opera') != -1); 
	this.isIcab        = (ua.indexOf('icab') != -1); 
	this.isAol         = (ua.indexOf('aol') != -1); 
	this.isIE          = (ua.indexOf('msie') != -1 && !this.isOpera && (ua.indexOf('webtv') == -1) ); 
	this.isMozilla     = (this.isGecko && ua.indexOf('gecko/') + 14 == ua.length);
	this.isFirebird    = (ua.indexOf('firebird/') != -1);
	this.isNS          = ( (this.isGecko) ? (ua.indexOf('netscape') != -1) : ( (ua.indexOf('mozilla') != -1) && !this.isOpera && !this.isSafari && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1) ) );

	this.isIECompatible = ( (ua.indexOf('msie') != -1) && !this.isIE);
	this.isNSCompatible = ( (ua.indexOf('mozilla') != -1) && !this.isNS && !this.isMozilla);

	this.geckoVersion = ( (this.isGecko) ? ua.substring( (ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14) ) : -1 );
	this.equivalentMozilla = ( (this.isGecko) ? parseFloat( ua.substring( ua.indexOf('rv:') + 3 ) ) : -1 );
	this.appleWebKitVersion = ( (this.isAppleWebKit) ? parseFloat( ua.substring( ua.indexOf('applewebkit/') + 12) ) : -1 );

	this.versionMinor = parseFloat(navigator.appVersion); 

	if (this.isGecko && !this.isMozilla) {
		this.versionMinor = parseFloat( ua.substring( ua.indexOf('/', ua.indexOf('gecko/') + 6) + 1 ) );
	}
	else if (this.isMozilla) {
		this.versionMinor = parseFloat( ua.substring( ua.indexOf('rv:') + 3 ) );
	}
	else if (this.isIE && this.versionMinor >= 4) {
		this.versionMinor = parseFloat( ua.substring( ua.indexOf('msie ') + 5 ) );
	}
	else if (this.isKonqueror) {
		this.versionMinor = parseFloat( ua.substring( ua.indexOf('konqueror/') + 10 ) );
	}
	else if (this.isSafari) {
		this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('safari/') + 7 ) );
	}
	else if (this.isOmniweb) {
		this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('omniweb/') + 8 ) );
	}
	else if (this.isOpera) {
		this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera') + 6 ) );
	}
	else if (this.isIcab) {
		this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab') + 5 ) );
	}

	this.versionMajor = parseInt(this.versionMinor); 

	this.isDOM1 = (document.getElementById);
	this.isDOM2Event = (document.addEventListener && document.removeEventListener);

	this.mode = document.compatMode ? document.compatMode : 'BackCompat';

	this.isWin    = (ua.indexOf('win') != -1);
	this.isWin32  = (this.isWin && ( ua.indexOf('95') != -1 || ua.indexOf('98') != -1 || ua.indexOf('nt') != -1 || ua.indexOf('win32') != -1 || ua.indexOf('32bit') != -1 || ua.indexOf('xp') != -1) );
	this.isMac    = (ua.indexOf('mac') != -1);
	this.isUnix   = (ua.indexOf('unix') != -1 || ua.indexOf('sunos') != -1 || ua.indexOf('bsd') != -1 || ua.indexOf('x11') != -1)
	this.isLinux  = (ua.indexOf('linux') != -1);

	this.isNS4x = (this.isNS && this.versionMajor == 4);
	this.isNS40x = (this.isNS4x && this.versionMinor < 4.5);
	this.isNS47x = (this.isNS4x && this.versionMinor >= 4.7);
	this.isNS4up = (this.isNS && this.versionMinor >= 4);
	this.isNS6x = (this.isNS && this.versionMajor == 6);
	this.isNS6up = (this.isNS && this.versionMajor >= 6);
	this.isNS7x = (this.isNS && this.versionMajor == 7);
	this.isNS7up = (this.isNS && this.versionMajor >= 7);

	this.isIE4x = (this.isIE && this.versionMajor == 4);
	this.isIE4up = (this.isIE && this.versionMajor >= 4);
	this.isIE5x = (this.isIE && this.versionMajor == 5);
	this.isIE55 = (this.isIE && this.versionMinor == 5.5);
	this.isIE5up = (this.isIE && this.versionMajor >= 5);
	this.isIE6x = (this.isIE && this.versionMajor == 6);
	this.isIE6up = (this.isIE && this.versionMajor >= 6);
	this.isIE4xMac = (this.isIE4x && this.isMac);
}

var browser = new BrowserDetect();

function _WDDXRemotingClient_addRequestParameter(name, value)
{
	nameValueObject = new Object;
	nameValueObject.name = name;
	nameValueObject.value = value;
	this.requestNameValueArray[this.requestNameValueArray.length] = nameValueObject;
}


function _WDDXRemotingClient_sendRequest()
{
	for (var i=0; i < this.requestNameValueArray.length; i++)
	{
		this.requestURL += "&" + this.requestNameValueArray[i].name + "=" + this.requestNameValueArray[i].value;
	}
	this.requestURL = this.requestURL.replace(/&/, "?");
	
	var IFrameObj = document.getElementById(this.bufferID);
	if (!IFrameObj) return;

	if (browser.isIE)
	{
		IFrameObj.src = this.requestURL;
		return;
	}
	if (IFrameObj.contentDocument)
	{
		IFrameObj.contentDocument.location.replace(this.requestURL);
		return;
	}
	if (IFrameObj.contentWindow)
	{
		IFrameObj.contentWindow.document.location.replace(this.requestURL);
		return;
	}
	IFrameObj.src = this.requestURL;
	return;
}


function _WDDXRemotingClient_receiveResponse()
{
	this.callbackFunction(this.results);
}

function WDDXRemotingClient(requestURL, callbackFunction, bufferID)
{
	/* Initialization */
	if (typeof requestID == "undefined")
	{
		requestID = -1;
		remotingClientArray = new Array();
	}
	requestID++;
	remotingClientArray[requestID] = this;
	/* Members. */
	this.requestID = requestID;
	this.bufferID = bufferID;
	this.requestURL = requestURL;
	this.callbackFunction = callbackFunction;
	this.requestNameValueArray = new Array();
	this.results = new WddxRecordset();
	/* Methods. */
	this.addRequestParameter = _WDDXRemotingClient_addRequestParameter;
	this.sendRequest = _WDDXRemotingClient_sendRequest;
	this.receiveResponse = _WDDXRemotingClient_receiveResponse;
}

function _OnlineNowNodeParser_locateNodes()
{
	var CurrentNode = null;
	var i = 0;
	while ((CurrentNode = document.getElementById("UserDataNode" + i)) != null)
	{
		NodeIndex = this.NodeArray.length;
		this.NodeArray[NodeIndex] = new Object();
		this.NodeArray[NodeIndex].NodeID = CurrentNode.id;
		var Attributes = CurrentNode.className.split(";");
		for (var AttributeIterator = 0; AttributeIterator < Attributes.length; AttributeIterator++)
		{
			var Name = Attributes[AttributeIterator].split("=")[0];
			var Value = Attributes[AttributeIterator].split("=")[1];
			if (Name != "" && Value != "") eval("this.NodeArray[" + NodeIndex + "]." + Name + "=\"" + Value + "\";");
		}			
		i++;
	}
}

function _OnlineNowNodeParser_run()
{
	this.locateNodes();	
	var UserIDList = "";
	if (this.NodeArray.length > 0)
	{
		for (var i=0; i < this.NodeArray.length; i++)
		{
			if (UserIDList.indexOf(":" + this.NodeArray[i].UserID + ":") == -1) UserIDList += ":" + this.NodeArray[i].UserID + ":,";
		}
		UserIDList = UserIDList.replace(/[:]/g, "").replace(/[,]$/gi, "");
		this.remotingClient.addRequestParameter("UserIDList", UserIDList);
		this.remotingClient.sendRequest();
	}
}

function _OnlineNowNodeParser_processResults(Results)
{
	if (Results.getRowCount() > 0)
	{
		for (var i = 0; i < Results.getRowCount(); i++)
		{
			var UserObject = new Object();
			UserObject.UserID = Results["userid"][i];
			UserObject.OnlineNow = Results["onlinenow"][i];
			var ThisUserID = "" + Results["userid"][i];
			this.UserArray[ThisUserID] = UserObject;
		}
		for (var i = 0; i < this.NodeArray.length; i++)
		{
			var ThisUserID = "" + this.NodeArray[i].UserID;
			this.replaceUserNode(i, ThisUserID);
		}
	}
}

function _OnlineNowNodeParser_replaceUserNode(NodeIndex, UserIndex)
{
	var NodeObject = this.NodeArray[NodeIndex];
	var UserObject = this.UserArray[UserIndex];

	var ThisNode = document.getElementById(NodeObject.NodeID)
	if (ThisNode)
	{
		if (typeof UserObject != "object")
		{
			UserObject = new Object();
			UserObject.UserID = -1;
			UserObject.FirstName = "Unknown User";
			UserObject.ImageID = -1;
			UserObject.ImageType = "";
			UserObject.LastLogin = "";
			UserObject.OnlineNow = 0;
		}
		switch (NodeObject.DataPoint.toLowerCase())
		{
			case "onlinenow":
			{
				var OnlineImageURL = ImageStore[0].url + "/site/images/clear.gif";
				if (UserObject.OnlineNow == 1) OnlineImageURL = ImageStore[0].url + "/site/images/onlinenow.gif";
				ThisNode.innerHTML = "<IMG BORDER=\"0\" SRC=\"" + OnlineImageURL + "\" WIDTH=\"80\" HEIGHT=\"20\">";
				break;
			}
		}
	}
}

function OnlineNowNodeParser(bufferID)
{
	/* Members. */
	this.UserArray = new Array();
	this.NodeArray = new Array();
	this.requestURL = onlineNowInfoURL;
	/* Methods. */
	this.run = _OnlineNowNodeParser_run;
	this.locateNodes = _OnlineNowNodeParser_locateNodes;
	this.replaceUserNode = _OnlineNowNodeParser_replaceUserNode;
	this.processResults = _OnlineNowNodeParser_processResults;
	/* Remoting Client Initialization. */
	var me = this;
	var CallbackFunction = function(Results) {me.processResults(Results);};
	this.remotingClient = new WDDXRemotingClient(this.requestURL, CallbackFunction, bufferID);
}

