/*********************************************
Functions used on various HWS pages
Author: Jennie Lambert
March 2008
**********************************************/

var hws = function() {
	var $D = YAHOO.util.Dom;
	var $E = YAHOO.util.Event;
	var $ = $D.get;
	return  {
		init: function() {
			
			var anchorId = hws.getQuerystringParameters("offerInfo");
			var target = $(anchorId);
			
			// Hide hidden content and add in show/hide controls
			var collapsedControlEl = $D.getElementsByClassName("expandable-content-control");
			var expandedControlEl = $D.getElementsByClassName("open-expandable-content-control");
			var collapsedContent = $D.getElementsByClassName("expandable-content-container");
			var expandedContent = $D.getElementsByClassName("open-expandable-content-container");
	
			var controller = collapsedControlEl.concat(expandedControlEl);
			var content = collapsedContent.concat(expandedContent);
			if (target) {
				hws.expandDeal(target);
			}
			for(var i = 0; i < content.length; i++) {
				if(content[i].className == 'expandable-content-container') {
					content[i].style.visibility = 'hidden';
					content[i].style.overflow = 'hidden';
					content[i].style.height = '0';
					$D.addClass(content[i],'content-collapsed')
				}
			}
			for(var i = 0; i < controller.length; i++) {
				if (controller[i].className == 'open-expandable-content-control') {
					$D.addClass(controller[i], 'expanded');
				}
				else {
					$D.addClass(controller[i], 'collapsed');
				}
				if (!target) {
					$E.on(controller[i],'click',effects.controller,content[i],true);
				}
				else {
					hws.scrollToAnchor(target);
					$E.on(controller[i],'click',effects.controller,content[i],true);
					
				}
			}
			effects.externalLinks();

			
			// Add onchange event listener
			$E.addListener("guideTypeId", "change", hws.openOverviewPg);
			// Add onchange event listener
			$E.addListener("aroundTownCategory", "change", hws.formSubmit, "AroundtownForm");
			// Add onchange event listener
			$E.addListener("pointOfInterestBrowseId", "change", hws.formSubmit, "areaInformationDirectoryBrowseForm");
			// Add onchange event listener
			$E.addListener("pointOfInterestServiceId", "change", hws.formSubmit, "areaInformationDirectoryServiceForm");
			
			
		},
		scrollToAnchor: function(target) {
			var yCoord = (($D.getY(target) - 6) < 0) ? 0 : $D.getY(target) - 6;
			window.scrollTo(0, yCoord);	
		},
		expandDeal: function(target) {
			
			// retrieve child elements of anchorId with expandable content hooks
			var offerExpandableControl = $D.getElementsByClassName("expandable-content-control", "", target);
			var offerExpandableContent = $D.getElementsByClassName("expandable-content-container", "", target);
			
			// replace expandable hooks with open state
			$D.replaceClass(offerExpandableControl, "expandable-content-control", "open-expandable-content-control");
			$D.replaceClass(offerExpandableContent, "expandable-content-container" , "open-expandable-content-container");
			
		},
		getQuerystringParameters: function(param) {
			var query = window.location.search.substring(1);
			var parameters = query.split("&");
			
			for (var i=0;i<parameters.length;i++) {

				var pair = parameters[i].split("=");
				if (pair[0] == param) {
					return pair[1];
				}
			}
		},

		// Method to open read all about page for selected guide type from dropdown 
		openOverviewPg : function()
		{
		    var dropdown= document.getElementById("guideTypeId");
		    if(dropdown && dropdown.value != '')
		    {
				window.location.href = dropdown.value;
		    }
		},
		
		// Method to do form submit functionality on category selection from dropdown 
		formSubmit : function(e, formId)
		{
		   	var formObj= document.getElementById(formId);
			// The below check ensures the form is 'AroundtownForm' and 
			// also element 'aroundTownCategory' is not null
			if (formId == 'AroundtownForm' && document.getElementById('aroundTownCategory') != null)		         	
			{	
				var categoryId = document.getElementById("aroundTownCategory");	
						
				// Do not submit when 'select a category' is selected from the dropdown
				if (categoryId.value != '')
				{
					// Only for TopPicks append the query parameter of topPicks=Y to the URL
					if (categoryId.value == '0')
					{
						formObj.elements['topPicks'].value="Y";
					}
					formObj.submit();
				}
			}
			// The else part is Epic/MapPoint submit handling.
			else
			{
				var pointOfInterest = null;
				if (formId == 'areaInformationDirectoryBrowseForm' && document.getElementById('pointOfInterestBrowseId') != null)
				{
					pointOfInterest = document.getElementById('pointOfInterestBrowseId');
				}
				else if (formId == 'areaInformationDirectoryServiceForm' && document.getElementById('pointOfInterestServiceId') != null)
				{
					pointOfInterest = document.getElementById('pointOfInterestServiceId');
				}
				
				if (pointOfInterest!= null && pointOfInterest.value != '')
				{
					formObj.submit();			
				}		
			}
		}    
	}
}();

YAHOO.util.Event.onAvailable(["layout-body-container", "photoTourNav"], hws.init, hws, true,true);



