var initDOM = false;
var $box_everybody, $box_registered, $box_contacts, $box_nobody;

function enable_box($obj)
{
	if (!initDOM)
        return;
	$obj.addClass('active');
	$obj.children(':first').attr('checked', 'true');
}

function disable_box($obj)
{
	if (!initDOM)
        return;
	$obj.removeClass('active');
	$obj.children(':first').removeAttr('checked');
}

function enable_all_group()
{
	if (!initDOM)
        return;
	$groups = $("span[id^='group_']");
	enable_box($groups);
	$more = $groups.parent().next();
	$checkboxes = $more.find(".checkbox");
	$elk = $checkboxes.find(':first');
	$checkboxes.addClass('active');
	$elk.attr('checked', 'true');
}

function disable_all_group()
{
	if (!initDOM)
        return;
	$groups = $("span[id^='group_']");
	disable_box($groups);
	$more = $groups.parent().next();
	$checkboxes = $more.find(".checkbox");
	$elk = $checkboxes.find(':first');
	$checkboxes.removeClass('active');
	$elk.removeAttr('checked');
}

function show_item($obj1)
{
	if (!initDOM)
        return;
	$obj1.parent().parent().show();
}

$(document).ready(function()
{	
	//Enable all functions
    initDOM = true;
	
	function is_group($obj)
	{
		return $(this).parent().parent().hasClass("item");
	}
	
	function get_group_checkbox($obj)
	{
		return $obj.parent().parent().parent().parent().parent().prev().children(":first");
	}
	
	//клик на чекбокс
    $(".checkbox").live('click', function()
	{
		disable_box($box_everybody);
		disable_box($box_registered);
		disable_box($box_contacts);
		disable_box($box_nobody);
			
        var $el = $(this).children(':first');
        if ($el.attr('checked'))
        {
            $el.removeAttr('checked');
            $(this).removeClass('active');
			if (!is_group($(this)))
			{
				var $group_title = get_group_checkbox($(this));
				$group_title.removeClass('active');
				$group_title.children(':first').removeAttr('checked');
			}
        }
        else
        {			
            $el.attr('checked', 'true');
            $(this).addClass('active');
        }
    });

	//клик на чекбоксе названии группы
	$(".short .checkbox").live('click', function()
	{
        var $el = $(this).children(':first');
		$more = $(this).parent().next();
		$checkboxes = $more.find(".checkbox");
		var $elk = $checkboxes.find(':first');

		if ($el.attr('checked'))
		{
			$checkboxes.removeClass('active');
			$elk.removeAttr('checked');
		}
		else
		{
			$checkboxes.addClass('active');
			$elk.attr('checked', 'true');
			
		}
    });
	
	//клик на название группы
	$(".oCheckOpener > .item > .short > a").live('click', function()
	{
        if ($(this).next().hasClass("active"))
			$(this).parent().next().slideUp('fast');
		else
			$(this).parent().next().slideDown('fast');
			
		$(this).next().toggleClass("active");
		return false;
    });
	
	$(".oCheckOpener > .item > .short > .opener").live('click', function()
	{
		if ($(this).hasClass("active"))
			$(this).parent().next().slideUp('fast');
		else
			$(this).parent().next().slideDown('fast');
			
        $(this).toggleClass("active");
    });
	
	$box_everybody = $("#private_everybody");
	$box_registered = $("#private_registered");
	$box_contacts = $("#private_contacts");
	$box_nobody = $("#private_nobody");
	
	//просмотр всем
	$box_everybody.live('click', function()
	{
        enable_box($box_everybody);
		disable_box($box_registered);
		disable_box($box_contacts);
		disable_box($box_nobody);
		
		disable_all_group();
    });
	//только рег
	$box_registered.live('click', function()
	{
        disable_box($box_everybody);
		enable_box($box_registered);
		disable_box($box_contacts);
		disable_box($box_nobody);
		
		disable_all_group();
    });
	//только контакты
	$box_contacts.live('click', function()
	{
        disable_box($box_everybody);
		disable_box($box_registered);
		enable_box($box_contacts);
		disable_box($box_nobody);
		
		enable_all_group();
    });
	//только я
	$box_nobody.live('click', function()
	{
        disable_box($box_everybody);
		disable_box($box_registered);
		disable_box($box_contacts);
		enable_box($box_nobody);
		
		disable_all_group();
    });
	
    //private_pop("Настройка приватности");
});

function make_group(group_data, allow_type)
{
	if (!initDOM)
        return;
	var result = '<div class="item">'+
					'<div class="short">'+
						'<span class="checkbox'+((allow_type=='MANUAL'&&group_data.checked>0)||allow_type=='CONTACTS'?' active':'')+'" id="group_'+group_data.group_id+'"><input type="checkbox"'+((allow_type=='MANUAL'&&group_data.checked>0)||allow_type=='CONTACTS'?' checked':'')+'/></span>'+
						'<a href="">'+group_data.group_name+'</a>'+
						'<span class="opener"></span>'+
					'</div>';
	var count = group_data.users.length;
	if (count > 0)
	{
		result += '<div class="more" style="display:none;">'+
					'<div class="oCheckList2"><div class="in">';
		
		for (j=0; j<count; j++)
		{
			result += '<div class="item"><div class="in">'+
						'<span class="checkbox'+(allow_type=='MANUAL'&&group_data.checked>0||group_data.users[j].checked>0?' active':'')+'" id="user_'+group_data.users[j].user_id+'"><input type="checkbox"'+(allow_type=='MANUAL'&&group_data.checked>0||group_data.users[j].checked>0?' checked':'')+'/></span>'+
						'<div class="text">'+group_data.users[j].name+'</div>'+
					  '</div></div>';
		}
		
		result += '</div></div>'+
				'</div>';
	}
	
	result += '</div>';
	
	return result;
}

function get_allow_type()
{
	if (!initDOM)
        return;
	if ($box_everybody.hasClass("active"))
		return 2;
	if ($box_registered.hasClass("active"))
		return 3; 
	if ($box_contacts.hasClass("active"))
		return 4;
	if ($box_nobody.hasClass("active"))
		return 1;
		
	return 5;
}

function get_group_list()
{
	if (!initDOM)
        return;
	$groups = $("span.active[id^='group_']");
	var result = [];
	$groups.each(function()
	{
		result.push('"'+$(this).attr("id")+'"');
	});
	
	return "["+result+"]";
}

function get_friend_list()
{
	if (!initDOM)
        return;
	$users = $("span.active[id^='user_']");
	var result = [];
	$users.each(function()
	{
		result.push('"'+$(this).attr("id")+'"');
	});
	
	return "["+result+"]";
}

function private_pop(title)
{
	if (!initDOM)
        return;
		
	$box_everybody = $("#private_everybody");
	$box_registered = $("#private_registered");
	$box_contacts = $("#private_contacts");
	$box_nobody = $("#private_nobody");
	
    var $popup = $("#popup_private");
    var $popup_ajax = $popup.find(".ajaxLoaderP");
	var $title = $("#popup_private_title");
	
	$title.html(title);
	
    $popup.modal(
    {
        closeClass: "cancel", 
        opacity:30,
        overlayCss: {backgroundColor:"#000"},
        onShow: function (dialog) 
        {
            $popup_ajax.show();
            var list;
            $.ajax(
            {
                type: "POST", 
                url: "processing.php", 
                data: {
                    'page': 'privateset',
                    'action': 'get_list', 
					'source_id': private_source_id,
					'source_type': private_source_type,
                    'rnd': Math.random(100)
                },
                dataType: "json",
                beforeSend: function(xhr) 
                {
                    xhr.setRequestHeader("Cookie", document.cookie);
                },
                success: function(data)
                {
                    $popup_ajax.hide();
                   
                    if (data.success != 1)
						//TODO:!!
                        $.modal.close();
                    
					var content = data.data;
					
					show_item($box_everybody);
					show_item($box_registered);
					show_item($box_contacts);
					show_item($box_nobody);
					
					disable_box($box_everybody);
					disable_box($box_registered);
					disable_box($box_contacts);
					disable_box($box_nobody);
					
					if (data.allow_type == null || data.allow_type == 'EVERYBODY')
						enable_box($box_everybody);
					if (data.allow_type == 'REGISTERED')
						enable_box($box_registered);
					if (data.allow_type == 'CONTACTS')
						enable_box($box_contacts);
					if (data.allow_type == 'NOBODY')
						enable_box($box_nobody);
						
					
					var group_count = content.length;
					var result = '';
					for (i=0; i<group_count; i++)
					{
						result += make_group(content[i], data.allow_type);
					}
					$("#popup_private_items").append(result);
                },
                error: function(XMLHttpRequest, textStatus, errorThrown)
                {
                }
            });            
			
			//Сохраняем
			$popup.find(".save").click(function()
			{
				$popup_ajax.show();
				
				$.ajax(
				{
					type: "POST", 
					url: "processing.php", 
					data: {
						'page': 'privateset',
						'action': 'save_private', 
						'source_id': private_source_id,
						'source_type': private_source_type, 
						'allow_type': get_allow_type(),
						'grouplist': get_group_list(),
						'friendlist': get_friend_list(),
						'rnd': Math.random(100)
					},
					dataType: "json",
					beforeSend: function(xhr) 
					{
						xhr.setRequestHeader("Cookie", document.cookie);
					},
					success: function(data)
					{
						$popup_ajax.hide();
						$.modal.close();
					},
					error: function(XMLHttpRequest, textStatus, errorThrown)
					{
					}
				});
					
				return false;
			});
        }
    });
}
