// ############################################################################
// tradeshowlocator.js -- data object and map functions for tradeshow locater
// ============================================================================
// CREATED BY:	Zander Waldman -- zwaldman@organic.com
//			Organic Det
//
// CREATED ON: 08/27/06
// ############################################################################
var dataArray = new Array();
var mySlider;
var resultsArray = new Array();
var markerArray = new Array();
var intervalID;
var xmlLoadID = setInterval(checkXMLLoad, 1000);
var xmlLoaded = false;
var map = null;
var geocoder = null;
var marker = null;
var directions = null;
var mapType = "tradeshows";

var currentIndustry;
var currentVehicle;

var date = new Date();
var currentMonth = date.getMonth();
var currentDay = date.getDate();
var currentYear = date.getFullYear();
var selectedMonth = currentMonth+1;
var selctedDay = currentDay;
var selectedYear = currentYear;

var month_name = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var empty_table = null;
	
var icon = new GIcon();
icon.image = "/shared/images/commercial/maps/tradeshow_icon.gif";
icon.shadow = "/shared/images/commercial/maps/shadow.png";
icon.iconSize = new GSize(20, 18);
icon.shadowSize = new GSize(26, 26);
icon.iconAnchor = new GPoint(6, 20);
icon.infoWindowAnchor = new GPoint(5, 1);
	


	// ======================================================
	// initial load action
	// ======================================================
	function loadTradeshows() {
		if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map"));
			map.addControl(new GLargeMapControl());
        		map.addControl(new GMapTypeControl());
			directions = new GDirections(map, document.getElementById("directions"));
			geocoder = new GClientGeocoder();
			map.setCenter(new GLatLng(37.0625, -95.677068), 4);
			GEvent.addListener(directions, "load", onGDirectionsLoad); 
			GEvent.addListener(directions, "error", handleErrors);
			var myArray = $$('img');
			myArray.each(function(item, index){
   				if( (item.getProperty('src')== "http://www.google.com/intl/en_us/mapfiles/lmc.png") || (item.getProperty('src')== "http://www.google.com/intl/en_ALL/mapfiles/lmc.png") ) {
					item.setProperty('src', '/shared/images/commercial/maps/controls_top.png');
				}
				if( (item.getProperty('src')== "http://www.google.com/intl/en_us/mapfiles/lmc-bottom.png") || (item.getProperty('src')== "http://www.google.com/intl/en_ALL/mapfiles/lmc-bottom.png") ) {
					item.setProperty('src', '/shared/images/commercial/maps/controls_bottom.png');
				}
				if( (item.getProperty('src')== "http://www.google.com/intl/en_us/mapfiles/slider.png") || (item.getProperty('src')== "http://www.google.com/intl/en_ALL/mapfiles/slider.png") ) {
					item.setProperty('src', '/shared/images/commercial/maps/slider.png');
				}
			});
		}
		parseXML();
	}

	function parseXML() {
	// ======================================================
	// GDownloadUrl - AJAX xml call initial page parse
	// ======================================================
	GDownloadUrl("/en/business/tradeshow_locator/data/tradeshows.xml", function(data, responseCode) {						
		
		var xml = GXml.parse(data);
		var tradeshows = xml.getElementsByTagName("tradeshow");
		// loop on each upfitter
		for (var i = 0; i < tradeshows.length; i++) {
		
			// one upfitter node
			var tradeshowNodes = tradeshows[i].childNodes;
			var tradeshowObject = new Object();
			for(var j = 0; j < tradeshowNodes.length; j++) {
			
				// if not a #textNode
				if(tradeshowNodes[j].nodeType !=3) {
					
					// switch on nodes to get values out
					switch(tradeshowNodes[j].nodeName) {
						
						// name
						case "name":
							var tradeshowName = tradeshowNodes[j].firstChild.nodeValue;
							break;
							
						// date
						case "date":
							var tradeShowStartValue = tradeshowNodes[j].getAttribute("start");
							var tradeShowStartNumbers = tradeShowStartValue.split("_");
							var tradeShowStartValue = tradeshowNodes[j].getAttribute("end");
							var tradeShowEndNumbers = tradeShowStartValue.split("_");
							
							var tradeshowStartDay = tradeShowStartNumbers[1];
							var tradeshowStartMonth = tradeShowStartNumbers[0];
							var tradeshowStartYear = tradeShowStartNumbers[2];
							var tradeshowEndDay = tradeShowEndNumbers[1];
							var tradeshowEndMonth = tradeShowEndNumbers[0];
							var tradeshowEndYear = tradeShowEndNumbers[2];
							var tradeshowDateString = tradeshowNodes[j].firstChild.nodeValue;
							
							var dateObject = {	startDay:tradeshowStartDay,
											startMonth:tradeshowStartMonth,
											startYear:tradeshowStartYear,
											endDay:tradeshowEndDay,
											endMonth:tradeshowEndMonth,
											endYear:tradeshowEndYear,
											dateString:tradeshowDateString		
							}
							
							break;
							
						// lattitude
						case "location":
							var locationName = tradeshowNodes[j].firstChild.nodeValue;
							break;
							
						// lattitude
						case "lat":
							var tradeshowLat = tradeshowNodes[j].firstChild.nodeValue;
							break;
							
						// longitude
						case "long":
							var tradeshowLong = tradeshowNodes[j].firstChild.nodeValue;
							break;
							
						// street - show
						case "street_show":
							if(tradeshowNodes[j].firstChild != null){
								var tradeshowStreet = tradeshowNodes[j].firstChild.nodeValue;
							}else{
								var tradeshowStreet = "";
							}
							break;
							
						// city - show
						case "city_show":
							var tradeshowCity = tradeshowNodes[j].firstChild.nodeValue;
							break;
							
						// state - show
						case "state_show":
							var tradeshowState = tradeshowNodes[j].firstChild.nodeValue;
							var tradeshowStateID = tradeshowNodes[j].getAttribute("id");
							break;
							
						// zip - show
						case "zip_show":
							if(tradeshowNodes[j].firstChild != null){
								var tradeshowZip = tradeshowNodes[j].firstChild.nodeValue;
							}else{
								var tradeshowZip = "";
							}
							break;
							
						// website - show
						case "website_show":
							if(tradeshowNodes[j].firstChild != null){
								var tradeshowWebsite = tradeshowNodes[j].firstChild.nodeValue;
							}else{
								var tradeshowWebsite = "";
							}
							break;
							
						
						// street - dealer
						case "street_dealer":
							if(tradeshowNodes[j].firstChild != null){
								var tradeshowDealerStreet = tradeshowNodes[j].firstChild.nodeValue;
							}else{
								var tradeshowDealerStreet = "";
							}
							break;
							
						// city - dealer
						case "city_dealer":
							if(tradeshowNodes[j].firstChild != null){
								var tradeshowDealerCity = tradeshowNodes[j].firstChild.nodeValue;
							}else{
								var tradeshowDealerCity = "";
							}
							break;
							
						// state - dealer
						case "state_dealer":
							if(tradeshowNodes[j].firstChild != null){
								var tradeshowDealerState = tradeshowNodes[j].firstChild.nodeValue;
								var tradeshowDealerStateID = tradeshowNodes[j].getAttribute("id");
							}else{
								var tradeshowDealerState = "";
								var tradeshowDealerStateID = "";
							}
							break;
							
						// zip - dealer
						case "zip_dealer":
							if(tradeshowNodes[j].firstChild != null){
								var tradeshowDealerZip = tradeshowNodes[j].firstChild.nodeValue;
							}else{
								var tradeshowDealerZip = "";
							}
							break;
							
						// website - dealer
						case "website_dealer":
							if(tradeshowNodes[j].firstChild != null){
								var tradeshowDealerWebsite = tradeshowNodes[j].firstChild.nodeValue;
							}else{
								var tradeshowDealerWebsite = "";
							}
							break;	
						case "exit_id":
							if(tradeshowNodes[j].firstChild != null){
								var tradeshowExitID = tradeshowNodes[j].firstChild.nodeValue;
							}else{
								var tradeshowExitID = "";
							}
							break;		
							
						// phone
						case "phone":
							if(tradeshowNodes[j].firstChild != null){
								var tradeshowPhone = tradeshowNodes[j].firstChild.nodeValue;
							}else{
								var tradeshowPhone = "";
							}
							break;
							
						// tollfree
						case "tollfree":
							if(tradeshowNodes[j].firstChild != null){
								var tradeshowTollfree = tradeshowNodes[j].firstChild.nodeValue;
							}else{
								var tradeshowTollfree = "";
							}
							break;
							
						
						case "industries":
							var industryNodes = tradeshowNodes[j].childNodes;
							var industriesArray = new Array();
							
							for(var k = 0; k < industryNodes.length; k++) {
								
								var industryObject = new Object();
								
								// if not a #textNode
								if(industryNodes[k].nodeType !=3) {
									
									// fill industryObject
									industryObject = {	industryID:industryNodes[k].getAttribute("id"),
													industry:industryNodes[k].firstChild.nodeValue
									};
											
									industriesArray.push(industryObject);
								}
							}
							break;
							
						case "vehicles":
							var vehicleNodes = tradeshowNodes[j].childNodes;
							var vehiclesArray = new Array();
							
							for(var k = 0; k < vehicleNodes.length; k++) {
								
								var vehicleObject = new Object();
								
								// if not a #textNode
								if(vehicleNodes[k].nodeType !=3) {
									
									// fill industryObject
									vehicleObject = {	vehicleID:vehicleNodes[k].getAttribute("id"),
													vehicle:vehicleNodes[k].firstChild.nodeValue
									};
											
									vehiclesArray.push(vehicleObject);
								}
							}
							break;
							
						default:
							break
						
					}
				}
				
			}
						
			// fill tradeshow object
			tradeshowObject = { name:tradeshowName,
							dates:dateObject,
							location:locationName,
							lat:tradeshowLat,
							longitude:tradeshowLong,
							street:tradeshowStreet,
							address:tradeshowStreet + " " + tradeshowCity + " " + tradeshowStateID + " " + tradeshowZip,
							city:tradeshowCity,
							state:tradeshowState,
							stateID:tradeshowStateID,
							zip:tradeshowZip,
							streetDealer:tradeshowDealerStreet,
							addressDealer:tradeshowDealerStreet + " " + tradeshowDealerCity + " " + tradeshowDealerStateID + " " + tradeshowDealerZip,
							cityDealer:tradeshowDealerCity,
							stateDealer:tradeshowDealerState,
							stateIDDealer:tradeshowDealerStateID,
							zipDealer:tradeshowDealerZip,
							phone:tradeshowPhone,
							tollfree:tradeshowTollfree,
							website:tradeshowWebsite,
							websiteDealer:tradeshowDealerWebsite,
							exit_id:tradeshowExitID,
							industries:industriesArray,
							vehicles:vehiclesArray
							
			};
			
			// push into the array
			dataArray.push(tradeshowObject);
			
		}
			
		xmlLoaded = true;
	
	});
	
	}
	
	// ======================================================
	// setXMLLoad() - 
	// ======================================================
	function checkXMLLoad() {
		
		if(xmlLoaded) { setForm(); clearInterval(xmlLoadID);}
		
	}
	
	// ======================================================
	// setForm() - set initial form
	// ======================================================
	function setForm() {
		
		var industryListArray = new Array();
		var vehicleListArray = new Array();
		
		// loop and grab states
		for(var i = 0; i < dataArray.length; i++) {
			
			
			// ----------------------------------------
			// fill industry form
			// ----------------------------------------
						
			// fill first menu
			//var myList = $('industry-list').getChildren();

			
			// loop on industries within the show
			for(var j=0; j < dataArray[i].industries.length; j++) {
				// boolean to detect for duplicate values
				var found = false;
				for(var k = 0; k < industryListArray.length; k++) {
					// if we find it set found to true and decrease the count to avoid a blank option on next run through
					if(industryListArray[k].industryID == dataArray[i].industries[j].industryID) {
						found = true;
					}
				}
				// if not found a duplicate add it to the form
				if(!found) {
					
					if(dataArray[i].industries[j].industryID != "all") {
						industryListArray.push(dataArray[i].industries[j]);
					}
	
				}
				
				
			}
			
			
			
			// ----------------------------------------
			// fill vehicle form
			// ----------------------------------------
			// boolean to detect for duplicate values
			found = false;
			
			// fill first menu
			//myList = $('vehicle-list').getChildren();
			
			// loop on industries within the show
			for(var j=0; j < dataArray[i].vehicles.length; j++) {
				
				for(var k = 0; k < vehicleListArray.length; k++) {
				
					// if we find it set found to true and decrease the count to avoid a blank option on next run through
					if(vehicleListArray[k].vehicleID == dataArray[i].vehicles[j].vehicleID) {
						found = true;
					} 
				}
				
				// if not found a duplicate add it to the form
				if(!found) {
					
					vehicleListArray.push(dataArray[i].vehicles[j]);
	
				}
			}
			
			
			
		}
		
		industryListArray.sort(sortByIndustry);
		
		/*var industry = new Element('li', {'id':'reset-industry'}).injectInside($('industry-list'));
		var a = new Element('a').injectInside(industry);
		a.setProperty('href',  'javascript:selectIndustry("reset-industry")');
		a.setText('Select an Industry');*/
		
		// add all item
		var industry = new Element('li', {'id':'all'}).injectInside($('industry-list'));
		var a = new Element('a').injectInside(industry);
		a.setProperty('href',  'javascript:selectIndustry("all")');
		a.setText('All Industries');
		
		industryListArray.each(function(item, index){
   			industry = new Element('li', {'id':item.industryID}).injectInside($('industry-list'));
			a = new Element('a').injectInside(industry);
			a.setProperty('href',  'javascript:selectIndustry("' + item.industryID + '")');
			a.setText(item.industry);
		});
			
		vehicleListArray.sort(sortByVehicle);
		
		industry = new Element('li', {'id':'reset-vehicle'}).injectInside($('vehicle-list'));
		a = new Element('a').injectInside(industry);
		a.setProperty('href',  'javascript:selectVehicle("reset-vehicle")');
		a.setText('Select a Vehicle');
		
		vehicleListArray.each(function(item, index){
   			// create result li and anchor
			var vehicle = new Element('li', {'id':item.vehicleID}).injectInside($('vehicle-list'));
			var a = new Element('a').injectInside(vehicle);
			a.setProperty('href',  'javascript:selectVehicle("' + item.vehicleID + '")');
			a.setText(item.vehicle);
		});
		
		selectIndustry('all');
		
	}
	
	// ======================================================
	// selectIndustry() - set results based on industry
	// ======================================================
	function selectIndustry(industry) {
		
			
		//$$('#calendar_dates td.has_event').each(function(item, index) {
		//				item.toggleClass('has_event');
		//});
		
		// get element
		industry = $(industry);
		
		// set select text
		$('industry-selector-box').getFirst().setText(industry.getText());
		
		// set it based on id
		industry = industry.getAttribute('id');
		
		linkTrack("left_nav", industry);
		
		// collpase menus
		collapseMenus();
		
		resultsArray = new Array();
		
		// set current industry
		currentIndustry = industry;
		
		clearPoints();
		swapView();
		
		if(currentIndustry != "reset-industry") {
		
			// loop through data
			for(var i = 0; i < dataArray.length; i++) {
			
				for(j = 0; j < dataArray[i].industries.length; j++) {
					
					// if the industry matches
					if(dataArray[i].industries[j].industryID == industry) {
											
						// check the date
						
						
						if((dataArray[i].dates.startMonth == selectedMonth && dataArray[i].dates.startYear == selectedYear) || (dataArray[i].dates.endMonth == selectedMonth && dataArray[i].dates.endYear == selectedYear)) {
							if(currentVehicle != null) { 
								
								for(var k = 0; k < dataArray[i].vehicles.length; k++) {
									
									if(dataArray[i].vehicles[k].vehicleID == currentVehicle) {
										resultsArray.push(dataArray[i]);
									}
									
								}
							} else {
								resultsArray.push(dataArray[i]);
							}
						}
						
					}
				
				}
			
			}
		} else {
			
			currentIndustry = null;
			if(currentVehicle != null) {
				selectVehicle(currentVehicle);
			}
			
		}
		
		// call calendar
		setCalendar();
		showResults();
		
	}
	
	// ======================================================
	// selectVehicle() - set results based on vehicle
	// ======================================================
	function selectVehicle(vehicle) {
		
			
		//$$('#calendar_dates td.has_event').each(function(item, index) {
		//				item.toggleClass('has_event');
		//									    });
		
		// get element
		vehicle = $(vehicle);
		
		// set select text
		$('vehicle-selector-box').getFirst().setText(vehicle.getText());
		
		// set it based on id
		vehicle = vehicle.getAttribute('id');
		
		linkTrack("left_nav", vehicle);
		
		// collpase menus
		collapseMenus();
		
		resultsArray = new Array();
		
		// set current industry
		currentVehicle = vehicle;
		
		clearPoints();
		swapView();
		
		if(currentVehicle != "reset-vehicle") {
			// loop through data
			for(var i = 0; i < dataArray.length; i++) {
			
				for(j = 0; j < dataArray[i].vehicles.length; j++) {
					
					// if the industry matches
					if(dataArray[i].vehicles[j].vehicleID == vehicle) {
											
						// check the date
						if( (dataArray[i].dates.startMonth == selectedMonth && dataArray[i].dates.startYear == selectedYear) || (dataArray[i].dates.endMonth == selectedMonth && dataArray[i].dates.endYear == selectedYear) ) {
							
							if(currentIndustry != null) { 
								
								for(var k = 0; k < dataArray[i].industries.length; k++) {
									
									if(dataArray[i].industries[k].industryID == currentIndustry) {
										resultsArray.push(dataArray[i]);
									}
									
								}
							} else {
								resultsArray.push(dataArray[i]);
							}
						}
						
					}
				
				}
			
			}
		} else {
			
			currentVehicle = null;
			if(currentIndustry != null) {
				selectIndustry(currentIndustry);
			}
			
		}
		
		// call calendar
		setCalendar();
		showResults();
		
	}
	
	// ======================================================
	// selectMonth() - set results based on month
	// ======================================================
	function selectMonth() {
		
		resultsArray = new Array();
		
		clearPoints();
		swapView();
		
		// loop through data
		for(var i = 0; i < dataArray.length; i++) {
			
			// need to add year checker
			
			
			// look for month and year
			if( (dataArray[i].dates.startMonth == selectedMonth && dataArray[i].dates.startYear == selectedYear) || (dataArray[i].dates.endMonth == selectedMonth && dataArray[i].dates.endYear == selectedYear) ) {
				
				// if we have a current Vehicle
				if(currentVehicle != null) {
					
					for(var j = 0; j < dataArray[i].vehicles.length; j++) {
						
						if(dataArray[i].vehicles[j].vehicleID == currentVehicle) {
							
							//check if we have an industry
							if(currentIndustry != null) {
								
								for(var k = 0; k < dataArray[i].industries.length; k++) {
									
									if(dataArray[i].industries[k].industryID == currentIndustry) {
										resultsArray.push(dataArray[i]);
									}
									
								}
								
							} else {
							
								resultsArray.push(dataArray[i]);
							
							}
						
						}
						
					}
					
				} else if(currentIndustry != null) {
					
					for(var j = 0; j < dataArray[i].industries.length; j++) {
						
						if(dataArray[i].industries[j].industryID == currentIndustry) {
							resultsArray.push(dataArray[i]);
						}
						
					}
					
				}
				
			}
		
		}
		
		// call calendar
		setCalendar();
		showResults();
		
	}
	
	// ======================================================
	// showResults() - populate results list
	// ======================================================
	function showResults() {
		
		
		
		// create results total text
		var html = "<span class=\"orange\">" + resultsArray.length + "</span>" + " Tradeshows/Events in <span class=\"orange\">" + $('month_label').getText() + "<br /></span> for <span class=\"orange\">" + $('industry-selector-box').getText() + "</span>";
		
		if(resultsArray.length == 0) {  
		
			html += "<br/><a href=\"javascript:calendarNext()\" name=\"&lpos=results&lid=go_to_next_month\">Go to next month&#39;s events</a>";
		}
		
		$('results-total-box').setHTML(html);
		$('results-total-box').setStyle('display', 'block'); 
		
		// empty list
		$('results-list-box').empty();
		
		// create ul element
		var resultsList = new Element('ul', {'id': 'results-list'}).injectInside($('results-list-box'));
		
		resultsArray.sort(sortByDate);
		
		// loop through and populate results
		for(var i = 0; i < resultsArray.length; i++) {
			
			plotPoint(resultsArray[i]);
			
			// create result li
			var result = new Element('li', {'class': 'result clearfix'}).injectInside(resultsList);
			
			
			
			var anchorElement = new Element('a', {'href': 'javascript:showInfo(' + i + '); javascript:linkTrack("left_nav" , "'+ resultsArray[i].name +' ");'}).injectInside(result);
			
			var iconImage = new Element('img', {'src': '/shared/images/commercial/maps/tradeshow_icon.gif', 'class': 'icon'}).injectInside(anchorElement);
			// create title
			var resultTitle = new Element('span', {'class': 'result-title'}).injectInside(anchorElement);
			resultTitle.setText(resultsArray[i].name);
			
			
			// address
			var resultAddress = new Element('span', {'class': 'result-address'}).injectInside(result);
			resultAddress.setHTML(resultsArray[i].dates.dateString + "<br\/>"
							+ resultsArray[i].street + "<br\/>" 
							+ resultsArray[i].city + ", " 
							+ resultsArray[i].stateID + " " 
							+ resultsArray[i].zip + "<br\/>"
							+ resultsArray[i].website
							);
			
		}
		
	}
	
	// ======================================================
	// createInfoWindowContents() - creates the html window
	// ======================================================
	function createInfoWindowContents(tradeshow, marker) {
		
		var html 	 = "<span class=\"info-window-title\">" + tradeshow.name + "</span>";
		html 	+= "<span class=\"info-window-subtitle\">Tradeshow Date:<br/>" + tradeshow.dates.dateString + "</span><br/>";
		html	+= "<br/><span class=\"info-window-block\"><font color='white'>Participating dealer(s):</font><br/>";
		html	+= tradeshow.location + "<br/>";
		html 	+= tradeshow.streetDealer + "<br/>";
		html 	+= tradeshow.cityDealer + ", " + tradeshow.stateDealer + " " + tradeshow.zipDealer + "<br/>";
		html 	+= tradeshow.phone + "<br/>";
		
		html 	+= "<a href=\"javascript:flexWin(getDomain()+'/exitPage/index.jsp?tname="+tradeshow.exit_id+"','yes','','','','all');\">"+tradeshow.websiteDealer+"</a><br/>";
		if(tradeshow.tollfree != "") {
			
			html += "Toll-Free " + tradeshow.tollfree+ "</span>";
			
		}
		
		html		+= "<dl><dt>Vocation:</dt>";
		
		// loop on vehicles
		for(var i = 0; i < tradeshow.industries.length; i++) {
			
			if(tradeshow.industries[i].industry != "all") {
			
				if(i < tradeshow.industries.length-1) {
					html 	+= "<dd>" + tradeshow.industries[i].industry + ", </dd>";
				} else {
					html 	+= "<dd>" + tradeshow.industries[i].industry + "</dd>";
				}
			}
		}
		
		html		+= "</dl>";
		
		html		+= "<dl><dt>Featured Vehicles:<\/dt>";
		// loop on upfits
		for(var i = 0; i < tradeshow.vehicles.length; i++) {
			
			if(i < tradeshow.vehicles.length-1) {
				html 	+= "<dd>" + tradeshow.vehicles[i].vehicle + ", </dd>";
			} else {
				html 	+= "<dd>" + tradeshow.vehicles[i].vehicle + "</dd>";
			}
			
		}
		
		
		html		+= "<\/dl>";
		
		html		+= "<div id=\"directions-wrapper\"><form action=\"javascript:getDirections(document.directions.address.value,'" + tradeshow.address + "' );\" name=\"directions\" method=\"get\">";
		html 	+= "<span class=\"info-window-subtitle\">Get Directions: </span><a id=\"to-here\" class=\"off\" href=\"javascript:toggleToFrom('to-here');\">To Here<\/a> - <a id=\"from-here\" class=\"on\" href=\"javascript:toggleToFrom('from-here');\">From Here<\/a><br\/>";
		html 	+= "<span id=\"address-title\">Start Address<\/span>";
		html		+= "<input id=\"fromAddress\" name=\"address\" ondblclick=\"focusAllForm(this);\" onclick=\"focusForm(this);\" type=\"text\" value=\"Enter Address\" name=\"from\" size=\"28\"\/><input id=\"arrow\" type=\"image\" value=\"go\" src=\"/shared/images/commercial/maps/arrow.gif\"/>";
		html 	+= "<\/form><br class=\"clear\"\/><\/div>";
		
		marker.setDetailWinHTML(html);
		marker.setID(tradeshow.name);

		
	}
	
	// ======================================================
	// calcOffset - 
	// ======================================================
	function calcOffset(dayNum, monthNum, yearNum){
		var temp = new Date(yearNum, monthNum, dayNum);
		return ((43-temp.getDate()+temp.getDay())%7);
	}
	
	// ======================================================
	// daysInMonth - 
	// ======================================================
	//needs to have the NEXT month passed (cur+1)
	function daysInMonth(month,year) {
		var dd = new Date(year, month, 0);
		return dd.getDate();
	}
	
	// ======================================================
	// setCalendar - 
	// ======================================================
	function setCalendar(){
		
		var highlight_today = false;
  		if(date.getMonth() == currentMonth && date.getFullYear() == currentYear){
    			highlight_today = true;
  		}
		
		$('calendar').setStyle('display', 'block');
		
		if(empty_table != null) resetTable();
		empty_table = new Object($('calendar_dates').clone());
	
		
		$('month_label').setHTML(month_name[currentMonth] + " ");
		$('year_label').setHTML(currentYear);
		var offset = calcOffset(1, currentMonth, currentYear);
		var num_days = daysInMonth(currentMonth+1, currentYear);
		var day_num = 1;
		for(i = 0; i < 42; i++){
			var d = $("d_"+i);
			if(d != null) {
				if(i >= offset && day_num <= num_days){
					d.setHTML(day_num);
					d.id = "date_"+day_num;
					if(highlight_today && day_num == date.getDate()){
					 	d.addClass('orange');
					}
					day_num++;
				}else{
					if(d){
						d.removeAttribute('id');
					  }
				}	
			}
		}
		for(var i = 0; i < resultsArray.length; i++){
			var event_start = parseInt(resultsArray[i].dates.startDay);
			var event_start_m = parseInt(resultsArray[i].dates.startMonth);
			var event_end = parseInt(resultsArray[i].dates.endDay);
			var event_end_m = parseInt(resultsArray[i].dates.endMonth);
			
			if(event_start_m != (currentMonth+1)){
				//event started last month and ends this month, so start the first day of this month
				event_start = 1;
			}else if(event_end_m != (currentMonth+1)){
				//event ends sometime next month, so fill in the calendar till the end of this month
				event_end = daysInMonth(currentMonth, currentYear);
			}
			for(var j = event_start; j <= event_end; j++){
				var d = $("date_"+j);
				if(!d.hasClass('has_event')) d.addClass('has_event');
			}
		}
	}
	
	// ======================================================
	// calendarBack() - 
	// ======================================================
	function calendarBack(){
		//resetTable();
		if(currentMonth == 0){currentMonth = 11; currentYear--; selectedYear--;}
		else{currentMonth--;}
		selectedMonth = currentMonth+1;
		selectMonth();
		//setCalendar();
		
	}
	
	// ======================================================
	// calendarNext() - 
	// ======================================================
	function calendarNext(){
		//resetTable();
		if(currentMonth == 11){currentMonth = 0; currentYear++; selectedYear++;}
		else{currentMonth++;}
		selectedMonth = currentMonth+1;
		selectMonth();
		//setCalendar();
	}
	
	// ======================================================
	// resetTable() - 
	// ======================================================
	function resetTable(){
		$('calendar_dates').remove();
		$('calendar_contents').appendChild(empty_table);
		$$('#calendar_dates td.has_event').each(function(item, index) {
						item.toggleClass('has_event');
											    });
		
	}
	
	// ======================================================
	// sortByIndustry() - 
	// ======================================================
	function sortByIndustry(a, b) {
	    var x = a.industryID;
	    var y = b.industryID;
	    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
	}
	
	// ======================================================
	// sortByIndustry() - 
	// ======================================================
	function sortByVehicle(a, b) {
	    var x = a.vehicleID;
	    var y = b.vehicleID;
	    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
	}
	
	// ======================================================
	// sortByIndustry() - 
	// ======================================================
	function sortByDate(a, b) {
	    var x = a.dates.startDay;
	    var y = b.dates.startDay;
	    return (x - y);
	}
	
	