/*********************************************
Functions used on various HWS pages
March 2008
**********************************************/

var hws = function() {
	var $D = YAHOO.util.Dom;
	var $E = YAHOO.util.Event;
	var isOpen = false;
	var propertyDescriptionHeight = 0;
	return  {
		init: function() {
			if ($D.get('property-description')) {
				var propertyDescription = $D.get('property-description');
				var readMore = $D.get('readMore');
				if (propertyDescription.offsetHeight >= 51){
					propertyDescriptionHeight = propertyDescription.offsetHeight;
					propertyDescription.style.height = 42 + "px";
					readMore.className = "collapsed";
					$E.on('readMore', 'click', hws.propertyDescriptionController);
					}
				else {
					readMore.className = 'hidden';
				}
			}
			
			
			var anchorId = hws.getQuerystringParameters("offerInfo");
			var target = $D.get(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($D.hasClass(content[i],'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($D.hasClass(controller[i],'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();

			// Initializing the tabs for hws tab module right messaging 
			if(document.getElementById("hws-res-module-tab-container"))
			{
				var hwsTabModule = new YAHOO.widget.TabView("hws-res-module-tab-container");
			}
			// 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];
				}
			}
		},
		propertyDescriptionController: function(e) {
			var propertyDescription = $D.get('property-description');
			var el = $D.get('readMore');
			
			var expandAnim = new YAHOO.util.Anim(propertyDescription, {height: {to: 42} }, 0.2 );
			var collapseAnim = new YAHOO.util.Anim(propertyDescription, {height: {to: propertyDescriptionHeight} }, 0.2 );
			
			if (isOpen) {
				expandAnim.animate();
				el.className = 'collapsed';
				el.innerHTML = $D.get('langReadMore').value;
				isOpen = false;
			} else {
				collapseAnim.animate();
				el.className = 'expanded';
				el.innerHTML = $D.get('langReadLess').value;
				isOpen = true;
			}
			
			return false;
		},
		// 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);






