Get Your Free Huntsville Destination Guide | Hotels & Restaurants (2024)

Huntsville/Madison County is a one-of-a-kind place that prides itself on its past and looks ahead to its future. Come visit an area steeped in warm, welcoming Southern hospitality and vibrant, bustling culture. Experience the beauty of Huntsville’s outdoor areas, the thrill of local sports teams, the bustle of Rocket City nightlife, our rich historyand a wide array of exciting art and entertainmentoptions.

Whatever you want to see, one of the best ways to begin exploring Rocket Cityis by viewing our online, interactive DestinationGuide.

To receive a DestinationGuide in the mail, complete the form below and we'll be more than happy to send you one free of charge!

Get Your Free Huntsville Destination Guide | Hotels & Restaurants (1)

'+ '

'+' '+ ' '+ ' '+' '+'
'+ '<<' + this.getCurMonthName(sDate) + '>> '+ ' '+ '<<' + sDate.getFullYear() + '>>'+ '

'+'

'+'' + this.dayListTds() + '' + this.calDays(id, sDate, useToday) +'

'+'

' }; return d.calendar; }, calDays: function(id, curDate, useToday){ var rtnvar = ''; var numDaysInMonth = new Date(curDate.getFullYear(), curDate.getMonth()+1, 0).getDate(); var startofmonth = new Date(); startofmonth = new Date(curDate.getFullYear(),curDate.getMonth(),1); var rows = Math.ceil((startofmonth.getDay()+numDaysInMonth)/7); var cday = 1; var firstday = startofmonth.getDay()+1; var lastday = numDaysInMonth; var loopstart = 0; var loopend = 0; var currentDate = new Date(); currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()); for(var i = 1; i <= rows; i++){ rtnvar += '

'; loopstart = ((i-1)*7)+1; loopend = loopstart+6; for(var d = loopstart; d <= loopend; d++){ rtnvar += ''; if(d >= firstday && cday <= lastday){ var dt = new Date(curDate.getFullYear(), curDate.getMonth(), cday); var tmpDt = new Date(curDate.getFullYear(), curDate.getMonth(), curDate.getDate()); var className = (dt.getTime() == tmpDt.getTime() && useToday) ? 'today' : 'Day'; className += dt.getTime() == currentDate.getTime() ? ' currentDay' : ''; var thisdate = this.convertToUserDate(parseInt(dt.getMonth()+1,10) +'/'+parseInt(dt.getDate(),10)+'/'+parseInt(dt.getFullYear(), 10)); rtnvar += '' + cday + '
'; cday++; }else{ rtnvar += '
'; } } rtnvar += '

'; } return rtnvar; }, replaceCal: function (id, sDate) { var cal = this.createCal(id, sDate, false); if (document.getElementById(id + '_calendar')) { document.getElementById(id + '_calendar').innerHTML = cal; } else { var newDomElm = document.createElement('div'); newDomElm.style.position = 'absolute'; newDomElm.innerHTML = cal; newDomElm.id = id + '_calendar'; if (document.getElementById('fieldcontainer_' + id)) { document.getElementById('fieldcontainer_' + id).appendChild(newDomElm); } } return; }, updateDate: function(id, curDate){ document.getElementById(id).value = curDate; //document.getElementById(id).onchange(); if(document.getElementById(id + '_calendar')){ document.getElementById('fieldcontainer_' + id).removeChild(document.getElementById(id + '_calendar')); } if(document.getElementById('datepicker_' + id)){ document.getElementById('datepicker_' + id).onclick = function(){ svcrm.formBuilderScripts.fbCalendar.showDatePicker(document.getElementById(id), document.getElementById(id).value); }; } }, showDatePicker: function(domElm, curDate){ var cleanID = domElm.id.replace('datepicker_', ''); var sDate = new Date(); if(!document.getElementById(cleanID + '_calendar')){ if(document.getElementById(cleanID)){ try{ if(curDate){ sDate = this.convertToUSDate(curDate); if(sDate == 'Invalid Date'){ sDate = new Date(); } } }catch(e){ sDate = new Date(); } this.getCalendar(cleanID, sDate); } }else{ document.getElementById('fieldcontainer_' + cleanID).removeChild(document.getElementById(cleanID + '_calendar')); } }, getCalendar: function(id, curDate){ var newDomElm = document.createElement('div'); newDomElm.style.position = 'absolute'; newDomElm.innerHTML = this.createCal(id, curDate, true); newDomElm.id = id + '_calendar'; newDomElm.className = 'svcrm_datepicker'; document.getElementById('fieldcontainer_' + id).appendChild(newDomElm); }, convertToUSDate: function(dte){ var rtnvar = false; var wrk = dte.split(crm_locale.YAHOO_DATE_FIELD_DELIMITER); var wrkdate = []; var mydate = ''; if(wrk.length > 0){ wrkdate[0] = parseInt(wrk[crm_locale.YAHOO_MDY_DAY_POSITION-1],10); //always holds the day wrkdate[1] = parseInt(wrk[crm_locale.YAHOO_MDY_MONTH_POSITION-1],10); //always holds the month wrkdate[2] = parseInt(wrk[crm_locale.YAHOO_MDY_YEAR_POSITION-1],10); //always holds the year if(wrkdate[1] > 0 && wrkdate[1] < 13){ //Validate the months var monthsWithDaysRegExp = new RegExp("(4|6|9|11)", "gi"); var numdays = 31; if(wrkdate[1] == 2){//feb numdays = 28; //check if leap year if (wrkdate[2] % 4 === 0 && (wrkdate[2] % 100 !== 0 || wrkdate[2] % 400 === 0)){ numdays = 29; } }else if(monthsWithDaysRegExp.test(wrkdate[1])){ numdays = 30; } if(wrkdate[0] > 0 && wrkdate[0] <= numdays){ //validate the days in this month if(wrkdate[2].toString().length == 2){ //if we have a two digit year pad it wrkdate[2] = chkYear(wrkdate[2]); } if(wrkdate[2].toString().length == 4 && !isNaN(wrkdate[2])){ //validate the year, could expand this /* we are here we have a valid month and we have a valid day for that month and we have a valid 4 digit year */ //fld.value = wrkdate.join(crm_locale.YAHOO_DATE_FIELD_DELIMITER); wrk[1] = wrkdate[0]; //put the day back where it should be wrk[0] = wrkdate[1]; //put the month back where it should be wrk[2] = wrkdate[2]; //put the year back where it should be wrkdate = wrk.join("/"); //join on the us delim and return valid rtnvar = true; } } } } if(!rtnvar){ //if we didn't get a good date from above we use today wrkdate = new Date(); } return wrkdate; }, convertToUserDate: function(dte){ var rtnvar = false; var wrk = dte.split("/"); var wrkdate = []; var mydate = ''; if(wrk.length > 0){ wrkdate[0] = parseInt(wrk[1],10); //always holds the day wrkdate[1] = parseInt(wrk[0],10); //always holds the month wrkdate[2] = parseInt(wrk[2],10); //always holds the year if(wrkdate[1] > 0 && wrkdate[1] < 13){ //Validate the months var monthsWithDaysRegExp = new RegExp("(4|6|9|11)", "gi"); var numdays = 31; if(wrkdate[1] == 2){//feb numdays = 28; //check if leap year if (wrkdate[2] % 4 === 0 && (wrkdate[2] % 100 !== 0 || wrkdate[2] % 400 === 0)){ numdays = 29; } }else if(monthsWithDaysRegExp.test(wrkdate[1])){ numdays = 30; } if(wrkdate[0] > 0 && wrkdate[0] <= numdays){ //validate the days in this month if(wrkdate[2].toString().length == 2){ //if we have a two digit year pad it wrkdate[2] = chkYear(wrkdate[2]); } if(wrkdate[2].toString().length == 4 && !isNaN(wrkdate[2])){ //validate the year, could expand this /* we are here we have a valid month and we have a valid day for that month and we have a valid 4 digit year */ //fld.value = wrkdate.join(crm_locale.YAHOO_DATE_FIELD_DELIMITER); wrk[crm_locale.YAHOO_MDY_DAY_POSITION-1] = wrkdate[0]; //put the day back where it should be wrk[crm_locale.YAHOO_MDY_MONTH_POSITION-1] = wrkdate[1]; //put the month back where it should be wrk[crm_locale.YAHOO_MDY_YEAR_POSITION-1] = wrkdate[2]; //put the year back where it should be wrkdate = wrk.join(crm_locale.YAHOO_DATE_FIELD_DELIMITER); //join on the correct delim and return valid rtnvar = true; } } } } if(!rtnvar){ //I dont really know what to do here i guess just use today and convert to their date var t = new Date(); t = t.getMonth()+1 + '/' + t.getDay() + '/' + t.getFullYear(); wrkdate = this.convertToUserDate(t); } return wrkdate; }, convertToUserMDOnlyDate: function(dte){ var dateFormat_MDOnly = crm_locale.DATEFMT_MDONLY.split(crm_locale.YAHOO_DATE_FIELD_DELIMITER); var _day = dte.getDate().toString(); var _month = (dte.getMonth() + 1).toString(); var _dayFormat = ''; var _monthFormat = ''; var _dayPostion = ''; var _monthPostion = ''; if(dateFormat_MDOnly[0].indexOf('d') != -1){ _dayFormat = dateFormat_MDOnly[0]; _monthFormat = dateFormat_MDOnly[1]; _dayPostion = 0; _monthPostion = 1; }else{ _dayFormat = dateFormat_MDOnly[1]; _monthFormat = dateFormat_MDOnly[0]; _dayPostion = 1; _monthPostion = 0; } if(_dayFormat == 'dd' && _day.length != 2){ _day = '0' + _day; } if(_monthFormat == 'mm' && _month.length != 2){ _month = '0' + _month; } var dsp = []; dsp[_dayPostion] = _day; dsp[_monthPostion] = _month; dsp = dsp.join(crm_locale.YAHOO_DATE_FIELD_DELIMITER); return dsp; } };/* +++++++++++++++++++++++++++ END Script Calendar +++++++++++++++++++++++++++++++++++++*/if (window.addEventListener) { window.addEventListener('load', svcrm.formBuilderScripts.__onload_function, false); } else if (window.attachEvent) { window.attachEvent('onload', svcrm.formBuilderScripts.__onload_function); }})();/* +++++++++++++++++++++++++++ BEGIN Script copied from OLD CMS loadCRMForm +++++++++++++++++++++++++++++++++++++*/

Events

American Studio Glass

Jun 25

While glass containers and vessels have been made for more than 2,000...

See More

Buccellati: A Silver Menagerie

Jun 25

The Buccellati style, which has combined Renaissance period techniques,...

See More

Chrome: David Parrish

Jun 25

The work of late Huntsville-based artist David Parrish stuns with its...

See More

Dare to Explore: Frontiers of Space

Jun 25

Dare to Explore: Frontiers of Space is a new and evolving exhibit...

See More

Doc McStuffins The Exhibit

Jun 25

Welcome to the exhibit of Doc McStuffins! The Doc McStuffins Show is about...

See More

View All Events

',nextArrow : '

',appendArrows: root.find("[data-cs-controls]"),dots: true,slide: ".slide",slidesToShow: 1,slidesToScroll: 1,draggable: false,centerMode: mobileCenter,variableWidth: mobileCenter,mobileFirst: true,responsive: [{ breakpoint: 1025, settings: { slidesToShow: lgInitLoad, slidesToScroll: lgInitLoad, centerMode: false,variableWidth: false, } }, { breakpoint: 641, settings: { slidesToShow: smInitLoad, slidesToScroll: smInitLoad, centerMode: false,variableWidth: false, } }]})});

Visitor Info

  • Visitor Centers
    • Attractions Pass
  • Destination Guide
  • #iHeartHsv Blog
  • Accessibility
  • Transportation
    • Huntsville International Airport
    • Car Rentals
    • Limousines
    • Public Transportation
    • Taxis
    • Motorcoach
    • Uber and Lyft
    • Cycling
  • Itineraries
    • Space Geek
    • Girls Getaway
    • Guys Getaway
    • Arts Lover
    • History Buff
    • Young Professionals
    • Traveling with Young Kids
    • Road Trip
    • Shopping Enthusiasts
    • Business Trip
    • STEM Traveler
    • LGBTQ+
    • Itinerario y Guía en Español
  • Special Offers
    • Passport Coupons
    • Rocket City Kids Pass
  • Social Station
    • Submit Your Photos
  • Around Us
  • Contact Us
    • Staff

Get Your Free Huntsville Destination Guide | Hotels & Restaurants (12)

Discounts

Attraction discounts & more

See More

Get Your Free Huntsville Destination Guide | Hotels & Restaurants (2024)

References

Top Articles
Latest Posts
Article information

Author: Allyn Kozey

Last Updated:

Views: 5449

Rating: 4.2 / 5 (63 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Allyn Kozey

Birthday: 1993-12-21

Address: Suite 454 40343 Larson Union, Port Melia, TX 16164

Phone: +2456904400762

Job: Investor Administrator

Hobby: Sketching, Puzzles, Pet, Mountaineering, Skydiving, Dowsing, Sports

Introduction: My name is Allyn Kozey, I am a outstanding, colorful, adventurous, encouraging, zealous, tender, helpful person who loves writing and wants to share my knowledge and understanding with you.