WDPRO_LOADER.addCallback( function() {
	initializeTripSelector();
});


tripSelectorOptions	= [];


function initializeTripSelector()
{
	tripSelectorOptions = YAHOO.util.Dom.getElementsByClassName("filterOption");
	
	
	for(i=0; i < tripSelectorOptions.length; i++)
	{
		var obj	= tripSelectorOptions[i];
		if (obj.tagName.toLowerCase() == "input")
		{
			YAHOO.util.Event.addListener(obj, "click", recalculateTripSelector);
			obj.checked	= false;
		}
	}
	
	var resetButton = document.getElementById("resetButton").parentNode;
	resetButton.onclick = function() { return false; }
	YAHOO.util.Event.addListener(resetButton, "click", resetFilters);
}

function resetFilters()
{
	for (var i = 0; i < tripSelectorOptions.length; i++)
	{
		var obj	= tripSelectorOptions[i];
		obj.checked = false;
		obj.disabled = false;
		obj.parentNode.style.color = "";
	}	

	var resultNumber = 0;
	for(var key in tripMap)
	{
		var obj	= tripMap[key];
		document.getElementById(obj.divId).style.display = "block";
		resultNumber++;		
	}
	
	document.getElementById("resultNumber").innerHTML = resultNumber;

}


function recalculateTripSelector()
{
	//for radio buttons, reset the form
	if (this.type.toLowerCase() == "radio")
	{
		for(i=0; i < tripSelectorOptions.length; i++)
		{
			var obj	= tripSelectorOptions[i];
			if ((obj.tagName.toLowerCase() == "input") && (obj.type.toLowerCase() == "checkbox"))
			{
				//YAHOO.util.Event.removeListener(obj, "change", recalculateTripSelector);
				obj.checked	= false;
			}
		}
	}

	//get all selection
	optionsSelected	= [];
	for(i=0; i < tripSelectorOptions.length; i++)
	{
		var obj	= tripSelectorOptions[i];
		if (obj.checked)
		{
			optionsSelected.push(obj.value);
		}		
	}
	
	if (optionsSelected.length == 0)
	{
		resetFilters();
	}
	else
	{	
		var resultNumber = 0;
		var availableOptions	= new Array();
		//check against the matrix
		for(var key in tripMap)
		{
			var obj		= tripMap[key];
			var matched	= false;
			for(j=0; j < optionsSelected.length; j++)
			{
				//check if the selected option match one of the tags in the destination
				if (!contains(obj.tags,optionsSelected[j]))			
				{
					matched	= false;
					break;
				}
				matched	= true;
			}	


			var divObj	= document.getElementById(obj.divId);		
			if (!matched)
			{
				//hide it
				divObj.style.display = "none";
			}
			else
			{
				resultNumber++;
				divObj.style.display = "block";
				//add all available options to the map
				for(var k=0; k < obj.tags.length; k++)
				{
					availableOptions[obj.tags[k]]	= obj.tags[k];
				}
			}
		}



		// update the Result Listed Amount
		document.getElementById("resultNumber").innerHTML = resultNumber;


		//hide options that no longer produce results	
		for(var i=0; i < tripSelectorOptions.length; i++)
		{
			var obj	= tripSelectorOptions[i];
			if ((availableOptions[obj.value] == null) &&
				(obj.type.toLowerCase() == "checkbox"))
			{
				obj.disabled	= true;
				obj.parentNode.style.color = "#b5bf9d";
			}
			else
			{
				obj.disabled	= false;
				obj.parentNode.style.color = "";
			}
		}	
	}
	
}

function contains(arrObj, lookUp)
{
	for (var i=0; i < arrObj.length; i++)
	{
		if (arrObj[i] == lookUp)
			return true;	
	}
	return false;
}