	/********************************** Search *****************************************/	
	//listeners waiting for data to be ready
	searchDataReady = function(response){
		mySearch.xmlDoc = mySearch.loadXmlString(response);
		mySearch.handleXml();
		mySearch.defaultView();
		//this function hides the timer animation and shows both the categories and results columns
		hideTimer();
	}
	
	viewAll = function(){
		mySearch.defaultView();
	}	
	refreshView = function(num){
		mySearch.refreshView(num);
	}
	letterView = function(num){
		mySearch.letterView(num);	
	}
	gotoPage = function(num){
		mySearch.gotoPage(num);
	}
	nextPage = function(){
		mySearch.nextPage();
	}
	previousPage = function(){
		mySearch.previousPage();
	}
	scrollToResults = function (){
		//window.scroll(0,200);
	}	
	
	/********************************** Categories *****************************************/
	categoryDataReady = function (response){
		//use the search.loadXmlString method instead of defining a new one in the categories class
		myCategories.categories = mySearch.loadXmlString(response);
		myCategories.buildCategories();
		checkCategoriesDisplay();	
	}	
	
	checkCategoriesDisplay = function(){
		switch (mySearch.queryParams.search) {
			case 'conditions' :
				try {
					if (cat != ''){
						//console.log(cat);
						updateCategories(cat,catName);
						cat = '';
						catName = '';
					}
				} catch (et) {
					console.log(et);
				}
				break;
				
			case 'events' :
				try {
					if (eventType != ''){
						updateEventsCategories(eventType,catName);
						eventType = '';
						catName = '';
					}
					
					if (audience != ''){
						updateEventsFilter1(audience);
						audience = '';
					}
				} catch (em) {
					console.log(em);
				}
				break;
				
			case 'news' :
				try {
					if (newsType != ''){
						updateArchiveCategories(newsType,catName);
						newsType = '';
						catName = '';
					}
					
					if (topic != ''){
						updateArchiveSubCategories(topic,subCatName);
						topic = '';
						subCatName = '';
					}
				} catch (ex){
					console.debug(ex);
				}
				break;
				
			case 'multimedia' :
				try {
					if (mediaType != ''){
						updateMultimediaFilter1(mediaType);
						mediaType = '';
					}
					
					if (topic != ''){
						updateMultimediaFilter2(topic);
						topic = '';
					}
					if (topic2 != ''){
						updateMultiMediaCategories(topic2);
						topic2 = '';
					}
					
				} catch (es){
					console.debug(es);
				}
				break;
		}
	}	
	
	buildHiddenPanel = function(dialogId,catName){
		if (catName == 'categories'){
			myCategories.buildHiddenPanel(dialogId,catName);
		} else {
			mySubCategories.buildHiddenPanel(dialogId,catName);
		}
	}
	
	filterByCategory = function (id) {
		showTimer();
		if (id==''){
			mySearch.queryParams.cat = 65;
		} else {
			mySearch.queryParams.cat = id;
		}
		mySearch.getXmlString();
	}
	
	filterEventsByCategory = function (id) {
		showTimer();
		mySearch.queryParams.eventType = id;
		mySearch.getXmlString();
	}
	
	filterMultimediaByCategory = function (id) {
		showTimer();
		mySearch.queryParams.topic = id;
		mySearch.getXmlString();
	}
	
	filterArchiveByCategory = function (id) {
		showTimer();
		mySearch.queryParams.newsType = id;
		mySearch.getXmlString();
	}	
	
	filterArchiveBySubCategory = function (id) {
		showTimer();
		mySearch.queryParams.topic = id;
		mySearch.getXmlString();
	}
	
	updateCategories = function(id,nodeName){
		var myFadeOut = dojo.fadeOut({node : 'categories1',
			onEnd: function(){
				myCategories.updateCategories(id,nodeName);
				//myCategories.queryParams.cat = id;
				// initialize subCategories
				if (myCategories.queryParams.search == 'conditions'){
					mySubCategories.queryParams.cat = id;
					mySubCategories.getXmlString();
				}
			}
		});
		myFadeOut.play();
	}
		
	updateEventsCategories = function(id,nodeName){
		console.log(id);
		var myFadeOut = dojo.fadeOut({node : 'categories1',
			onEnd: function(){
				myCategories.updateCategories(id,nodeName);
				myCategories.queryParams.eventType = id;
			}
		});
		myFadeOut.play();
	}
	
	updateMultimediaCategories = function(id,nodeName){
		var myFadeOut = dojo.fadeOut({node : 'categories1',
			onEnd: function(){
				myCategories.updateCategories(id,nodeName);
				myCategories.queryParams.topic = id;
			}
		});
		myFadeOut.play();
	}
	
	updateArchiveCategories = function(id,nodeName){
		var myFadeOut = dojo.fadeOut({node : 'categories1',
			onEnd: function(){
				myCategories.updateCategories(id,nodeName);
				myCategories.queryParams.newsType = id;
			}
		});
		myFadeOut.play();
	}
	
	updateArchiveSubCategories = function(id,nodeName){
		var myFadeOut = dojo.fadeOut({node : 'categories1',
			onEnd: function(){
				mySubCategories.updateSubCategories(id,nodeName);
				mySubCategories.queryParams.topic = id;
			}
		});
		myFadeOut.play();
	}		
	
	/********************************** SubCategories *****************************************/
	subCategoryDataReady = function (response){
		try {
			mySubCategories.subCategories = mySearch.loadXmlString(response);
			mySubCategories.buildSubCategories();
			checkCategoriesDisplay();
			fadeInNode('subCategoriesColumn');
		} catch (e) {
			console.log(e);
		}		
	}
	
	updateSubCategories = function(id,nodeName){
		console.log(id + ' ' + nodeName);
		var myFadeOut = dojo.fadeOut({node : 'subCategoriesColumn',
			onEnd: function(){
				mySubCategories.updateSubCategories(id,nodeName);
			}
		});
		myFadeOut.play();
	}
	
	/********************************** filters *****************************************/
	updateFilter1 = function (id){		
		showTimer();		
		myCategories.queryParams.age = id.toLowerCase();
		myCategories.getXmlString();
		
		mySearch.queryParams.age = id.toLowerCase();
		mySearch.getXmlString();
		
		myCategories.updateFilter1(id);		
	}
	
	updateMultimediaFilter1 = function (id){		
		showTimer();		
		myCategories.queryParams.mediaType = id;
		myCategories.getXmlString();
		
		mySearch.queryParams.mediaType = id;
		mySearch.getXmlString();
		
		myCategories.updateFilter1(id);		
	}
		
	updateMultimediaFilter2 = function (id){		
		showTimer();		
		myCategories.queryParams.topic = id;
		myCategories.getXmlString();
		
		mySearch.queryParams.topic = id;
		mySearch.getXmlString();
		
		myCategories.updateFilter2(id);		
	}

	updateEventsFilter1 = function (id){	
		showTimer();		
		//myCategories.queryParams.audience = id.toLowerCase();
		//myCategories.getXmlString();
		
		mySearch.queryParams.audience = id.toLowerCase();
		mySearch.getXmlString();
		
		myCategories.updateFilter1(id);		
	}
	
	updateConditionsFilter = function (id,param){
		myCategories.updateConditionsFilter(id,param);
		mySearch.queryParams.type = param;
		mySearch.updateQuery();
		mySearch.getXmlString();		
	}
	
	removeFilter = function (cat){
		var myFadeOut = dojo.fadeOut({node : 'categories1',
			onEnd: function(){
				switch (cat){
					/*
					case "conditions" :
						myCategories.buildConditionsFilter();
						mySearch.queryParams.type = '';
						break;
					*/
						
					case "filter1" :
						myCategories.buildFilter1();
						mySearch.queryParams.age = '';		
						break;
						
					case "multiMediaFilter1" :
						myCategories.buildFilter1();
						mySearch.queryParams.mediaType = '';		
						break;
						
					case "multiMediaFilter2" :
						myCategories.buildFilter2();
						mySearch.queryParams.topic = '';		
						break;	
					
					case "multimediaCategories" :			
						mySearch.queryParams.topic = '';		
						myCategories.buildCategories();
						dojo.byId('subCategories1').innerHTML = '';
				       	dojo.byId('subCategoriesColumn').style.display = 'none';	
						break;	
									
					case "categories1" :	
					//12/02 mod set subcats to '' and reload them.
						mySearch.queryParams.cat = '';
						if (mySearch.queryParams.search == 'conditions'){
							myCategories.queryParams.cat = '65';
						} else {
							myCategories.queryParams.cat = '419';
						}
						myCategories.getXmlString();		
						//myCategories.buildCategories();
						dojo.byId('subCategories1').innerHTML = '';
				        dojo.byId('categories1').style.width = '580px';
				       	dojo.byId('subCategoriesColumn').style.display = 'none';
						break;	

					case "eventsFilter1" :			
						mySearch.queryParams.audience = '';		
						myCategories.buildFilter1();	
						break;
						
					case "eventsCategories1" :			
						mySearch.queryParams.eventType = '';
						myCategories.queryParams.eventType = '';
						myCategories.getXmlString();
						//myCategories.buildCategories();
						dojo.byId('subCategories1').innerHTML = '';
				       	dojo.byId('subCategoriesColumn').style.display = 'none';	
						break;									
						
					case "archiveCategories" :			
						mySearch.queryParams.newsType = '';		
						myCategories.queryParams.newsType = '';
						myCategories.getXmlString();
						myCategories.buildCategories();	
						break;
						
					case "archiveSubCategories" :			
						mySearch.queryParams.topic = '';
						mySubCategories.queryParams.topic = '';
						mySubCategories.getXmlString();
						mySubCategories.buildSubCategories();	
						break;																		
					
					case "subCategories1" :
						mySubCategories.buildSubCategories();
						mySearch.queryParams.az = 'all';
						mySearch.queryParams.type = '';
						mySearch.queryParams.cat = myCategories.previousCat;		
						break;
						
					/*
					case "archiveSubCategories" :
						mySubCategories.buildSubCategories();
						mySearch.queryParams.az = '';
						mySearch.queryParams.type = '';
						mySearch.queryParams.cat = myCategories.queryParams.cat;		
						break;
					*/						
				}
				
				//update query and send a new request
				mySearch.getXmlString();	
				showTimer();				
			}
		});
		
		var fadeSubCats = dojo.fadeOut({node:'subCategoriesColumn',
			onEnd: function(){
			
			}
		});
		myFadeOut.play();
		fadeSubCats.play();
	}
	
	/********************************** key word *****************************************/
	keyWordSearch = function (){
		showTimer();
		mySearch.queryParams.query = dojo.byId('keyWord').value;
		mySearch.getXmlString();
	}
	
	reloadPage = function (){
		window.location.reload();
		dojo.byId('clearResults').style.display = 'none';		
	}
	
	removeKeyWord = function () {
		showTimer();
		dojo.byId('keyWord').value = '';
		mySearch.queryParams.query = '';
		mySearch.getXmlString();
		console.log(mySearch.query);
		dojo.byId('clearResults').style.display = 'none';		
	}
	
	showDescriptions = function (){
		var text = dojo.byId('showDescriptions').innerHTML;
		var output = text == 'Show Descriptions' ? output = 'Hide Descriptions' : output = 'Show Descriptions';
		mySearch.toggleDescriptions();
		dojo.byId('showDescriptions').innerHTML = output;		
		dojo.byId('keyWord').value = '';
	}
	
	registerEvents = function () {
		dojo.connect(dojo.byId('showDescriptions'),'onclick',function(){
			showDescriptions();
		});
		
		dojo.connect(dojo.byId('clearResults'),'onclick',function(){
			removeKeyWord();
		});	
		
		dojo.connect(dojo.byId('keyWordButton'),'onclick',function (){
			keyWordSearch();			
		}); 
		
		dojo.connect(dojo.byId('keyWord'),'onkeypress',function(){	
			try {														
				if (dojo.byId('keyWord').value != ''){														
					dojo.byId('clearResults').style.display = 'block';
				} else {
					dojo.byId('clearResults').style.display = 'none';	
				}
			} catch (e) {
				alert(e);
			}		
		});		
	}		