$(function()
{
	var fields = new intelli.fields({
		id: 'fields',
		part: 'suggest',
		restore: true,
		session: sessvars.fields
	});

	/* Setting up the tree categories */
	var treeCat = new intelli.tree({
		id: 'tree',
		type: 'radio',
		expandableLocked: true,
		hideRoot: true,
		menuType: intelli.config.categories_tree_type,
		callback: function()
		{
			/* array crossed categories */
			var crossed = $('#multi_crossed').val().split(',');
			var catId = $(this).val().replace('_crs', '');
			var letter = $('#prefix_mCrossTree').val();

			/* hiding any notification boxes */
			intelli.display('notification', 'hide');

			if(intelli.inArray(crossed, catId))
			{
				$('#mcrossedCat_' + catId).remove();

				crossed = intelli.remove(crossed, catId);

				$('#multi_crossed').val(crossed.join(','));

				$('#cat_' + letter + '_' + catId).attr('checked', '');

				intelli.error(intelli.lang.cross_warning);
			}
			else
			{
				$('#categoryTitle > strong').text($(this).attr('title'));
				$('#category_id').val(catId);
			}

			fields.fillFields();
		},
		dropDownCallback: function(id, title)
		{
			/* array crossed categories */
			var crossed = $('#multi_crossed').val().split(',');

			/* hiding any notification boxes */
			intelli.display('notification', 'hide');

			if(intelli.inArray(id, crossed))
			{
				$('#mcrossedCat_' + id).remove();

				crossed = intelli.remove(crossed, id);

				$('#multi_crossed').val(crossed.join(','));

				$('#cat_' + letter + '_' + id).attr('checked', '');

				intelli.error(intelli.lang.cross_warning);
			}
			else
			{
				$('#categoryTitle > strong').text(title);
				$('#category_id').val(id);
			}

			fields.fillFields();
		}
	});

	/* Initialization tree categories */
	treeCat.init();

	intelli.display('#treeContainer', 'show');

	/* Event handler for displaying tree categories */
	$('#changeLabel').click(function()
	{
		intelli.display('#treeContainer', 'auto'); 

		if(intelli.lang.change == $(this).text())
		{
			$(this).text(intelli.lang.apply);
		}
		else
		{
			$(this).text(intelli.lang.change);
		}
	});

	/* Multicross */

	/* Showing up the multi cross tree */
	if(1 == intelli.config.mcross_functionality)
	{
		intelli.display('mCrossDiv', 'show');

		/* Event handler for displaying multi cross tree */
		$('#crossLabel').click(function()
		{
			intelli.display('mCrossContainer', 'auto');
		});

		/* Setting up the multi cross tree categories */
		var crossedCat = new intelli.tree({
			id: 'mCrossTree',
			type: 'checkbox',
			state: '',
			hideRoot: true,
			defaultCategory: [{id: 0, title: 'ROOT', sub: true, disabled: true, checked: false}],
			callback: function()
			{
				/* this object */
				var thisItem = $(this);

				/* id checked category */
				var thisId = thisItem.attr('id').split('_')[2];

				/* id plan */
				var planId = fields.getIdPlan();

				/* id category */
				var catId = fields.getIdCategory();

				/* array crossed categories */
				var crossed = $('#multi_crossed').val().split(',');

				/* max number of crossed categories */
				/* if there is no limit for plan, therefore use script configuration */
				var maxCrossed = ($('#planCrossedMax_' + planId).val() > 0) ? $('#planCrossedMax_' + planId).val() : intelli.config.mcross_number_links;
				
				var error = false;
				var html = '';

				intelli.display('notification', 'hide');

				crossed = ('' == crossed) ? [] : crossed;

				if(thisItem.attr('checked'))
				{
					if(crossed.length + 1 > maxCrossed)
					{
						intelli.error(intelli.lang.mcross_warning);
						error = true;
					}

					if(catId == thisId)
					{
						intelli.error(intelli.lang.cross_warning);
						error = true;
					}

					if(!error)
					{
						html += '<p id="mcrossedCat_'+ thisId +'">';
						html += '<b>';
						html += thisItem.attr('title');
						html += '</b>';
						html += '</p>';

						$('#crossedCategories').append(html);

						if(!intelli.inArray(crossed, thisId))
						{
							crossed.push(thisId);
						}

						$('#multi_crossed').val(crossed.join(','));
					}
					else
					{
						thisItem.attr('checked', '');
					}
				}
				else
				{
					$('#mcrossedCat_' + thisId).remove();

					crossed = intelli.remove(crossed, thisId);

					$('#multi_crossed').val(crossed.join(','));
				}
			}
		});

		/* Initialization multi cross tree */
		crossedCat.init();
	}

	/* Deep links */
	var deeplinks = new intelli.deeplinks({
		id: 'deepLinks',
		container: 'deepLinksDiv',
		restore: true,
		session: sessvars.deeplinks
	});

	/* Plans */
	
	/* If plans exist */
	if($('#plans').length > 0)
	{
		var plans = new intelli.plans({
			id: 'plans',
			idPlan: sessvars.idPlan,
			callback: function()
			{
				var idPlan = $(this).val();
				var numDeepLinks = $('#planDeepLinks_' + idPlan).val();

				intelli.display('#divSuggestButton', 'hide');
				intelli.display('#divSaveChanges', 'show');

				intelli.display('notification', 'hide');

				fields.fillFields();

				if(1 == intelli.config.mcross_only_sponsored)
				{
					if(0 == $('#planCost_' + idPlan).val())
					{
						$('#multi_crossed').val('');
						intelli.display('mCrossDiv', 'hide');
					}
					else
					{
						intelli.display('mCrossDiv', 'show');
					}
				}

				if(numDeepLinks > 0)
				{
					deeplinks.create(numDeepLinks);
					deeplinks.display('show');
				}
				else
				{
					deeplinks.display('hide');
				}

				if($('#planCost_' + idPlan).val() > 0)
				{
					intelli.display('gateways', 'show');

					if(intelli.config.reciprocal_check)
					{
						intelli.display('reciprocal', 'show');
					}
				}
				else
				{
					intelli.display('gateways', 'hide');

					if(intelli.config.reciprocal_check || intelli.config.reciprocal_required_only_for_free)
					{
						intelli.display('reciprocal', 'show');
					}
				}
			}
		});
		plans.init();
	}

	var numDeepLinks = $('#planDeepLinks_' + fields.getIdPlan()).val();

	if(numDeepLinks > 0)
	{
		deeplinks.create(numDeepLinks);
		deeplinks.display('show');
	}

	// TODO: checking
	if($('#planCost_' + fields.getIdPlan()).val() > 0)
	{
		intelli.display('gateways', 'show');

		if(intelli.config.reciprocal_check)
		{
			intelli.display('reciprocal', 'show');
		}
		else
		{
			intelli.display('reciprocal', 'hide');
		}
	}
	else
	{
		intelli.display('gateways', 'hide');
		
		if(intelli.config.reciprocal_check || intelli.config.reciprocal_required_only_for_free)
		{
			intelli.display('reciprocal', 'show');
		}
		else
		{
			intelli.display('reciprocal', 'hide');
		}
	}

	fields.fillFields();

	var text = 'none' == $("#treeContainer").css("display") ? intelli.lang.change : intelli.lang.apply;

	$('#changeLabel').text(text);

	/* Save button event */
	$('#saveChanges').click(function()
	{
		/* Saving the current values */
		sessvars.fields = fields.getLastState();
		sessvars.deeplinks = deeplinks.getLastState();
		sessvars.idPlan = fields.getIdPlan();

		intelli.display('notification', 'hide');
		$("#check_field").html('<div class="notification"><ul><li>' + intelli.lang.check_listing_fields + '</li></ul></div>');

		intelli.display($(this), 'hide');
		intelli.display('divSuggestButton', 'show');

		$('html, body').animate({scrollTop: $('#notification').offset().top}, 'slow');

		return false;
	});
});

