var Notes = function()
{
//privat
	var currentVarietalChar;
	var varietals = Array();
	var currentRegionChar;
	var regions = Array();
	var currentWineryChar;
	var wineries = Array();

	var varietalDialogueContainer = "#varietalDialogueContainer";
	var varietalContainer = "#varietalContainer";
	var regionDialogueContainer = "#regionDialogueContainer";
	var regionContainer = "#regionContainer";
	var wineryDialogueContainer = "#wineryDialogueContainer";
	var wineryContainer = "#wineryContainer";
	var shade = "#shade";

	var GetVarietalCallback = function(response, status)
	{
		
		if (response.status = "OK")
		{
			if (response.data == null)
				varietals[this.char] = Array();
			else
				varietals[this.char] = response.data;
			Notes.ShowVarietal();
		}
	};

	var GetRegionCallback = function(response, status)
	{
		if (response.status = "OK")
		{
			if (response.data == null)
				regions[this.char] = Array();
			else
				regions[this.char] = response.data;
			Notes.ShowRegion();
		}
	};

	var GetWineryCallback = function(response, status)
	{
		if (response.status = "OK")
		{
			if (response.data == null)
				wineries[this.char] = Array();
			else
				wineries[this.char] = response.data;
			Notes.ShowWinery();
		}
	};

//public
return {
	Initialize: function(varietalChar, regionChar, wineryChar)
	{
		currentVarietalChar = varietalChar;
		varietalDialogueContainer = jQuery(varietalDialogueContainer);
		varietalContainer = jQuery(varietalContainer);
		currentRegionChar = regionChar;
		regionDialogueContainer = jQuery(regionDialogueContainer);
		regionContainer = jQuery(regionContainer);
		currentWineryChar = wineryChar;
		wineryDialogueContainer = jQuery(wineryDialogueContainer);
		wineryContainer = jQuery(wineryContainer);
		shade = jQuery(shade);
	},

	ShowVarietal: function(char)
	{  	
		if (char != undefined)
			currentVarietalChar = char;
		if (varietals[currentVarietalChar] == undefined)
		{
			varietals[currentVarietalChar] = "load";
			
			jQuery.ajax(
				{
					url: "/tasting-notes",
					type: "post",
					data: "&type=ajax&value=varietal&char=" + currentVarietalChar,
					dataType: "json",
					char: currentVarietalChar,
					success: GetVarietalCallback
				});
              
		}
		else
		{
			if (varietals[currentVarietalChar] != "load")
			{   
						varietalContainer.empty();
				for (var i in varietals[currentVarietalChar])
					varietalContainer.append("<li style=\"padding-left: 3px;\"><a href=\"/note/list/varietal/" + varietals[currentVarietalChar][i].seoCategory + "\">" + varietals[currentVarietalChar][i].category + " (" + varietals[currentVarietalChar][i].count + ")" + "</a></li>");
				varietalDialogueContainer.show();
				shade.show();
			}
		}
	},

	HideVarietal: function()
	{
		varietalDialogueContainer.hide();
		shade.hide();
	},

	ScrollToRegion: function(char)
	{
		char = jQuery("#region_char_" + char)[0];
		regionContainer[0].scrollTop = char.offsetTop - char.scrollHeight - 31;
	},
	FindVarietal: function()
	{
			$.ajax({
			url: "/tasting-notes",
			type: "post",
			data: "&type=ajax&value=varietal&string=" + $('#varietal').val(),
			dataType: "json",
			success: function (r)
			{
				
				r = eval(r);
				varietalContainer.empty();

				for (var i in r.data)
				{   
					varietalContainer.append("<li style=\"padding-left: 3px;\"><a href=\"/note/list/varietal/" + r.data[i].seoCategory + "\">" + r.data[i].category + " (" + r.data[i].count + ")" + "</a></li>");
				}

				varietalDialogueContainer.show();
				shade.show();
			}

		});
	},

	FindWinery: function()
	{
		$.ajax({
			url: "/tasting-notes",
			type: "post",
			data: "&type=ajax&value=winery&string="+ $('#winery').val(),
			dataType: "json",
			success: function (r)
			{
				r = eval(r);
				wineryContainer.empty();

				for (var i in r.data)
				{
					wineryContainer.append("<li style=\"padding-left: 3px;\"><a href=\"/note/list/varietal/" + r.data[i].seoCategory + "\">" + r.data[i].category + " (" + r.data[i].count + ")" +"</a></li>");
				}

				wineryDialogueContainer.show();
				shade.show();
			}

		});
	},

	ShowRegion: function(char)
	{
		 regionDialogueContainer.show();
				shade.show();
//		if (char != undefined)
//			currentRegionChar = char;
//		if (regions[currentRegionChar] == undefined)
//		{
//			regions[currentRegionChar] = "load";
////prev
////			jQuery.ajax(
////				{
////					url: "/tasting-notes/ajax/region",
////					type: "post",
////					data: "&char=" + currentRegionChar,
////					dataType: "json",
////					char: currentRegionChar,
////					success: GetRegionCallback
////				});
//                regionDialogueContainer.show();
//				shade.show();
//		}
//		else
//		{
//			if (regions[currentRegionChar] != "load")
//			{
//				regionContainer.empty();
//				for (var i in regions[currentRegionChar])
//					regionContainer.append("<li style=\"padding-left: 3px;\"><a href=\"/note/list/region/" + regions[currentRegionChar][i].seoCategory + "\">" + regions[currentRegionChar][i].category + " (" + regions[currentRegionChar][i].count + ")" + "</a></li>");
//				regionDialogueContainer.show();
//				shade.show();
//			}
//		}
	},

	HideRegion: function()
	{
		regionDialogueContainer.hide();
		shade.hide();
	},

	ShowWinery: function(char)
	{
		if (char != undefined)
			currentWineryChar = (char == "+" ? "plus" : char);
		if (wineries[currentWineryChar] == undefined)
		{
			wineries[currentWineryChar] = "load";
			jQuery.ajax(
				{
					url: "/tasting-notes",
					type: "post",
					data: "&type=ajax&value=winery&char=" + currentWineryChar,
					dataType: "json",
					char: currentWineryChar,
					success: GetWineryCallback
				});
				
		}
		else
		{
			if (wineries[currentWineryChar] != "load")
			{
				wineryContainer.empty();
				for (var i in wineries[currentWineryChar])
					wineryContainer.append("<li style=\"padding-left: 3px;\"><a href=\"/note/list/winery/" + wineries[currentWineryChar][i].seoCategory + "\">" + wineries[currentWineryChar][i].category + " (" + wineries[currentWineryChar][i].count + ")" + "</a></li>");
				wineryDialogueContainer.show();
				shade.show();
			}
		}
	},

	HideWinery: function()
	{
		wineryDialogueContainer.hide();
		shade.hide();
	}
};
}();
