/*
 * Global vars 
 */
var space;
var docname;
var fullName;
var spaceRoot;
var skin;

/*
 * Lightbox class definition
 * The Lightbox is Dialog Box UI that obtains it content through a asynchronous request against a wiki page
 */
Lightbox = Class.create();
Lightbox.prototype = Object.extend(Lightbox, {
	initialize: function(url,onLoaded) 
	{
        this.lbClear();
		this.content = $('lb-content');
		this.onLoaded = onLoaded;
		this.spinnerUrl = "/xwiki/skins/nearbeefs/lb-loader.gif"; //TODO : compute the url
		this.lbLoad(url);
	},
	lbShow: function() 
	{
		rmClass($('lb-align'), 'hidden');
		rmClass($('lb-bg'), 'hidden');
		checkSize(); //TODO: checkSize() should perhaps be member of Lightbox class
	},
	lbHide: function() 
	{
		forceClass($('lb-bg'), 'hidden');
  		forceClass($('lb-align'), 'hidden'); 
	},
	lbClear: function()
	{
		$('lb-content').innerHTML = "";
	},
	lbShowLoading: function()
	{
		this.lbClear();
		$('lb-bg').style.background = "url(" + this.spinnerUrl + ") center no-repeat";
		$('lb-bg').style.backgroundColor = "rgb(0, 0, 0)";
		rmClass($('lb-bg'), 'hidden');	
	},
	lbLoad: function(url)
	{
		new Ajax.Request(
			url,
			{
				method: 'post',
				//evalScripts: true,
				onLoading: this.lbShowLoading.bind(this),
				onSuccess: this.lbLoadContent.bind(this)
				 // should be parametrized ?
			}
		);
	},
	lbOnLoaded: function()
	{
		if (this.onLoaded)
		{
			this.onLoaded();
		}
	},
	lbLoadContent: function(transport) 
	{
		$('lb-content').style.background = "";
		$('lb-content').style.backgroundColor = "#EEF3F6";
  		$('lb-content').innerHTML = transport.responseText;
		this.lbOnLoaded();
		this.lbShow();
	}
}); // end Lightbox class definition

/*
 * Lightbox rename, step 1 (display form)
 */
function renamePageForm()
{
	var url = getXWikiURL(space, "WebHome", "view");
	var args = "nearbeeGsDo=renameForm&xpage=plain&page=" + fullName;
	var ajr = new Ajax.Request(
		url,
		{
			method: 'post',
			postBody: args,
			onLoading: 
				function(){
					$('lb-content').innerHTML = "";
					$('lb-content').style.background = "url(" + getSkinFileURL('ajax-loader.gif') + ") center no-repeat"
						//rmClass($('lb-align'), 'hidden');
						//rmClass($('lb-bg'), 'hidden');
        				checkSize();
				},
			onComplete: showLightBoxContent
		}
	);
}

var onWebPrefsLoaded = function() {
			getMemberList(spaceRoot);
			getInviteList(spaceRoot);
			getMemberFullList('#');				
			getInvitedFullList('#');
}

/**
 * Lightbox rename, step 2 (actually rename)
 */
function renamePage(fromFullName,toFullName)
{
	var url = getXWikiURL(space, "WebHome", "view");
	var args = "nearbeeGsDo=rename&xpage=plain&from=" + fromFullName + "&to=" + toFullName;
	var ajr = new Ajax.Request(
		url,
		{
			method: 'post',
			postBody: args,
                        evalScripts: true,
			onComplete: function(request)
                        {
                             window.location=request.responseText;
                        }
		}
	);
}

function displayOptionTeaser(what)
{
	var url = getXWikiURL("Nearbee", "Options", "view");
	var args = "xpage=plain&what="+what;
	var myAjax = new Ajax.Request (
    	url,
 		{
       		method: 'post',
   			postBody: args,
   			onComplete: showLightBoxContent
					
 		});
}

function confirmDeleteGallery(gallery)
{
	var url = getXWikiURL(space, "WebHome", "view");
	var args = "do=confirmdeletegallery&xpage=plain&which=" + gallery;
	var myAjax = new Ajax.Request(
    url,
    {
       method: 'post',
       postBody : args,
       onComplete: function(request)
	    {
			$('lb-content').innerHTML = request.responseText;
	   	}
    });
}

function deleteGallery(gallery)
{
	var url = getXWikiURL(space, gallery, "delete");
	var args = "confirm=1";
	var myAjax = new Ajax.Request(
    url,
    {
       method: 'post',
       postBody : args,
       onComplete:manageGalleriesBox
    });
}	

function deleteSpaceConfirmBox(spaceRoot)
{
	var url = getXWikiURL(space, "WebHome", "view");
	var args = "do=confirmbox&xpage=plain&which=" + spaceRoot;
	var myAjax = new Ajax.Request(
    url,
    {
       method: 'post',
       postBody : args,
       onComplete: function(request)
	    {
			showLightBoxContent(request);
	   	}
    });
}

function deleteSpace(spaceRoot)
{
	var url = getXWikiURL(space, "WebHome", "view");
	var args = "do=deletespace&xpage=plain&which=" + spaceRoot;
	var myAjax = new Ajax.Request(
    url,
    {
       method: 'post',
       postBody : args,
       onComplete: function(request)
	    {
			$('lb-content').innerHTML = request.responseText;
			getAssociatedSpaceList();
			checkSize();
	    }
    });
}

function removePhotoFromGallery(photoNumber)
{
var url = getXWikiURL(space,docname,"objectremove");
var args = "classname=NearbeeClasses.Photo&classid=" + photoNumber;
var myAjax = new Ajax.Request (
    	url,
 		{
       		method: 'post',
   			postBody: args,
   			onComplete:
			function(request)
			{
				loadGalleryEditPhotos(docname);
			}
 		});
}

function loadGalleryEditPhotos(docname)
{
var url = getXWikiURL(space,"WebHome","view");
args = "do=loadeditphotos&xpage=plain&gallery=" + docname;
var myAjax = new Ajax.Request (
    	url,
 		{
       		method: 'post',
   			postBody: args,
   			onComplete:
			function(request)
			{
			$('photo-container').innerHTML=request.responseText;
                        checkSize();
			}
 		});
}

function addPicturesBox()
{
var url = getXWikiURL(space,"WebHome","view");
args = "do=addpictures&xpage=plain&gallery=" + docname;
var myAjax = new Ajax.Request (
    	url,
 		{
       		method: 'post',
   			postBody: args,
   			onComplete: function(request){
 			        $('lb-content').innerHTML = request.responseText;
				rmClass($('lb-align'), 'hidden');
				rmClass($('lb-bg'), 'hidden');
				checkSize();
				 }
 		});
}

function addPictureToGallery(gallery,holder,filename)
{
var url = getXWikiURL(space,gallery,"objectadd");
var args = "classname=NearbeeClasses.Photo&NearbeeClasses.Photo_visible=1";
    args += "&NearbeeClasses.Photo_filename=" + holder + "|" + filename;
    args += "&NearbeeClasses.Photo_description=" + $(holder+"_"+filename+"_d").value;
    var myAjax = new Ajax.Request (
    	url,
 		{
       		method: 'post',
   			postBody: args,
   			onComplete: 
			function(request)
			{
				$(holder + "_" + filename).innerHTML="";
				loadGalleryEditPhotos(gallery);
			}
 		});
}


function expandAll()
{
  var f = document.getElementsByClassName('file_container');
  for(var i=0; i<f.length; i++){
    hide(f[i]);
  }
}
function collapseAll()
{
  var f = document.getElementsByClassName('file_container');
  for(var i=0; i<f.length; i++){
    show(f[i]);
  }
}


function changeUserPicture()
{
  var args="do=changepicture&xpage=plain";
  var surl = getXWikiURL(space, "WebHome", "view", "");
  var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: showLightBoxContent
     }
  );
}

var commentview = "none";
function shCommentRead (id) {
  var targetElement, targetElementRead, targetElementWrite;
  var idread = id+"_read";
  var idwrite = id+"_write";
  targetElement = document.getElementById(id);
  targetElementRead = document.getElementById(idread);
  targetElementWrite = document.getElementById(idwrite);
  if (commentview == "none" || commentview == "write") {
    targetElement.style.display = "block";
    targetElementRead.style.display = "block";
    targetElementWrite.style.display = "none";
    commentview = "read";
  } else {
    targetElement.style.display = "none";
    commentview = "none";
  }
}
function shCommentWrite (id) {
  var targetElement, targetElementRead, targetElementWrite;
  var idread = id+"_read";
  var idwrite = id+"_write";
  targetElement = document.getElementById(id);
  targetElementRead = document.getElementById(idread);
  targetElementWrite = document.getElementById(idwrite);
  if (commentview == "none" || commentview == "read") {
    targetElement.style.display = "block";
    targetElementRead.style.display = "block";
    targetElementWrite.style.display = "block";
    commentview = "write";
  } else {
    targetElement.style.display = "none";
    commentview = "none";
  }
}


/**
 * XWiki URL Builders 
 */
function getSkinFileURL(filename)
{
	var result = "/xwiki/skins/nearbeefs/" + filename;
	//return getSkinFileURL(skin,filename);	
	return result;
}

function getXWikiURL(space, page) {
  return getXWikIURL(wikiPage, "", "");
}
function getXWikiURL(space, page, mode) {
  return getXWikIURL(space, page, mode, "");
}
function getXWikiURL(space, page, mode, args) {
  var surl = "/xwiki/bin/" + mode + "/" + space + "/" + page;
  if (args != "")
    surl = surl + "?" + args;
  return surl;
}

 
function getAbsolutePos(element) {
  var SL = 0, ST = 0;
  var is_div = /^div$/i.test(element.tagName);
  if (is_div && element.scrollLeft) {
    SL = element.scrollLeft;
  }
  if (is_div && element.scrollTop) {
    ST = element.scrollTop;
  }
  var r = { x: element.offsetLeft - SL, y: element.offsetTop - ST };
  if (element.offsetParent) {
    var tmp = this.getAbsolutePos(element.offsetParent);
    r.x += tmp.x;
    r.y += tmp.y;
  }
  return r;
}

function updateWikiParameters(){
  var args="do=updatewikiparams&xpage=plain&fromdoc="+docname;
  for (var i=0; i < document.wikiparamsform.commentstype.length; i++)
   {
   if (document.wikiparamsform.commentstype[i].checked)
      {
      var commentstype = document.wikiparamsform.commentstype[i].value;
      }
   }
  args += "&commentstype=" + commentstype;
  var surl = getXWikiURL(space, "WebHome", "view", "");
  var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: 
         function(request){
           	$('lb-content').innerHTML = request.responseText;
	 }
     }
  );
}


var flagError; // A flag to keep the page's form under a "not valid" status

/*
 * Invalidate a form field
 */
function invalidateField(field,message)
{
	$(field+"errormsg").innerHTML = message;
	$(field+"errormsg").style.color = "red";
	$(field).style.backgroundImage=
        	"url(icons/black-textarea-yellow.png)";
	$(field).style.backgroundColor="#FFFFB3";
        flagError = true;
}

/*
 * Validate a form field
 */
function validateField(field)
{
	$(field).style.backgroundImage=
        	"url(icons/black-textareabg-green.png)";
	$(field).style.backgroundColor="#DEFCE3";
	$(field+"errormsg").innerHTML = "&nbsp;";
}


/*
 * Display the invite member to space form in the lightbox
 */
function inviteMemberToSpaceBox(space)
{
	var args="xpage=plain&do=invitelist";
	var surl = getXWikiURL(space, "WebPreferences", "view", "");
    	var myAjax = new Ajax.Request(
    	surl,
    	{
       		method: 'post',
       		postBody: args,
       		onComplete:showLightBoxContent
    	});
}

/*
 * Display the Workspace creation box in the lightbox
 */
function createWorkSpaceBox(){
    var args="do=createspacebox&xpage=plain";
    var surl = getXWikiURL(space, "WebHome", "view", "");
    var myAjax = new Ajax.Request(
    surl,
    {
       method: 'post',
       postBody: args,
       onComplete: showLightBoxContent
    });
}

/*
 * Display the Gallery creation form in the lightbox
 */
function createGalleryBox(){
    var args="do=creategallerybox&xpage=plain";
    var surl= getXWikiURL(space, "WebHome", "view", "");
    var myAjax = new Ajax.Request(
    surl,
    {
       method: 'post',
       postBody: args,
       onComplete: showLightBoxContent
    });
}

/*
 * Create a Workspace :
 * Validate the creation form
 * Asynchronouly calls the Workspace creation service in "Service/NearbeeService"
 */
function createWorkSpace(){
  flagError = false;

  // validate fields
  if ($('spacename').value=='')
      invalidateField("spacename","$msg.get('spacenameneeded')");
  else
      validateField("spacename");

  if ($('spacedesc').value=='')
      invalidateField("spacedesc","$msg.get('spacedescneeded')");
  else
      validateField("spacedesc");

  if (flagError==false){

  var args="do=createspace&xpage=plain";
  args += "&spacename="+$('spacename').value
  var surl = getXWikiURL(space, "WebHome", "view", "");
  var myAjax = new Ajax.Request(
  surl,
  {
     method: 'post',
     postBody: args,
     onComplete:
       function(originalRequest){
         $('lb-content').innerHTML = "";
         toggleClass($('lb-align'), 'hidden');
         toggleClass($('lb-bg'), 'hidden');
         $('spaceinfomsg').innerHTML=originalRequest.responseText;
         getAssociatedSpaceList()
       }
  });  
 }
}

function getMemberList(){
   var pars = 'do=list&what=member&xpage=plain';
   var surl = getXWikiURL(spaceRoot, "WebPreferences", "view");
   var myAjax = new Ajax.Updater(
   'memberlist', 
	surl, 
	{
	method: 'get', 
	parameters: pars 
	});
}

function getInviteList(){
   var pars = 'do=invitelist&xpage=plain';
   var surl = getXWikiURL(spaceRoot, "WebPreferences", "view");
   var myAjax = new Ajax.Updater(
   'addmembersform', 
	surl, 
	{
	method: 'get', 
	parameters: pars 
	});
}

function getAssociatedSpaceList(){
  var args="do=spacelist&xpage=plain";
  var surl = getXWikiURL(space, docname, "view", args);
  var myAjax = new Ajax.Request (
     surl,{
       method: 'get',
       onComplete:  
        function(originalRequest){
          $('space-list').innerHTML = originalRequest.responseText;
        }
     }
   );
}

/**
 * Update the content of the lightbox by calling asynchronously a remote service
 */
function updateLightBoxContent(what){
  var args="do="+what+"&xpage=plain";
  var surl = getXWikiURL(space, "WebHome", "view", "");
  var myAjax = new Ajax.Request (surl,{
     method: 'post',
     postBody: args,
     onComplete: showLightBoxContent});
}

/**
 * Display the Wiki Page creation form
 */
function createWikiPageBox(){
 	updateLightBoxContent('createwikipage');
}

/**
 * Display the wiki categories management UI
 */
function manageCategoriesBox(){
 	updateLightBoxContent('managecategories');
}

/*
 * Ensure lightbox visibility
 */
function showLightBoxContent(request){
	$('lb-content').innerHTML = request.responseText;
	rmClass($('lb-align'), 'hidden');
	rmClass($('lb-bg'), 'hidden');
	$('lb-content').style.background = ''
        checkSize();
}

function closeBox(request){
	$('lb-content').innerHTML = "";
	toggleClass($('lb-align'), 'hidden');
	toggleClass($('lb-bg'), 'hidden');
}

/*
 * Add a Wiki/Blog category
 */
function addCategory(docontinue){
 var args="do=addcategory&xpage=plain";
 args += "&newcategory=" + $('newcategory').value;
 args += "&newcategorydesc=" + $('newcategorydesc').value;
 var surl = getXWikiURL(space, "WebHome", "view", "");
 if (docontinue==true)
  var myAjax = new Ajax.Request (surl,{method: 'post', postBody: args, onComplete: updateCategories});
 else
  var myAjax = new Ajax.Request (surl,{method: 'post', postBody: args, onComplete: closeBox});
}

/*
 * Remove Wiki/Blog category
 */
function deleteCategory(category){
 var args="do=delcategory&xpage=plain";
 args += "&category=" + category;
 var surl = getXWikiURL(space, "WebHome", "view", "");
 var myAjax = new Ajax.Request (surl,{method: 'post', postBody: args, onComplete: updateCategories});
}

function updateCategories(request){
 manageCategoriesBox()
}



function inviteMembers(){
 var args="do=invitepeople&xpage=plain";
 for (i = 0; i < 10; i++){
   if ($('email_'+i) && $('email_'+i).value != "") args += "&email_"+i+"="+$('email_'+i).value;
}
 var surl = getXWikiURL(spaceRoot, "WebPreferences", "view", "");
 var myAjax = 
   new Ajax.Request (
     surl,
     {
       method: 'post', 
       postBody: args, 
       onComplete: 
          function(request){
             $('info_invite').innerHTML = request.responseText;
             $('info_invite').style.display = "block";
             $('hidebloc2').style.display = "none";
             getInvitedFullList('#');
             for (i = 0; i < 10; i++) 
               if ($('email_'+i).value != "") 
                 $('email_'+i).value = "";
          }
     }
   );
}

function getMemberFullList(letter){
 var args="do=memberlist&xpage=plain&letter="+letter;
 var surl = getXWikiURL(spaceRoot, "WebPreferences", "view");
 var myAjax = 
     new Ajax.Request (
       surl,
       {
          method: 'post', 
          postBody: args, 
          onComplete: function(req){
            $('member-list-container').innerHTML = req.responseText;
          }
       }
     );
}

function getInvitedFullList(letter){
 var args="do=invitedlist&xpage=plain&letter="+letter;
 var surl = getXWikiURL(spaceRoot, "WebPreferences", "view");
 var myAjax = 
     new Ajax.Request (
       surl,
       {
          method: 'post', 
          postBody: args, 
          onComplete: function(req){
            $('invited-list-container').innerHTML = req.responseText;
          }
       }
     );
}


function addMembersFromList(){
 var args="do=addmembers&xpage=plain";
 for (i = 0; i<add_count; i++){
  if ($(for_add[i]).checked == true){
   args += "&toright_" + $(for_add[i]).name + "=" + $('toright_'+for_add[i]).value
  }
 }
 var surl = getXWikiURL(spaceRoot, "WebPreferences", "view", "");
 var myAjax = new Ajax.Request (
    surl, 
    {
      method: 'post',
      postBody: args,
      onComplete: showResponseMembers
    });
}

var for_update = new Array();
var for_add = new Array();
var update_count = 0;
var add_count = 0;

function toadd(member){
 var needsupdate = true;
 for (i =0; i< add_count; i++){
   if(for_add[i] == member) {needsupdate = false;}
 }
 if (needsupdate == true){
 for_add[add_count] = member;
 add_count++;
 }
}

function toupdate(member){
 var needsupdate = true;
 for (i =0; i< update_count; i++){
   if(for_update[i] == member) {needsupdate = false;}
 }
 if (needsupdate == true){
 for_update[update_count] = member;
 update_count++;
 }
}

function updateGuestsRights(what){
  var args = "xpage=plain&do=updateguestsrights";
  for (i = 0; i < update_count;i++){
    if ($('fromright_'+for_update[i]).value != $('toright_'+for_update[i]).value) {
      args += '&fromright_'+for_update[i]+'='+$('fromright_'+for_update[i]).value;
      args += '&toright_'+for_update[i]+'='+$('toright_'+for_update[i]).value;
    }
  }
  var surl = getXWikiURL(spaceRoot, "WebPreferences", "view", "");
  if (what=="guest")
    var myAjax = new Ajax.Request (surl,{method: 'post', postBody: args, onComplete: showResponse});
  if (what=="member")
    var myAjax = new Ajax.Request (surl,{method: 'post', postBody: args, onComplete: showResponseMembers});
}

function removeFromGroup(who, from, what){
   var args = "xpage=plain&do=removeguest&who="+who+"&from="+from;
   var surl = getXWikiURL(spaceRoot, "WebPreferences", "view", "");
   if(what == "guest"){
     var myAjax = new Ajax.Request (surl,{method: 'post', postBody: args, onComplete: showResponse});
   }
   if(what == "member"){
     var myAjax = new Ajax.Request (surl,{method: 'post', postBody: args, onComplete: showResponseMembers});
   }
}

function showResponse(originalRequest){
  $('info').innerHTML = originalRequest.responseText;
  document.getElementById('info').style.display = "block";
  for (i = 0; i <= 100; i++){
  $('firstname_'+i).value = "$msg.get('firstname')";
  $('lastname_'+i).value = "$msg.get('lastname')";
  $('email_'+i).value = "$msg.get('email')";
  }
  getGuestList();
  for_update = new Array();for_add = new Array();
  update_count = 0;add_count = 0;
}

function showResponseMembers(originalRequest){
  $('info_member').innerHTML = originalRequest.responseText;
  document.getElementById('info_member').style.display = "block";
  getInviteList();
  getMemberList();
  for_update = new Array();for_add = new Array();
  update_count = 0;add_count = 0;
}

function customDisplaySpaceRightsOnChange(status) {
  var prefix = "XWiki.XWikiGlobalRights";
  var args = "";
  if (status == "private") {
    args = prefix + "_5_users=XWiki.XWikiGuest&" + prefix + "_5_levels=&" + prefix + "_5_allow=1";
    args += "&" +prefix + "_4_groups=XWiki.XWikiAllGroup&" + prefix + "_4_levels=&" + prefix + "_4_allow=1";
    args += "&XWiki.XWikiPreferences_0_access_right=private";
  }
  if (status == "restricted") {
    args = prefix + "_5_users=XWiki.XWikiGuest&" + prefix + "_5_levels=&" + prefix + "_5_allow=1";
    args += "&" +prefix + "_4_groups=XWiki.XWikiAllGroup&" + prefix + "_4_levels=view&" + prefix + "_4_allow=1";
    args += "&XWiki.XWikiPreferences_0_access_right=restricted";
  }
  if (status == "public") {
    args = prefix + "_5_users=XWiki.XWikiGuest&" + prefix + "_5_levels=view&" + prefix + "_5_allow=1";
    args +=  "&"+ prefix + "_4_groups=XWiki.XWikiAllGroup&" + prefix + "_4_levels=view&" + prefix + "_4_allow=1";
    args += "&XWiki.XWikiPreferences_0_access_right=public";
  }

  var surl = getXWikiURL(spaceRoot, "WebPreferences", "save", "");
  var myAjax = new Ajax.Request (
    surl, 
    {
      method: 'post',
      postBody: args,
      onComplete: function() {
      }
    });
}

function addCommentToPage(space,page){
  var docid = space + "." + page;
  var formid = $("comments_"+space+"."+page+"_write").id;
  var url = getXWikiURL(space, page, "commentadd", "");
  var args = "xpage=plain" ;
  var inputs=$(formid).getElementsByTagName("input");
  args += "&XWiki.XWikiComments_author=" + $(docid+'_XWiki.XWikiComments_author').value;
  args += "&XWiki.XWikiComments_date=" + $(docid+'_XWiki.XWikiComments_date').value;
  args += "&XWiki.XWikiComments_comment=" + $(docid+'_XWiki.XWikiComments_comment').value;
  args += "&XWiki.XWikiComments_valid=" +  $(docid+'_XWiki.XWikiComments_isValid').value;

  var myAjax = new Ajax.Request (
  url,
  {
	method: 'post',
	postBody: args,
	onComplete:
         function(request){
		loadCommentHolderContent(space+"."+page,"false","true","commentadded");
         }
   });
}

function displayCommentsInfoMessage(space,page,msgid)
{
	var surl = getXWikiURL(space, "WebHome", "view", "");
	var args="xpage=plain&do=infomsg&msgid="+msgid;
  	var myAjax = new Ajax.Request (
     	surl,
     	{
       		method: 'post',
       		postBody: args,
       		onComplete:
			function(request)
			{
				$("comments_"+space+"."+page+"_info").innerHTML = request.responseText;
				$("comments_"+space+"."+page+"_info").style.display = "block";
			}
     	}
  	);
}

function removePageComment(space,page,comment)
{
  var args="classname=XWiki.XWikiComments&classid="+comment;
  var surl = getXWikiURL(space, page, "objectremove", "");
  var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: 
         function(request){
		var showform = $("comments_"+space+"."+page+"_write").style.display == "block" ? "true" : "false";
                var showcomments = $("comments_"+space+"."+page+"_read").style.display == "block" ? "true" : "false";
		loadCommentHolderContent(space+"."+page,showform,showcomments,"commentremoved");
         }
     }
  );
}

function hidePageComment(space,page,number)
{
  var args="do=hidecomment&xpage=plain&page=" + page + "&number="+number;
  var surl = getXWikiURL(space, "WebHome", "view", "");
  var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: 
         function(request){
	   $("comments_"+space+"."+page+"_info").innerHTML = request.responseText;
	   $("comments_"+space+"."+page+"_info").style.display = "block";
	   loadPageComments(space+"."+page,"r");
         }
     }
  );
}

function validatePageComment(space,page,number)
{
  var args="do=validatecomment&xpage=plain&page=" + page + "&number="+number;
  var surl = getXWikiURL(space, "WebHome", "view", "");
  var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: 
         function(request){
	   $("comments_"+space+"."+page+"_info").innerHTML = request.responseText;
	   $("comments_"+space+"."+page+"_info").style.display = "block";
	   loadPageComments(space+"."+page,"r");
         }
     }
  );
}

function loadCommentHolderContent(page,showform,showcomments,infomsg)
{
  var args="do=loadcommentblock&xpage=plain&page=" + page + "&showform="+showform+"&showcomments="+showcomments+"&infomsg="+infomsg;
  var surl = getXWikiURL(space, "WebHome", "view", "");
  var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: 
         function(request){
           $("comment_holder_"+page).innerHTML=request.responseText;
         }
     }
  );
}

/**
 * Load and display comments for a page
 */
function loadPageComments(id,show)
{
  var args="do=showcomments&xpage=plain&page=" + id;
  var surl = getXWikiURL(space, "WebHome", "view", "");
  var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: 
         function(request){
           $("comments_"+id).innerHTML=request.responseText;
	   	if(show=="r")
		{
           		$("comments_"+id).style.display="block";
           		$("comments_"+id+"_read").style.display = "block";
		}
	   	if(show=="w")
		{
			$("comments_"+id).style.display="block";
           		$("comments_"+id+"_write").style.display = "block";
		}
         }
     }
  );
}

function togglePageReadComment(id) 
{
  $("comments_"+id+"_read").style.display = $("comments_"+id+"_read").style.display == "none" ? "block" : "none";
}


function togglePageWriteComment(id) {
  if ($("comments_"+id).innerHTML == "")
  {
	loadPageComments(id,"w");
  }
  else $("comments_"+id+"_write").style.display = $("comments_"+id+"_write").style.display == "none" ? "block" : "none";
}

var selected = "";

function getNetworkContacts(letter){
  var args="do=networklist&xpage=plain&letter=" + letter;
  var surl = getXWikiURL(space, docname, "view", "");
  var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: 
         function(request){
           $('network-container').innerHTML=request.responseText;
         }
     }
  );
}

function getNearbeeDirectory(letter){
  var args="do=directorylist&xpage=plain&letter=" + letter;
  var surl = getXWikiURL(space, docname, "view", "");
  var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: 
         function(request){
           $('directory-container').innerHTML=request.responseText;
         }
     }
  );
}

function getContactList(letter){
  var args="do=contactlist&xpage=plain&letter=" + letter;
  var surl = getXWikiURL(space, docname, "view", "");
  var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: showContactList
     }
  );
}

function showContactList(originalRequest){
  $('contact-list').innerHTML = originalRequest.responseText;
}

function addMemberToMyContacts(doc,id){
 var surl = getXWikiURL(spaceRoot + "_AddressBook", "WebHome", "objectadd", "");
 var args="classname=NearbeeClasses.NearbeeContact"
 args += "&NearbeeClasses.NearbeeContact_page="+doc;
 args += "&NearbeeClasses.NearbeeContact_objectid="+id;
  var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: 
        function()
        {
	  getContactListLetters();
          closeBox();
          getNearbeeDirectory('#');
          getContactList('#');
        }
     }
  );
}

function addContact(docontinue){
 var args="do=addcontact&xpage=plain";
 args += "&firstname=" + $('contact_firstname').value;
 args += "&lastname=" + $('contact_lastname').value;
 args += "&email=" + $('contact_email').value;
 args += "&company=" + $('contact_company').value;
 args += "&phone=" + $('contact_phone').value;
 args += "&mobile=" + $('contact_mobile').value;
 var surl = getXWikiURL(space, "WebHome", "view", "");
 if (docontinue==true)
  var myAjax = new Ajax.Request (
	surl,{
		method: 'post',
		postBody: args, 
		onComplete: function(request){
			getContactListLetters();
			getContactList('#')
		}
	}
 );
 else
  var myAjax = new Ajax.Request (
	surl,{
		method: 'post',
		postBody: args,
		onComplete: function(request){
			getContactListLetters();
			closeContactBox();
			getContactList('#')
		}
	});
}

function deleteHardContact(page){
 var surl = getXWikiURL(space, docname, "view", "");
 var args = "xpage=plain&do=deletehardcontact&which="+page;
 var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: 
        function()
        {
	  getContactListLetters();
          getContactList('#');
        }
     }
  );
}

function deleteFarContact(objectid){
 var surl = getXWikiURL(space, docname, "objectremove", "");
 var args = "classname=NearbeeClasses.NearbeeContact&classid="+objectid;
 var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: 
        function()
        {
	  getContactListLetters();
          getContactList('#');
	  getNearbeeDirectory('#');
	  getNetworkContacts('#');
        }
     }
  );
}

function updateContacts(request){
 $('addcontactinfo').innerHTML = request.responseText;
 getContactList('')
}

function closeContactBox(request){
 $('lb-content').innerHTML = "";
 toggleClass($('lb-align'), 'hidden');
 toggleClass($('lb-bg'), 'hidden');
 getContactList('')
}

function showBoxHCard(doc,id){
 var args="nearbeeGsDo=showlbHcard&xpage=plain";
 args += "&pagename=" + doc + "&objectid=" + id;
 var surl = getXWikiURL(space, "WebHome", "view", "");
 var myAjax = new Ajax.Request (
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: showLightBoxContent
     }
  );
}

function showHCard(doc,id){
 if (selected != "" && selected != doc+'-'+id && $('hcard-'+selected)) {
   $('hcard-'+selected).style.display = "none";
   $('header-'+selected).style.display = "table-row";
 }
 $('hcard-'+doc+'-'+id).style.display =
 $('hcard-'+doc+'-'+id).style.display == "block" ? "none" : "block";

 $('header-'+doc+'-'+id).style.display = 
 $('header-'+doc+'-'+id).style.display == "none" ? "table-row" : "none";

 selected = doc+'-'+id;
 if($('hcard-'+doc+'-'+id).innerHTML == ""){
 var args="do=showcard&xpage=plain";
 args += "&pagename=" + doc + "&objectid=" + id;
 var surl = getXWikiURL(space, "WebHome", "view", "");
 var myAjax = new Ajax.Updater(
   'hcard-'+doc+'-'+id, 
	surl, 
	{
	method: 'get', 
	parameters: args 
	});
 }
}

function getContactListLetters(){
 var surl = getXWikiURL(space, "WebHome", "view", "");
 var args = "do=contactlistletters&xpage=plain";
 var myAjax = new Ajax.Request(
     surl,
     {
       method: 'post',
       postBody: args,
       onComplete: 
	function(request){
		$('contact-list-alpha').innerHTML = request.responseText;
	}
     }
  );
}

function changeTab(nbrtab, numselect) {
  if ($('contenttab'+numselect).className == 'inactive') { // si l'onglet est cliquable --> le mettre actif , remettre les autres inactif
    for (i=1; i<=nbrtab; i++) {
      forceClass($('contenttab'+i),'inactive');
      forceClass($('contenttabcontent'+i),'hidden');
    }
    forceClass($('contenttab'+numselect),'active');
    rmClass($('contenttabcontent'+numselect),'hidden');
  }
}

function changeSubTab(nbrtab, numselect) {
  if ($('contentsubtab'+numselect).className == 'inactive') { // si l'onglet est cliquable --> le mettre actif , remettre les autres inactif
    for (i=1; i<=nbrtab; i++) {
      forceClass($('contentsubtab'+i),'inactive');
      forceClass($('contentsubtabcontent'+i),'hidden');
    }
    forceClass($('contentsubtab'+numselect),'active');
    rmClass($('contentsubtabcontent'+numselect),'hidden');
  }
}

function forceClass(o, className) {
  if(!eltHasClass(o,className)) {
    o.className = className
  }
}

