// JavaScript Document

	  $().ready(function() {
	  
	  	/// init Shadowbox overlay:
	  	Shadowbox.init({
	  		skipSetup:true,		// we don't have any configured links in markup
	  		players:['html'],	// include the html "player" since that's all we're displaying
	  		modal:true			// prevent the user from closing form by clicking on the overlay
	  	});
	  	
	  	// global changes for safari:
	  	if ($.browser.safari) {
	  	
	  		// make footer clear floated elements:
	  		$('#footer').css({
	  			'position':'relative',
	  			'display':'block',
	  			'top':55
	  		});
	  		
	  		// resize textareas;
	  		$('.pad .question .clearfix textarea').css ('height', '96px');
	  	}
		
		$('div.thumb_slider .prev a').click(function() {
			// Set Constants
			var per_page = 5;
			
			// Get Values
			var total = parseInt($('div.thumb_slider div.control span.total').html());
			var current_start = parseInt($('div.thumb_slider div.control span.start').html());
			var new_start = current_start - per_page;
			if (new_start < 0) {
				new_start = 0;
			}
			
			if (total > 5) {
			
				$('div.thumb_slider div.control span.start').text(new_start);
				
				// Perform Load
				// test url to find out which function to load:
				var regEx = new RegExp(/events/);
				var URL = window.location.href;
				var match = URL.search(regEx);
				
				if (match !== -1) {
					event_page_thumbs(new_start, 'left');
				}
				else {
					page_thumbs(new_start, 'left');
				}
				
				// Handle Next Button			
				if (new_start <= 0) {
					// Deactivate
					$('div.thumb_slider .prev').fadeOut();
				}
				else {
					// Activate
					$('div.thumb_slider .prev').fadeIn();
				}
				$('div.thumb_slider .next').fadeIn();
			}

			return false;
		});

		$('div.thumb_slider .next a').click(function() {			
			// Set Constants
			var per_page = 5;
			
			// Get Values
			var total = parseInt($('div.thumb_slider div.control span.total').html());
			var current_start = parseInt($('div.thumb_slider div.control span.start').html());
			var new_start = current_start + per_page;
			if (new_start>=total) {
				new_start = 0;

			}
			
			if (total > 5) {
				$('div.thumb_slider div.control span.start').text(new_start);
				
				// Perform Load
				// test url to find out which function to load:
				var regEx = new RegExp();
				regEx = /events/;
				var URL = window.location.href;
				var match = URL.search(regEx);
				
				if (match !== -1) {
					event_page_thumbs(new_start, 'right');
				}
				else {
					page_thumbs(new_start, 'right');
				}
				
				// Handle Next Button			
				if (new_start + per_page >= total) {
					// Deactivate
					$('div.thumb_slider .next').fadeOut();
				}
				else {
					// Activate
					$('div.thumb_slider .next').fadeIn();
				}
				
				$('div.thumb_slider .prev').fadeIn();
			}
			
			return false;
		});	
		
		$('div.thumb_slider div.frame ul li a').click(function() {			
			load_photo($(this).find('img').attr('src'),$(this).find('img').attr('alt'));
			return false;
		});

		// assign event for date selector on contact page, /contact:
		$('div.tour form div.grouping fieldset select#sel_date_month').change (function(e) {			
			TourContactForm.tour_scheduler_date_handler (e.target);
			return false;
	  	});

		// assign event for year selector on contact page, /contact:
		$('div.tour form div.grouping fieldset select#sel_date_year').change (function(e) {
			TourContactForm.tour_scheduler_leapyear_handler (e.target);
			return false;
		});

		// assign event to validate contact forms on /contact:		
		$('div.tour form a#a_tourform_submit, div.question form a#a_questionform_submit').click (function(e) {
			var caller = $(e.target);		
			ContactForms.doValidation ($(caller));
			return false;
		});
		
		
		// assign focus and blur events for text inputs on /contact:
		$('div.tour form input:text, div.question form input:text, div.question form textarea').focus (function () {
				// get current value:
				var currVal = $(this).val();
				
				// store the existing default text:
				$(this).data ('defaultValue', currVal);
				
				// remove default text on focus:
				$(this).val('');
				
				return false;
		});
		
		$('div.tour form input:text, div.question form input:text, div.question form textarea').blur (function() {
				// determine if there is any text in the field,
				// if the caret leaves the field and it is empty,
				// restore default text:
				if ($(this).val().length < 1) {
					$(this).val($(this).data('defaultValue'));
				}
				
				return false;
		});
		
		$('div.newsletter a.signup').click(function() {
				// constant contact email signup:
				// do some simple validation first:
				if ($('div.newsletter div.form input:text').val().length < 1) {
					alert('Please enter your email address prior to submission.');
					return false; 
				} else {
					var fieldVal = $('div.newsletter div.form input:text').val();
					
					// check for a valid email address
					if (!/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/i.test(fieldVal)) {
						alert('Please enter a valid email address.');
						
						// focus on the field:
						$('div.newsletter div.form input:text').focus();
						 
						return false;						
					} else {
						// open a welcome message as soon as the window loads
						$.ajax ({
							url:'/newsletter_signup.php',							
							type:'POST',
							dataType:'html',
							data:'email=' + fieldVal,
							success:function (msg) {
								Shadowbox.open({
									content:msg,
							    	player:'html',
		   					        title:"Newsletter Signup",
							        height:325,
							        width:230							       
							    });							    
							}
						});	
					}				
				}
				
				return false;		
			});
	  });
	  
	  //
		function doAddContact () {	  	
			var postData = $('form#constantcontact').serialize();
			$.ajax ({							
				url:'newsletter_signup.php',
				global:false,
				type:'POST',		
				dataType:'html',
				data:postData + '&process=1',					
				complete: function(msg) {
					$('div.newsletter_signup_form form').fadeOut('normal', function() {
						// fade up success message:
						$('div.newsletter_signup_form div.complete').fadeIn();
						
						setTimeout ('Shadowbox.close()', 5000);
	
					});				
				}
			});
		}
	  
	  
	  //
	  function page_thumbs(start,l_direction) {		
		$.ajax({
			  url: "/amenities/ajax_thumbs/"+start,
			  global: false,
			  type: "POST",
			  dataType: "html",
			  success: function(msg){
				$("div.thumb_slider div.frame").fadeOut(200,function() {
					$('div.thumb_slider div.frame ul').html(msg);
					$('div.frame ul li:last').addClass('last');
					$("div.thumb_slider div.frame").effect('slide',{direction:l_direction},700,function() {
						apply_thumb_actions();
					});
				});

			}
		});
  
	  }
	  
	  function event_page_thumbs(start, l_direction) {			
			$.ajax({
			  url: "/events/ajax_thumbs/" + start,
			  global: false,
			  type: "POST",
			  dataType: "html",
			  success: function(msg){
				$("div.thumb_slider div.frame").fadeOut(200,function() {
					$('div.thumb_slider div.frame ul').html(msg);
					$('div.frame ul li:last').addClass('last');
					$("div.thumb_slider div.frame").effect('slide',{direction:l_direction},700,function() {
						apply_thumb_actions();
					});
				});
			}
		});
	  }
	  
	  
	  //
	  function load_photo(src,alt) {

		$('div.photo_viewer div.caption').fadeOut('fast',function() {
			$('div.photo_viewer li.active').fadeOut('normal',function() {
				$('div.photo_viewer li.active').html('<img src="'+src.replace('[133x100]_','')+'" alt="'+alt+'">').fadeIn('normal',function() {	
					if (alt.length>0) {
						$('div.photo_viewer div.caption').html('<p>'+alt+'</p>');
						$('div.photo_viewer div.caption').fadeIn('fast');
					} else {		
						$('div.photo_viewer div.caption').html('');	
					}			
				});	
			});	
		});
		
	  }
	  
	  
	  //
	  function apply_thumb_actions() {
	  
		$('div.thumb_slider div.frame ul li a').click(function() {
			load_photo($(this).find('img').attr('src'),$(this).find('img').attr('alt'));
			return false;
		});	
		
	  }
	  
	  var ContactForms = {
	  	  getForm:function (caller) {
	  	  	  // determine which of the two forms to validate on the contact page:			  	  	  	  	  
	  	  	  return $(caller).parent();
	  	  },
	  	  doValidation: function(caller){
		  	// flag to load 1 of 2 validation rulesets:
					var form = ContactForms.getForm($(caller));
					
					// validate the form:
					var inputs = $(form).children('input:text');
					var textareas = $(form).children('textarea');
					var selects = $('div.tour form div.grouping fieldset').children('select');
					
					var isValid = true;
					
					// parse values of each input:
					for (var i = 0; i < inputs.length; i++) {
						if ($(inputs[i]).val() == 'FIRST NAME' || $(inputs[i]).val() == 'LAST NAME' || $(inputs[i]).val() == 'EMAIL' || $(inputs[i]).val() == 'PHONE') {
							$(inputs[i]).css('background-color', '#FFCCCC');
							isValid = false;
						}
						else {
							
							if ($(inputs[i]).css('background-color') == 'rgb(255, 204, 204)') {
								$(inputs[i]).css('background-color', '#FFFFFF');
							}
						}
					}
					
					// parse textareas:
					if ($(form).is('div.question form')) {
						for (var j = 0; j < textareas.length; j++) {
							if ($(textareas[j]).val() == 'ENTER YOUR QUESTION OR COMMENTS HERE') {
								$(textareas[j]).css ('background-color', '#FFCCCC');
								isValid = false;
							} else {
								if ($(textareas[j]).css ('background-color') == 'rgb(255, 204, 204)') {
									$(textareas[j]).css ('background-color', '#FFFFFF');
								}								
							}
						}
					}
					
					// parse selects:
					if ($(form).is('div.tour form')) {
						for (var k = 0; k < selects.length; k++) {
							if ($(selects[k]).val() == '' || $(selects[k]).val() == 'MM' || $(selects[k]).val() == 'DD' || $(selects[k]).val() == 'YYYY') {
								$(selects[k]).css('color', '#FF0000');
								isValid = false;
							}
							else {
								if ($(selects[k]).css('color') == 'rgb(255, 0, 0)') {
									$(selects[k]).css('color', '#000000');
								}
							}
						}
					}
					
					if (!isValid) {
						alert('Please enter data in the marked fields.');
					}
					else {
						// submit the form:
						var postData = $(form).serialize();						
						$.ajax ({
							url:'/contactform/sendEmail',
							global:false,
							type:'POST',
							dataType:'text',
							data:postData,
							success: function(msg){
								var message = confirm('Thank you.\nWe have received your request.');
								if (message) {
									window.location.reload();
								}
								else {
									window.location.reload();
								}								
							}
						});
						
											
					}
				} 
	  };
	  
	  var TourContactForm = {
	  	  tour_scheduler_date_handler:function (element) {
	  	  	   // look at element and see if we have one of the
			  // following months: September, April, June, November, February:
			  var optionString = '<option value = \'DD\'>&#160;</option>';	  	  
			  var selMonth = parseInt($(element).val());  	  
			  
			  if (selMonth === 4 || selMonth === 6 || selMonth === 9 || selMonth === 11) {
				  maxDays = 30;
			  } else if (selMonth === 2) {
				  // determine if current year is a leap year:
				  var isLeapYear = this.tour_scheduler_leapyear_handler ($('select#sel_date_year'));	  	  	  
				  isLeapYear ? maxDays = 29 : maxDays = 28;	  	  	  
			  } else {
				  // we're not in a special month:
				  maxDays = 31;
			  }
			  
			  // write out the selectable days:
			  for (var i = 1; i <= maxDays; i++) {	  	  	  
				  optionString += '<option value = \'' + i + '\'>' + i + '</option>\n';
			  }	  
			  
			  // enable the day and year fields:
			  $('select#sel_date_day, select#sel_date_year').removeAttr ('disabled');  	  
			  
			  // set the html of #t_date_day to optionString:
			  $('select#sel_date_day').html (optionString);  	  	  	  
		  },
		  tour_scheduler_leapyear_handler:function (element) {
		  	  // determine if the day chosen is still kosher
		  	  // after year was selected. this function is only called
		  	  // if the month is selected is february:
	  	  
		  	  if (parseInt($('select#sel_date_month').val()) === 2) {
				// get selected year:
				var selYear = parseInt($(element).val());
				
				// anonymous utility function used
				// to determine if selected year is leap year:
				var isLeapYear = function(year) {
					if (year % 4 !== 0) {					   				  	  
						return false;
					} else {
						if (year % 100 !== 0) {					  	  
						return true;
						} else {
							if (year % 400 !== 0) {						  	  
								return false;
							} else {						  	  
								return true;
							}
						}
					}				  
				}(selYear);
				
				if (isLeapYear) {			  
					var rePopulate = function () {
						// we have to repopulate here if the year selected is a leap year:
						var dateSel = $('select#sel_date_day');				
						var newDates = '<option value = \'DD\'>DD</option>\n';
						var maxDays;				
					
						// determine max days to write out:				
						isLeapYear ? maxDays = 29 : maxDays = 28;				
										
						for (var i = 1; i <= maxDays; i++) {					
							newDates += '<option value = \'' + i + '\'>' + i + '</option>\n';
						}
						
						// alert the user to choose another date:
						alert ('You\'ve chosen a leap year.\nPlease select another day.');
						
						// repopulate the field:					
						$(dateSel).html (newDates);
					}();
				}
			  }
			  
			  return isLeapYear;		  
		  }
	  };
