var user_fbchat='';
var userinfo = new Array();
var allpics = '';
var allfriends='';
var lastpics='';

var chplace='';
var frplace='';

var selected = 1;

var initialized=0;


function stilization()
{	document.getElementById('visualizator').style.width = page_width+'px';
	var logow=page_width-10;
	var boxw = page_width-22;
	var fldw = page_width-160;

	document.getElementById('fbchat_logo').style.width=logow+'px';
	document.getElementById('fbchat_box').style.width=boxw+'px';
	document.getElementById('visualizator').style.height=page_height+'px';
	document.getElementById('fbchat_message').style.width=fldw+'px';
}

function visualisation()
{
	var vis = document.getElementById('visualizator');

 	if(selected==1)
	{
		vis.innerHTML = chplace;
	}
	else vis.innerHTML = frplace;
}

function splitToTabs(text)
{
	start=text.indexOf("<!--FrI8NdS-->");
	chplace = insertImages(text.substring(0, start));
	frplace = insertImages(text.substring(start+14,text.length));
}

function splitToTabsNew(text)
{
	if(text.length>30)
	{
			start=text.indexOf("<!--FrI8NdS-->");
			chnew = text.substring(0, start);
			frnew = text.substring(start+14,text.length);

			var tstch=0;
			var tstfr=0;
			if(getLastDate2(chplace)!=getLastDate2(chnew)) chplace = insertImages(chnew + chplace);
			else tstch=1;
			if(getLastDate2(frplace)!=getLastDate2(frnew)) frplace = insertImages(frnew + frplace);
			else tstfr=1;
            if(tstch!=1 || tstfr!=1)
            {
				var tmp = document.getElementById('visualizator');
				var first = tmp.firstChild;
				var newelem = document.createElement('div');

				if(selected==1)
				{
					newelem.innerHTML = insertImages(text.substring(0, start));
					if(tstch==0) tmp.insertBefore(newelem,first);
				}
				else
				{					newelem.innerHTML = insertImages(text.substring(start+14,text.length));
					if(tstfr==0) tmp.insertBefore(newelem,first);
                }


			}
	}
}

function fillCache(data)
{
	var obj = new Object();
	for(i=0;i<data.length;i++)
	{
		userinfo[i]=data[i];
	}
}

function insertImages(text)
{	/*
	var url = '';
	var command = '';

	for(i=0;i<userinfo.length;i++)
	{
	    if(userinfo[i].pic_small!='' && userinfo[i].pic_small!=null) url = userinfo[i].pic_small;
	    else url = 'http://static.ak.connect.facebook.com/pics/t_silhouette.jpg';
	    command = '/i'+userinfo[i].uid+'/g';
		command = "text=text.replace("+command+", url);";
		eval(command);

		command = '/User '+userinfo[i].uid+'/g';
		if(userinfo[i].name!=null) command = "text=text.replace("+command+", userinfo[i].name);";
		else command = "text=text.replace("+command+", 'Anonymous user');";
		eval(command);
	}

    */
	return text;
}

function getAllUsers()
{

	var text = chplace;
    var start = text.indexOf('cKJj4jhKHe3h8')+13;
    var finish = text.indexOf('cKJj4jhKHe3h9');
    allpics = text.substring(start,finish);
    return allpics;
}

function printChat()
{
	jQuery.post(fbhost+"chat.php", {action:"showform", page_id:page_id},
 	function (data, textStatus)
	 {
	 	var tmp = document.getElementById('chatformplace');
	 	tmp.innerHTML=data;
	 }
 	);

 	refreshChat2();
}

function refreshChat()
{
	//var lastdate = getLastDate();
	jQuery.post(fbhost+"chat.php", {action:"showall", page_id:page_id},
 	function (data, textStatus)
	 {
	 	chplace=insertImages(data);
        visualisation();
	 	picsget();
	 	allfriendsget();
	 }
 	);

 	setTimeout("refreshChat()",5000);

}

function refreshChat2()
{
	var friends;
	var strfr;
	if(allfriends!='')
	{
		strfr = allfriends.toString();
		friends = strfr.replace(/,/g,".");
	}
	else friends = allfriends;

	jQuery.post(fbhost+"chat.php", {action:"show", page_id:page_id, fb_uid:friends},
 	function (data, textStatus)
	 {
	 	splitToTabs(data);
        visualisation();
	 	picsget();
	 	allfriendsget();
	 }
 	);

 	setTimeout("renewChat2()",5000);
    //setTimeout("refreshChat2()",5000);
}

function getLastDate()
{
	return getLastDate2(chplace);
}

function getLastDate2(txt)
{
	var start = txt.indexOf('<!--d-->')+8;
	var lastdate = txt.substr(start, 19);
	return lastdate;
}

function getLastDateFriends()
{
	var txt = frplace;
	var start = txt.indexOf('<!--d-->')+8;
    if(start!=-1 && start!=7) var lastdate = txt.substr(start, 19);
    else lastdate='2000-02-25 07:34:58';

	return lastdate;
}

function renewChat()
{
    var friends;
	var strfr;
	if(allfriends!='')
	{
		strfr = allfriends.toString();
		friends = strfr.replace(/,/g,".");
	}
	else friends = allfriends;

	var lastdate = getLastDate();
	var lastdate2 = getLastDateFriends();

	jQuery.post(fbhost+"chat.php", {action:"shownew", page_id:page_id, lastdate:lastdate, lastdate2:lastdate2, fb_uid:friends},
 	function (data, textStatus)
	 {

        splitToTabsNew(data);
	 	//if(data.length>25) visualisation();
	 	picsget();
	 	allfriendsget();
	 }
 	);
}

function renewChat2()
{
	renewChat();
	if(initialized==0 || document.getElementById('fbchat_pimg').alt=="") getUserUID();
 	setTimeout("renewChat2()",3000);
}

function chatfb_send()
{
	FB.Connect.requireSession(function() {
	msgbox = document.getElementById("fbchat_message");
	txt = msgbox.value;
	msgbox.value="";

	var uimg = document.getElementById('fbchat_pimg');
	var name = "";
	var pic = "";

	if(uimg!=null)
	{		name = uimg.alt;
		pic = uimg.src;
	}

	if(name=="")
	{		var api = FB.Facebook.apiClient;
		var sequencer = new FB.BatchSequencer();
		var pendingUsersResult = api.fql_query("SELECT name,pic_small,uid from user WHERE uid IN ("+ user_fbchat +")", sequencer);
		sequencer.execute(function()
			{
				var result='';
				var response = pendingUsersResult.result;
				document.getElementById('fbchat_pimg').alt=response[0].name;
				if(response[0].pic_small!='') document.getElementById('fbchat_pimg').src=response[0].pic_small;
				else document.getElementById('fbchat_pimg').src='http://static.ak.connect.facebook.com/pics/t_silhouette.jpg';
				initialized=1;
				jQuery.post(fbhost+"chat.php", {action:"addmsg", page_id:page_id, fb_uid:user_fbchat, posttext:txt, name:response[0].name, pic:response[0].pic_small},
			 	function (data, textStatus)
				 {
				 	//renewChat();
				 }
			 	);
			});
	}
    else
    {

		jQuery.post(fbhost+"chat.php", {action:"addmsg", page_id:page_id, fb_uid:user_fbchat, posttext:txt, name:name, pic:pic},
	 	function (data, textStatus)
		 {
		 	//renewChat();
		 }
	 	);
    }

 	chbox1 = document.getElementById('fbmakestatus');

 	if(chbox1.checked)
 	{
	 	var api = FB.Facebook.apiClient;
		var sequencer = new FB.BatchSequencer();
		var result = api.users_setStatus(txt,false,false,sequencer);
		sequencer.execute(function() {
			if(result.result!=true) FB.Connect.showPermissionDialog('status_update', function(tst) {								if(tst) {									result=api.users_setStatus(txt,false,false,sequencer);
									sequencer.execute(function() {});
									}
			});
	    });
	    chbox1.checked=false;
    }
    });
}

function friendslist(friends)
{
	strfr = friends.toString();
	friends = strfr.replace(/,/g,".");

	jQuery.post(fbhost+"chat.php", {action:"getfriends", page_id:page_id, fb_uid:friends},
 	function (data, textStatus)
	 {
	 	frplace=insertImages(data);
	 	visualisation();
	 }
 	);
}

function frendsget()
{
	 var api = FB.Facebook.apiClient;
	/// Example of calling APIs in batched mode
	//First create a sequencer for batch execution
	var sequencer = new FB.BatchSequencer();
	// By default, individual APIs may be executed in parallel on the server side.
	// To force sequencial executions on the server, uncomment the following code
	// sequencer.isParallel = false;

	//Calling friends_get API, passing the sequencer as last argument
	var pendingFriendsResult = api.friends_get(null, sequencer);


	//Call notifications_get API, passing the sequencer as last argument
	var pendingNotificationsResult = api.notifications_get(sequencer);

	//Actually execute the API that is queued inside the sequencer, passing a callback function that is called
	//when the batch operation is completed. When the callback function is called, the 'result' or 'exception' properties of
	//pendingFriendsResult and pendingNotificationsResult are updated.
	sequencer.execute(function() {
	    alert(pendingFriendsResult.result);
//	    alert(pendingNotificationsResult.result + 'notificationsResult from batch execution');
	});
}

function allfriendsget()
{
	if(allfriends=='')
	{
		var api = FB.Facebook.apiClient;
		var sequencer = new FB.BatchSequencer();
		var result = api.friends_get(null, sequencer);
		sequencer.execute(function() {
			if(result!=null)
			{
				allfriends=result.result;
				if(result.result=='') allfriends+=user_fbchat;
				else allfriends+=','+user_fbchat;
            }
		    });
	}
}


function picsget()
{	/*
	if(allpics!=getAllUsers())
	{
		var api = FB.Facebook.apiClient;
		var sequencer = new FB.BatchSequencer();
		var pendingUsersResult = api.fql_query("SELECT name,pic_small,uid from user WHERE uid IN "+getAllUsers(), sequencer);
		sequencer.execute(function()
			{
				var result='';
				var response = pendingUsersResult.result;
				fillCache(response);
				chplace = insertImages(chplace);
				frplace = insertImages(frplace);
				visualisation();
			});
	}
	*/
}


function switchTab(activ)
{
	var tab1 = document.getElementById('idtab1');
	var tab2 = document.getElementById('idtab2');

	if(activ==1)
	{
		selected=1;
        tab1.className="fbtab_active";
        tab2.className="fbtab";
	}
	else
	{
		selected=2;
        tab1.className="fbtab";
        tab2.className="fbtab_active";
	}

	visualisation();
}

function appChi()
{
	elem = document.getElementById('visualizator');
	for(i=0;i<10;i++)
	{
		newElem = document.createElement('div');
		newElem.id='elem'+i;
		newElem.innerHTML="Test"+i;
		elem.insertBefore(newElem,elem.firstChild);
	}
}

function getElementsByStyleClass (className) {
  var all = document.all ? document.all :
    document.getElementsByTagName('*');
  var elements = new Array();
  for (var e = 0; e < all.length; e++)
    if (all[e].className == className)
      elements[elements.length] = all[e];
  return elements;
}

function getUserImg()
{	var uimg = document.getElementById('fbchat_userid');
    var img1 = uimg.firstChild.firstChild;	if(img1!=null) return img1;
	else return null;
}

function getUserName()
{	//var uimg = getElementsByClassName('fb_profile_pic_rendered',false);
    //var uimg = $('.fb_profile_pic_rendered');
    var uimg = document.getElementById('fbchat_userid');
    var img1 = uimg.firstChild.firstChild;

	alert(img1.alt);
}

function getElementsByClass(className)
{	var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
		var allElements = document.getElementsByTagName("*");
		var results = [];

		var element;
		for (var i = 0; (element = allElements[i]) != null; i++) {
			var elementClass = element.className;
			if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
				results.push(element);
		}

		return results;
}

function getUserUID()
{	var api = FB.Facebook.apiClient;
	//var sequencer = new FB.BatchSequencer();
	//FB.Connect.ifUserConnected(function() {			var ses = api.get_session();
			if(ses!=null)
			{				user_fbchat = ses.uid;
				document.getElementById('fbchat_purl').href='http://www.facebook.com/profile.php?id='+user_fbchat;
				profileImgUpdate(user_fbchat);
			}
	//						},null);


	/*
	api.requireLogin(function(exception){

	});*/
	/*var pendingUsersResult = api.requireLogin(function(exception){
        alert("Current user id is " + api.get_session().uid);
        });*/
}

function profileImgUpdate(uid)
{	var api = FB.Facebook.apiClient;
	var sequencer = new FB.BatchSequencer();
	var pendingUsersResult = api.fql_query("SELECT name,pic_small,uid from user WHERE uid IN ("+ uid +")", sequencer);
	sequencer.execute(function()
		{
			var result='';
			var response = pendingUsersResult.result;
			document.getElementById('fbchat_pimg').alt=response[0].name;
			if(response[0].pic_small!='') document.getElementById('fbchat_pimg').src=response[0].pic_small;
			else document.getElementById('fbchat_pimg').src='http://static.ak.connect.facebook.com/pics/t_silhouette.jpg';
			initialized=1;
		});
}