/* 
	======================================================================
   	
	File        : lva.core.js
	Description : Core JavaScript Functions for La Vista Azul Resort
	Version     : v2.0
	Created     : 09/15/10
	
	Copyright (c) 2010 | Design Squared | All Rights Reserved.
	
	======================================================================
*/

/*
	==================================================
	Initiate Site-Wide jQuery Functions
	==================================================
*/

$(document).ready(function() {
	
	/*==================================================
	  _blank XHTML Fix
	==================================================*/
	
	$('a[rel=external]').attr('target', '_blank');
	$('area[class=forceExternal]').attr('target', '_blank');
	
	
	/*==================================================
	  Activate Tool Tips
	==================================================*/
	
	$('.toolTip').tipsy({fade: true, gravity: 's'});
	
	
	/*==================================================
	  Livehelp Image Activation
	==================================================*/
	
	statusImagesLiveHelp[statusImagesLiveHelp.length] = $('LiveHelpStatus');
	
	
	/*==================================================
	  Handle Promotion Slider
	==================================================*/
	
	// Auto Open Promo Slide //
	$('#promoSlide').slideToggle('slow');
	
	// Close Promo Slide //
	$('#jsPromoClose').click(function(){
		$('#promoSlide').slideToggle('fast');
	});
	
	// Track Promo Click-Trough //
	$('#jsPromoLoad').click(function(){
		pageTracker._trackPageview("/homepage/summerpromo"); 
	});
	
	
	/*==================================================
	  Display Real Estate Modal if Present
	==================================================*/
	
	if ($('#modal-realEstate').length != 0){
		$('#modal-realEstate').modal({
			overlayId : 'modal-realEstate-overlay',
			containerId : 'modal-realEstate-container',
			overlayClose : true
		});
	}
	
	/*==================================================
	  Handle Flight + Hotel and Hotel Only Forms
	==================================================*/
	
	var quickBook = 
	{
		flightDate: null,
		/*==================================================
		  Initialize Forms
		==================================================*/
		init: function(){
			// Hotel Only //
			$('#hotelOnly_link').addClass('active').click(function(e){
				e.preventDefault();
				quickBook.rotate('hotelOnly');
			});
			$('#hotelOnly_form').submit(function(e) {
				e.preventDefault();
				quickBook.hotelOnly_validate();
			});
			
			// Flight + Hotel //
			$('#flightHotel_link').click(function(e){
				e.preventDefault();
				quickBook.rotate('flightHotel');
			});
			$('#flightHotel_country').change(function(){
				var active_country = $('#flightHotel_country').val();
				quickBook.flightHotel_origin(active_country);
			});
			$('#flightHotel_form').submit(function(e) {
				e.preventDefault();
				quickBook.flightHotel_validate();
			});
			
			// Load Form(s) //
			quickBook.load();
		},
		/*==================================================
		  Load Forms / Activate DatePicker Plugin
		==================================================*/
		load: function(){
			// Hotel Only //
			$('#hotelOnly_date')
				.datePicker(
					{
						clickInput : true,
						startDate : new Date().addDays(1).asString()
					}
				).val(
					new Date().addDays(1).asString()
				).trigger(
					'change'
				);
			$('#hotelOnly_container').css('display', 'block');
			
			// Flight + Hotel //
			quickBook.flightDate = new Date().addDays(3).asString();
			$('#flightHotel_date')
				.datePicker(
					{
						clickInput : true,
						startDate : quickBook.flightDate
					}
				).val(
					quickBook.flightDate
				).trigger(
					'change'
				).bind(
					'dpClosed',
					function(e, selected){ 
						quickBook.flightDate = new Date(selected[0]).asString();
					}
				);
		},
		/*==================================================
		  Rotate Between Forms
		==================================================*/
		rotate: function(tab){
			// Hotel Only //
			if (tab == 'hotelOnly') {
				if ($('#flightHotel_container').css('display') != 'none'){
					$('#flightHotel_container').fadeOut('fast', function(){
						$('#flightHotel_link').removeClass('active');
						$('#hotelOnly_link').addClass('active');
						$('#hotelOnly_container').fadeIn('fast');
					});
				} else {
					// Do Nothing
				}
			} 
			// Flight + Hotel //
			if (tab == 'flightHotel') {
				if ($('#hotelOnly_container').css('display') != 'none'){
					$('#hotelOnly_container').fadeOut('fast', function(){
						$('#hotelOnly_link').removeClass('active');
						$('#flightHotel_link').addClass('active');
						$('#flightHotel_container').fadeIn('fast');
					});
				} else {
					// Do Nothing
				}
			}	
		},
		/*==================================================
		  Display City based on Country for Flight + Hotel
		==================================================*/
		flightHotel_origin: function(country){
			// USA Cities //
			var usaCity = [
				'ALBANY, NY','ALBUQUERQUE, NM','ALLENTOWN, PA','ATLANTA, GA','AUSTIN, TX',
				'BALTIMORE, MD','BIRMINGHAM, AL','BOSTON, MA','BUFFALO, NY','BURLINGTON, VT',
				'CHARLESTON, SC','CHARLOTTE, NC','CHICAGO-O\'HARE, IL','CINCINNATI, OH','CLEVELAND, OH','COLUMBUS, OH',
				'DALLAS-FT. WORTH, TX','DENVER, CO','DETROIT-WAYNE COUNTY-APO, MI',
				'FT LAUDERDALE, FL',
				'HARRISBURG, PA','HARTFORD/SPRNGFIELD, CT','HOUSTON - INTERCONT, TX',
				'INDIANAPOLIS, IN',
				'JACKSONVILLE, FL',
				'KANSAS CITY, MO',
				'LAS VEGAS, NV','LOS ANGELES, CA',
				'MANCHESTER, NH','MEMPHIS, TN','MIAMI, FL','MILWAUKEE, WI','MINNEAPOLIS-ST. PAUL, MN','MOBILE, AL',
				'NASHVILLE, TN','NEW ORLEANS, LA','NEW YORK CITY (ALL AIRPORTS), NY','NEW YORK KENNEDY APO, NY','NEW YORK, NEWARK,NJ, NJ','NEW YORK,LAGUARDIA, NY','NORFOLK, VI',
				'OAKLAND, CA','OKLAHOMA CITY, OK','OMAHA, NE','ORLANDO, FL',
				'PHILADELPHIA, PA','PHOENIX, AZ','PITTSBURGH, PA','PORTLAND, OR','PORTLAND, ME','PROVIDENCE, RI',
				'RALEIGH DURHAM, NC','ROCHESTER, MN',
				'SACRAMENTO, CA','SAN ANTONIO, TX','SAN DIEGO, CA','SAN FRANCISCO, CA','SCRANTON, PA','SEATTLE TACOMA, WA','ST LOUIS, MO','SYRACUSE, NY',
				'TALLAHASSEE, FL','TAMPA, FL','TRI-CITY AIRPORT, TN','TULSA, OK','TUSCON, AZ',
				'WASHINGTON- DULLES APO, DC','WASHINGTON-NATIONAL, DC'
			];
			var usaAirport = [
				'ALB','ABQ','ABE','ATL','AUS',
				'BWI','BHM','BOS','BUF','BTV',
				'CHS','CLT','ORD','CVG','CLE','CMH',
				'DFW','DEN','DTW',
				'FLL',
				'HAR','BDL','IAH',
				'IND',
				'JAX',
				'MCI',
				'LAS','LAX',
				'MHT','MEM','MIA','MKE','MSP','MOB',
				'BNA','MSY','NYC','JFK','EWR','LGA','ORF',
				'OAK','OKC','OMA','MCO',
				'PHL','PHX','PIT','PDX','PWM','PVD',
				'RDU','RST',
				'SAC','SAT','SAN','SFO','SCR','SEA','STL','SYR',
				'TLH','TPA','TRI','TUL','TUS',
				'IAD','DCA'
			];
			
			// Canada Cities //
			var cndCity = ['CALGARY, CA','EDMONTON, CA','HALIFAX, CA','MONTREAL-DORVAL APO, PQ','OTTAWA, CA','QUEBEC CITY, CA','REGINA, CA','SASKATOON, CA','TORONTO, ON','VANCOUVER, CA','WINNIPEG, CA'];
			var cndAirport = ['YYC','YEG','YHZ','YUL','YOW','YQB','YQR','YXE','YYZ','YVR','YWG'];
			
			// Mexico Cities //
			var mexCity = ['ACAPULCO, MX','CIUDAD JUAREZ, MX','GUADALAJARA, MX','HERMOSILLO, MX','IXTAPA, MX','MERIDA, MX','MEXICO CITY, MX','MONTERREY, MX','PUEBLA, MX','PUERTO ESCONDIDO, MX','PUERTO VALLARTA, MX','TIJUANA, MX','TUXTLA GUTIERREZ, MX','VERACRUZ, MX','VILLA HERMOSA, MX'];
			var mexAirport = ['ACA','CJS','GDL','HMO','ZIH','MID','MEX','MTY','PBC','PXM','PVR','TIJ','TGZ','VER','VSA'];
			
			// Build Select Object Based on Country Function //
			function build_select(city,airport){
				var options = '';
				for (var i = 0; i < city.length; i++) {
        			options += '<option value="' + airport[i] + '">' + city[i] + '</option>';
      			}
      			$("#flightHotel_city").html(options);
			}
			
			// Update City List //
			if (country == 'canada'){
				build_select(cndCity,cndAirport);
			} 
			else if (country == 'mexico'){
				build_select(mexCity,mexAirport);
			}
			else if (country == 'usa'){
				build_select(usaCity,usaAirport);
			}
			else {
				options = '<option value="" selected="selected">Select Departure City</option>';
				$("#flightHotel_city").html(options);
			}
		},
		/*==================================================
		  Validate Hotel Only Form
		==================================================*/
		hotelOnly_validate: function(){
			if ($('#hotelOnly_date').val() == ''){
				alert('Please Complete All Booking Form Fields');
			}
			else {
				quickBook.hotelOnly_submit();
			}
		},
		/*==================================================
		  Submit Hotel Only Form
		==================================================*/
		hotelOnly_submit: function(){
			// Format Start Date //
			var monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
			var monthNumbers = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
			var startDate = $('#hotelOnly_date').val();
			var startDay = startDate.substr(0,2);
			var startMonth = startDate.substr(3,3);
			var startYear = startDate.substr(7,4);
			
			for (var i=0; i<monthNames.length; i++) {
				if (startMonth == monthNames[i]) {
					startMonth = monthNumbers[i];
					break;
				} else {
					// Do Nothing
				}
			}
			
			// Add Form Variables //
			var url = 'http://reservation.worldweb.com/booking-list.html';
			url += '?hotel_id=943';
			url += '&sourcecode_id=1611';
			url += '&date_from_yearmonth=' + startYear + startMonth;
			url += '&date_from_day=' + startDay;
			url += '&num_nights=' + $('#hotelOnly_nights').val();
			url += '&num_adults=' + $('#hotelOnly_adults').val();
			url += '&num_children=' + $('#hotelOnly_children').val();
			
			// Open Reservation Window //
			/* alert(url); */
			window.open(url, '_blank');
		},
		/*==================================================
		  Validate Flight + Hotel Form
		==================================================*/
		flightHotel_validate: function(){
			if ($('#flightHotel_date').val() == '' || $('#flightHotel_city').val() == ''){
				alert('Please Complete All Booking Form Fields');
			}
			else {
				quickBook.flightHotel_submit();
			}
		},
		/*==================================================
		  Submit Flight + Hotel Form
		==================================================*/
		flightHotel_submit: function(){
			
			// Default Month Arrays //
			var monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
			var monthNumbers = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
			
			// Start Dates //
			var startDate = $('#flightHotel_date').val();
			var startDay = startDate.substr(0,2);
			var startMonth = startDate.substr(3,3);
			var startYear = startDate.substr(7,4);
			
			for (var i=0; i<monthNames.length; i++) {
				if (startMonth == monthNames[i]) {
					startMonth = monthNumbers[i];
					break;
				}
			}
			startDate = startMonth+'/'+startDay+'/'+startYear;
			
			// Format End Date //
			var n = $('#flightHotel_nights').val();
			var nights = parseInt(n);
			var endDate = new Date(quickBook.flightDate).addDays(nights).asString();
			var endDay = endDate.substr(0,2);
			var endMonth = endDate.substr(3,3);
			var endYear = endDate.substr(7,4);
			
			for (var i=0; i<monthNames.length; i++) {
				if (endMonth == monthNames[i]) {
					endMonth = monthNumbers[i];
					break;
				}
			}
			endDate = endMonth+'/'+endDay+'/'+endYear;
			
			
			// Add Form Variables //
			var url = 'http://vacations.travelressystems.com/sc/ws/pricer.cfm';
			url += '?H_HID=335';
			url += '&VNUM=335';
			url += '&I_ID=PLS';
			url += '&Form.NOROOMS=1';
			url += '&QUOTETYPE=AirHotel';
			
			url += '&ORIG='+$('#flightHotel_city').val();
			url += '&TRAVELDATE1='+startDate;
			url += '&TRAVELDATE2='+endDate;
			url += '&ROOM1ADULTS='+$('#flightHotel_adults').val();
			url += '&ROOM1CHNO='+$('#flightHotel_children').val();
			url += '&CH1AGE1=12';
			url += '&CH1AGE2=12';
			
			// Open Flight + Hotel Reservation Window //
			/* alert(url); */
			window.open(url, '_blank');
		}
	}
	
	// Initiate Quick Book Form(s) //
	quickBook.init();
	
});
