﻿var CatalogMenu = new function()
{
	this.PageCallBackUrl = "/App_Support/MasterPages/MovieCatalog.aspx";
	this.CatalogMenuOptionsControlName = "CatalogMenuOptions";
	this.FooterPageControlName = "FooterPageControl";
	this.CatalogContentControlName = "MovieCatalogContent";
	this.CatalogContainerControlname = "CatalogMenuContainer";
	this.PagingTopControlName = "";
	this.PagingBottomControlName = "";
	this.ShowPagingControls = true;
	
	this.PageValue = new function()
	{
		this.Category = "";
		this.ProductId = "";
		this.Title = "";
		this.Age = "";
		this.ValueName = "";
		this.Value = "";
		this.Type = "";
		this.CurrentPage = "1";
		this.Limit = "";
		
		this.GetPageParameters = function()
		{
			var RetValue = "";
			
			function AddParam(pParamName, pParamValue)
			{
				if (pParamValue != "")
				{
					RetValue += (RetValue != "" ? "&" : "?") + pParamName + "=" + pParamValue;
				}
			}
			
			AddParam("category", this.Category);
			AddParam("productid", this.ProductId);
			AddParam("title", this.Title);
			AddParam("age", this.Age);
			AddParam("valuename", this.ValueName);
			AddParam("value", this.Value);
			AddParam("type", this.Type);
			AddParam("page", this.CurrentPage);
			AddParam("limit", this.Limit);
			
			return RetValue;
		}
	}
	
	this.ResetTabs = function()
	{
		var CatalogOptionContainer = document.getElementById(this.CatalogMenuOptionsControlName);
		var CatalogOptions = (CatalogOptionContainer ? CatalogOptionContainer.getElementsByTagName("DIV") : null);

		if (CatalogOptions != null)
		{
			for (var iOption = 0; iOption < CatalogOptions.length; iOption++)
			{
				if (CatalogOptions[iOption].className.indexOf("Item") == 0)
				{
					CatalogOptions[iOption].className = CatalogOptions[iOption].className.replace(" Selected", "");
				}
			}
		}
	}
	
	this.SetTabsForSearch = function()
	{
		var CatalogOptionContainer = document.getElementById(this.CatalogMenuOptionsControlName);
		var CatalogOptions = (CatalogOptionContainer ? CatalogOptionContainer.getElementsByTagName("DIV") : null);
		var SearchTab = null;
		
		if (CatalogOptions != null)
		{
			for (var iOption = 0; iOption < CatalogOptions.length; iOption++)
			{
				if (CatalogOptions[iOption].className.indexOf("Item") == 0)
				{
					if (CatalogOptions[iOption].className.indexOf("Hidden") < 0)
					{
						CatalogOptions[iOption].className += " Hidden";
					}
					
					SearchTab = CatalogOptions[iOption];
				}
			}
		}
		
		if (SearchTab != null)
		{
			SearchTab.className = SearchTab.className.replace(" Hidden", "") + " Selected";
		}
	}
	
	this.GetResults = function()
	{
		function SetPagingControl(pControlName, pHtml, pShow)
		{
			var PagingControl = document.getElementById(pControlName);
			if (PagingControl != null)
			{
				if (pShow)
				{
					PagingControl.style.display = "block";
					
					document.getElementById(CatalogMenu.FooterPageControlName).style.display = "block";
					document.getElementById(CatalogMenu.CatalogMenuOptionsControlName).style.display = "block";
					
					if (PagingControl.innerHTML != pHtml)
					{
						PagingControl.innerHTML = pHtml;
					}
				}
				else
				{
					PagingControl.style.display = "none";
				}
			}
		}
		
		var ContentControl = document.getElementById(this.CatalogContentControlName);
		var ContainerControl = document.getElementById(this.CatalogContainerControlname);
		var Success = false;
		
		if (ContentControl != null && ContainerControl != null)
		{
			var PageUrl = this.PageCallBackUrl + this.PageValue.GetPageParameters();
			var Response = PageUI.DoCallBack(PageUrl, false);
			
			if (Response != "")
			{
				var Elements = Response.split("~~");
				
				if (Elements[0].trim() != "")
				{
					ContainerControl.style.display = "block";
					ContentControl.innerHTML = Elements[0];
					
					SetPagingControl(this.PagingTopControlName, Elements[1], this.ShowPagingControls);
					SetPagingControl(this.PagingBottomControlName, Elements[1], this.ShowPagingControls);
				}
				else
				{
					ContainerControl.style.display = "none";
				}
				
				Success = true;
			}
		}

		
		return Success;
	}
	
	this.SearchControl = new function()
	{
		this.Search = function(pTitle, pValue, pAge)
		{
			CatalogMenu.SetTabsForSearch();

			CatalogMenu.PageValue.Category = "";
			CatalogMenu.PageValue.ProductId = "";
			CatalogMenu.PageValue.Type = "";
			CatalogMenu.PageValue.CurrentPage = "1";
			CatalogMenu.PageValue.Limit = "10";
			CatalogMenu.PageValue.Title = pTitle;
			CatalogMenu.PageValue.ValueName = pValue;
			CatalogMenu.PageValue.Value = (pValue != "" ? "1" : "");
			CatalogMenu.PageValue.Age = pAge;
			CatalogMenu.ShowPagingControls = true;
			
			if (!CatalogMenu.GetResults())
			{
				PageUI.Navigate("/Default.aspx?st=" + pTitle + "&sv=" + pValue + "&sa=" + pAge);
			}

			var selectedPosX = 0;
        		var selectedPosY = 0;
        		var resultDiv = document.getElementById('MovieCatalogContainer');
        		while (resultDiv != null)
			{
            			selectedPosX += resultDiv.offsetLeft;
            			selectedPosY += resultDiv.offsetTop;
           			resultDiv = resultDiv.offsetParent;
       			}

        		window.scrollTo(selectedPosX, selectedPosY);
		}
	}
	
	this.PageControl = new function()
	{
		this.SelectTab = function(pDiv)
		{
			CatalogMenu.ResetTabs();
			pDiv.className += " Selected";
			
			CatalogMenu.PageValue.CurrentPage = "1";
			CatalogMenu.PageValue.Category = pDiv.innerHTML;
			CatalogMenu.GetResults();
		}
		
		this.ChangePage = function(pPage)
		{
			CatalogMenu.PageValue.CurrentPage = pPage;
			CatalogMenu.GetResults();
		}
		
		this.SelectPage = function(pDiv)
		{
			this.ChangePage(pDiv.innerHTML);
		}
		
		this.SelectPrevious = function()
		{
			this.ChangePage(parseInt(CatalogMenu.PageValue.CurrentPage) - 1);
		}
		
		this.SelectNext = function()
		{
			this.ChangePage(parseInt(CatalogMenu.PageValue.CurrentPage) + 1);
		}
	}
}
