function getCookie(name)
{
	if(document.cookie.length>0)
	{
		start=document.cookie.indexOf(name + "=");
		if(start==-1)
		{
			return "";
		}
		else
		{
			start=start + name.length+1;
			end=document.cookie.indexOf(";", start);
			if(end==-1) {end=document.cookie.length;}
			return document.cookie.substring(start,end);
		}
	}
	else
	{
		return "";
	}
}

function request(){
	if(window.XMLHttpRequest){
		return new XMLHttpRequest();
	}
	else if(window.ActiveXObject){
		return new ActiveXObject("Microsoft.XMLHttp");
	}else{
		document.getElementById("status").innerHTML = 'Your browser does not support this chat facility.' +  
		' Consider upgrading your browser.';
	}
}

usersReq = request();
checkOnlineReq = request();

//checks whether the user has signed in before proceeding to chat.
//if the user is not signed in displays a signin message.
function memberAccess(){
	cookie_value = getCookie('u_session');
	if(cookie_value == ' ' || cookie_value == 'undefined' || cookie_value == ''){
		var please_signin_object = document.getElementById("please_signin");
		please_signin_object.style.left = "395px";
		please_signin_object.style.top = "30px";
		var page_width = document.documentElement.clientWidth + document.documentElement.scrollLeft;
		var signin_pagebg = document.createElement('div');
		signin_pagebg.id = 'signin_pagebg';
		signin_pagebg.style.zIndex = 2;
		signin_pagebg.style.position = 'absolute';
		signin_pagebg.style.top = '0px';
		signin_pagebg.style.left = '0px';
		signin_pagebg.style.height = document.documentElement.scrollHeight + 'px';
		signin_pagebg.style.width = page_width + 'px';
		signin_pagebg.style.backgroundColor = 'black';
		signin_pagebg.style.opacity = '0.5';
		signin_pagebg.style.filter += ("progid:DXImageTransform.Microsoft.Alpha(opacity=50)");
    	document.body.appendChild(signin_pagebg); 
		please_signin_object.style.display = document.all ? "":"";
		//var page_height = document.documentElement.scrollHeight;
		//window.scrollBy(0, - + page_height);
		window.scrollBy(0, -2600);
		return false;
	}else{
		return true;
	}
}

function moveUp(){ 	window.scrollBy(0, -1600);}
function memberAccessUp(){ moveUp(); memberAccess();}


//checks  the database for users online
function usersOnline()
{
	if(usersReq.readyState == 4 || usersReq.readyState == 0)
	{
		usersReq.open("GET", 'users_online_process.php?collect=yes', true);
		usersReq.onreadystatechange = handleReceiveUsersOnline;
		usersReq.send(null);
	}
}

//gets the users online, appends it to an anchor element that is displayed on screen
//runs a function that displays a signin message if user is offline and the chat request if user is online.


function handleReceiveUsersOnline()
{
	onlineUsersArray = new Array();
	var sender_cookie = getCookie('u_session');
	if(usersReq.readyState == 4 || usersReq.readyState == 0)
	{
		var onlineUsersContainer = document.getElementById("users_online_body_li");
		var xmldoc = usersReq.responseXML;
		var msg = xmldoc.getElementsByTagName('users');
		if(msg.length > 0)
		{
			var users_node = msg[0].getElementsByTagName('online');
			var online = users_node[0].firstChild.nodeValue;
			onlineUsersContainer.innerHTML = " ";
			if(online != 'nouseronlinenow' && online != ' nouseronlinenow' && online != ' ')
			{
				onlineUsersArray = online.split(" ");
				onlineUsersArray.pop();
				for(var i = 0; i < onlineUsersArray.length; i = i+1)
				{
					createLink = document.createElement('a');
					createLink.setAttribute('id', onlineUsersArray[i]);
					createLink.setAttribute('name', sender_cookie);
					createLink.setAttribute('href', 'javascript:;');
					createText = document.createTextNode(onlineUsersArray[i] + ' ');
					var diff = Math.random() * 4;
					diff = diff + 10;
					diff_font = Math.floor(diff);
					createLink.style.fontSize = diff_font + "px";
					createLink.appendChild(createText);
					onlineUsersContainer.appendChild(createLink);
					var objectEvent = createLink.onclick;
					createLink.onclick =function(objectEvent)
					{ 
						if(memberAccess())
						{
							if((this.name != this.id) && this.name!='' && this.id!='')
							{
								top.chatHandle.create(this.name, this.id);
								top.chatHandle.maximize();
							}
							else if((this.name == this.id) && this.name != '')
							{
								var self = document.getElementById('self_warning');
								var x; var y;
								if(navigator.appName=='Microsoft Internet Explorer'){y=event.clientY;x=event.clientX;}
								else{y=objectEvent.clientY;	x=objectEvent.clientX;}
								self.style.top = ((y - 122) + document.documentElement.scrollTop) + 'px';
								self.style.left = (x - 29) + 'px';
								self.style.display = document.all ? "":"";
							}
						}
					}
				}
			}
		}
	setTimeout('usersOnline()', 15000);
	}
}


