
var SERVICE_URL = './service.php';

var g_GroupContainerId = '';


/**
*	Scriptaculous customization block
*/

function addDraggable(item_index){
	new Draggable('friend_'+item_index, {revert:true})
}

function addDroppable(group_id){
	Droppables.add(group_id, {accept:'username', onDrop:function(element){var member_id = element.id.replace('friend_', '');AddMember(group_id.replace('group_', ''), member_id);},hoverclass:'dragover'});
}

function removeDroppable(el_id){
	el = document.getElementById(el_id);
	if(el)
		Droppables.remove(el);
}

function initDragDrop(){
	tempArr = document.getElementsByTagName('div');
	for(var i = 0; i < tempArr.length; i++){
		if(tempArr[i].className.indexOf('username') > -1)
			addDraggable(tempArr[i].id.replace('friend_', ''));
//		else if(tempArr[i].className.indexOf('group') > -1)
//			addDroppable(tempArr[i].id.replace('group_', ''));
	}
}

function initAll(){
	window.location.reload();
//	initDragDrop();
}

window.onload=function()
{
//	initAll();
}

/*	/ Scriptaculous customization block	*/


function showTabContent(tab_id){
	
	var elements = document.getElementsByTagName("li");
	for (var ti = 0; ti < elements.length; ti++)
	{
        var li = elements[ti];
		if((' '+li.id+' ').indexOf("tab_") != -1){
			// if this is the tab
			if(li.id == ("tab_" + tab_id)){
				li.className = "tab tab_inactive";
			}else{
				li.className = "tab tab_active";
			}
        }
    }
	
	elements = document.getElementsByTagName("div");
	for (var ti = 0; ti < elements.length; ti++)
	{
        var div = elements[ti];
		if((' '+div.id+' ').indexOf("tab_content_") != -1){
			// if this is the tab_content
			if(div.id == ("tab_content_" + tab_id)){
				div.style.display = "block";
			}else{
				div.style.display = "none";
			}
        }
    }
}


/**
*	Get reading list
*/
function getReadingList(offset, task, target_el_id){
	var params = 'task='+task+'&offset='+offset;//get_readings

	scroll(0,0);
	var readingsContainer = document.getElementById(target_el_id);
	if(readingsContainer){
		readingsContainer.innerHTML = "<div class='img_loading'><img src='./images/ajax-loader.gif' alt='' /></div>";
	}
	PostData(SERVICE_URL, params, handleGetReadingList, target_el_id);//'tab_content_0'
}
/*
function getMySpreads(offset){

	var params = 'task=get_myspreads&offset='+offset;

	PostData(SERVICE_URL, params, handleGetReadingList, 'tab_content_1');
}

function getFavorites(offset){

	var params = 'task=get_favorites&offset='+offset;

	PostData(SERVICE_URL, params, handleGetReadingList, 'tab_content_2');
}
*/
function handleGetReadingList(http, target_el_id){
	var result = http.responseText;

	if(0 && result.toLowerCase().indexOf('error') != -1){
		alert(result);
	}else{
		var readingsContainer = document.getElementById(target_el_id);
		if(readingsContainer){
			readingsContainer.innerHTML = result;
		}
	}
}
/*
*	[END] Get reading list
**/

/**
*	Ban contact
*/
function ban(contact_id)
{
	if(!contact_id)
		return;

	var params = 'task=ban_contact&uid='+contact_id;

	PostData(SERVICE_URL, params, handleBan);
}

function handleBan(http)
{
	var result = http.responseText;

	if(result.toLowerCase().indexOf('error') != -1){
		alert(result);
	}else{
		arr2 = result.split(DELIMITER);

		if(arr2[0] == 'banned_uid')
			var uid = arr2[1];

//		alert('The contact was successfully added to your invisible list.');
		getReadingList(0, 'get_readings', 'tab_content_0');
	}
}
/*
*	[END] Ban contact
**/

/**
*	Unban contact
*/
function unban(contact_id)
{
	if(!contact_id)
		return;

	var params = 'task=unban_contact&uid='+contact_id;

	PostData(SERVICE_URL, params, handleUnban);
}

function handleUnban(http)
{
	var result = http.responseText;

	if(result.toLowerCase().indexOf('error') != -1){
		alert(result);
	}else{
		arr2 = result.split(DELIMITER);

		if(arr2[0] == 'unbanned_uid')
			var uid = arr2[1];

		var unbannedContact = document.getElementById('banned_friend_' + uid);
		if(!unbannedContact){
			alert('Failed to remove contact from invisible list.');
			return;
		}
		unbannedContact.parentNode.removeChild(unbannedContact);
	}
}
/*
*	[END] Unban contact
**/

/**
*	Get another chunk of banned contacts
*/
function getBannedContacts(offset)
{
	if(!offset || (0 > offset))
		offset = 0;

	var params = 'task=get_banned_contacts&offset='+offset;

	PostData(SERVICE_URL, params, handleGetBannedContacts, 'tab_content_1');
}

function handleGetBannedContacts(http, target_el_id)
{
	// if there hasn't been any errors
	if (NORMAL_STATE == http.readyState && 200 == http.status)
	{
		var result = http.responseText;

		if(result.toLowerCase().indexOf('error') != -1){
			alert(result);
		}else{
			
			var ContactsContainer = document.getElementById(target_el_id);
			ContactsContainer.innerHTML = result;
//			initAll();
		}
	}
}
/*
*	[END] Get another chunk of banned contacts
**/

/**
*	Get another chunk of contacts
*/
function getContacts(offset)
{
	if(!offset || (0 > offset))
		offset = 0;

	var params = 'task=get_contacts&offset='+offset;

	PostData(SERVICE_URL, params, handleGetContacts, 'tab_content_0');
}

function handleGetContacts(http, target_el_id)
{
	// if there hasn't been any errors
	if (NORMAL_STATE == http.readyState && 200 == http.status)
	{
		var result = http.responseText;

		if(result.toLowerCase().indexOf('error') != -1){
			alert(result);
		}else{
			
			var ContactsContainer = document.getElementById(target_el_id);
			ContactsContainer.innerHTML = result;
			initDragDrop();
//			initAll();
		}
	}
}
/*
*	[END] Get another chunk of contacts
**/

function UpdateGroup(group_id, title)
{
	if(!group_id || !title)
		return;
	
	var group_real_id = group_id.replace('GroupTitle_', '');

	var params = 'task=ren_group' + '&group_id='+group_real_id+'&title='+title;

	PostData(SERVICE_URL, params, handleUpdateGroup);
}

function handleUpdateGroup()
{
	// if there hasn't been any errors
	if (NORMAL_STATE == http.readyState && 200 == http.status)
	{
		var result = http.responseText;

		if(result.toLowerCase().indexOf('error') != -1)
		{
			alert(result);
		}
	}
}



function UpdateText(el_class, value)
{
  if(!el_class || !value)
    return;
  
  // Parse the class into tokens
  var tokens = el_class.split('_-_');
  var id = tokens[3];
  var lang = tokens[2];

  var params = 'task=edit_text' + '&id='+id+'&lang='+lang+'&value='+value;

  PostData(SERVICE_URL, params, handleUpdateText, el_class);
}

function handleUpdateText(http, el_class)
{
  // if there hasn't been any errors
  if (NORMAL_STATE == http.readyState && 200 == http.status)
  {
    var result = http.responseText.replace("\\'","'");

    var els = $$('span.' + el_class);
    if(!els){
      alert('Error! Cannot find "' + el_class + '"');
      return;
    }

    for(var i = 0; i < els.length; i++){
      els[i].innerHTML = result;
    }
  }
}


function AddNewGroup(account_id, gr_cont_id)
{
	if(!account_id || !gr_cont_id)
		return;

	g_GroupContainerId = gr_cont_id;
	
	var params = 'task=add_group' + '&account_id='+account_id;

	PostData(SERVICE_URL, params, insertGroup);
}

function AddMember(gr_id, uid)
{
//	alert('AddMember('+gr_id+', '+uid+')');
	if(!gr_id || !uid)
		return;

	var params = 'task=add_member' + '&friend_id='+uid + '&group_id='+gr_id;

	PostData(SERVICE_URL, params, insertMember);
}

function insertMember()
{
	// if there hasn't been any errors
	if (NORMAL_STATE == http.readyState && 200 == http.status)
	{
		var result = http.responseText;
//		alert('result: ' + result);

		if(result.toLowerCase().indexOf('error') != -1)
		{
			alert(result);
		}else{
			arr1 = result.split(DELIMITER + DELIMITER);
			for(i = 0; i < arr1.length; i++)
			{
				arr2 = arr1[i].split(DELIMITER);

				if(arr2[0] == 'html')
					var html = arr2[1];
				else if(arr2[0] == 'group_id')
					var group_id = arr2[1];
				else if(arr2[0] == 'friend_id')
					var friend_id = arr2[1];
			}
			var GroupContainer = document.getElementById('items_' + group_id);

			if(GroupContainer.innerHTML.indexOf('No members') != -1)
			{
				GroupContainer.innerHTML = html;
			}
			else
			{
				GroupContainer.innerHTML += html;
			}
		}
	}
}

/**
*		Delete Member
*/


function DeleteMember(user_id)
{
	var params = 'task=del_member' + '&friend_id='+user_id;

	PostData(SERVICE_URL, params, handleDeleteMember);

}

function handleDeleteMember()
{
	// if there hasn't been any errors
	if (NORMAL_STATE == http.readyState && 200 == http.status)
	{
		var result = http.responseText;

		if(result.toLowerCase().indexOf('error') != -1)
		{
			alert(result);
		}
		else
		{

			arr1 = result.split(DELIMITER);

			var member_id = (arr1[0] == 'deleted') ? arr1[1] : 0;
			
			if(!member_id)
			{
				alert("Failed to delete the group.");
				return;
			}
			var GroupObj = document.getElementById('member_'+member_id);

			GroupObj.parentNode.removeChild(GroupObj);
		}
	}
}
/**
*	[END] Delete Member
*/


/**
*	Delete Group
*/
function DeleteGroup(gr_id)
{
	if(!(gr_id && confirm('Warning! This will permanently delete this group and probably the items that were spreaded to its members. Would you like to proceed?')))
		return;

	var params = 'task=del_group' + '&group_id='+gr_id;

	PostData(SERVICE_URL, params, deleteGroup);

}

function deleteGroup()
{
	// if there hadn't been any errors
	if (NORMAL_STATE == http.readyState && 200 == http.status)
	{
		var result = http.responseText;

		if(result.toLowerCase().indexOf('error') != -1)
		{
			alert(result);
		}
		else
		{

			arr1 = result.split(DELIMITER);

			var group_id = (arr1[0] == 'deleted') ? arr1[1] : 0;
			
			if(!group_id)
			{
				alert("Failed to delete the group.");
				return;
			}
			var GroupObj = document.getElementById('group_'+group_id);
			removeDroppable('group_'+group_id);

			GroupObj.parentNode.removeChild(GroupObj);
		}
	}
}
/**
*	[END] Delete Group
*/


/**
*	Delete Module
*/
function DeleteModule(module_id)
{
	if(!(module_id && confirm('Warning! This will permanently delete this module and its members from the groups. Would you like to proceed?')))
		return;

	var params = 'task=del_module' + '&module_id='+module_id;

	PostData(SERVICE_URL, params, handleDeleteModule);

}

function handleDeleteModule()
{
	// if there hadn't been any errors
	if (NORMAL_STATE == http.readyState && 200 == http.status)
	{
		var result = http.responseText;

		if(result.toLowerCase().indexOf('error') != -1)
		{
			alert(result);
		}
		else
		{
			arr1 = result.split(DELIMITER);

			var module_id = (arr1[0] == 'deleted_module') ? arr1[1] : 0;
			
			if(!module_id)
			{
				alert("Failed to delete the module.");
				return;
			}
			var ModuleObj = document.getElementById('module_'+module_id);

			ModuleObj.parentNode.removeChild(ModuleObj);
		}
	}
}
/**
*	[END] Delete Module
*/






/**
*  Switch item flag contact
*  e.g. Favorite/Delete/(Un)Read
*/
function switch_item_flag(flag_name, item_id, val, update_el_class){
  if(!item_id || !flag_name)
    return;

  var params = 'task=switch_item_flag&flag_name='+flag_name+'&val='+val+'&item_id='+item_id;

  PostData(SERVICE_URL, params, handle_switch_item_flag, update_el_class);
}

function handle_switch_item_flag(http, update_el_class)
{
  var result = http.responseText;
  
  if(result.toLowerCase().indexOf('error') == 0){
    alert(result);
  }else{
    var els = $$('div.' + update_el_class);
    if(!els){
      alert('Error! Cannot find "' + update_el_class + '"');
      return;
    }

    for(var i = 0; i < els.length; i++){
      els[i].innerHTML = result;
    }
    
  }
}
/*
*  [END] Switch item flag
**/



function insertGroup()
{
	// if there hasn't been any errors
	if (NORMAL_STATE == http.readyState && 200 == http.status)
	{
		var result = http.responseText;

		if(result.toLowerCase().indexOf('error') != -1)
		{
			alert(result);
		}
		else
		{
			var GroupContainer = document.getElementById(g_GroupContainerId);

			arr1 = result.split(DELIMITER + DELIMITER);
			for(i = 0; i < arr1.length; i++)
			{
				arr2 = arr1[i].split(DELIMITER);

				if(arr2[0] == 'html')
					var html = arr2[1];
				else if(arr2[0] == 'js')
					var js = arr2[1];
			}
			GroupContainer.innerHTML = html + GroupContainer.innerHTML;
			eval(js);
		}
	}
}
/*
function addDroppable(group_id, draggable_class, members_field_id)
{
	Droppables.add
	(
		group_id, 
		{
			accept:draggable_class, 
			onDrop:function(element)
			{
				new Ajax.Updater
				(
					members_field_id, 
					'./service.php', 
					{
						onLoading:function(request)
						{
							Element.show('indicator')
						}, 
						onComplete:function(request)
						{
							Element.hide('indicator')
						}, 
						parameters:'task=add_member'+'&friend_id=' + encodeURIComponent(element.id) + '&group_id=group_'+group_id,
						evalScripts:true, 
						asynchronous:true
					}
				)
			}, 
			hoverclass:'cart-active'
		}
	)
}
*/
