
var villa = {

	init: function() {
		villa.setupSubnav();
		villa.setupGallery();
		villa.setupReviews();
		villa.setupInquiryForm();
		villa.setupBodyTruncate();
	},

	setupSubnav: function() {
		$.localScroll({
			onAfter: function(e) {
				$(e).addClass('on').fadeTo("fast", 0.1, function() { 
					$(this).fadeTo("fast", 1); 
				}); 	
			}
		}); 
	}, 

	setupGallery: function() {

		$("a.gallery").fancybox({
			'zoomSpeedIn': 300,
			'zoomSpeedOut': 300,
			'zoomOpacity': true, 
			'overlayShow': true,
			'overlayOpacity': 0.70
		}); 

		$(".villa_photos a img").mouseover(function() {

			var $t = $(this); 
			var p = $t.position();
			if($t.next("div").size > 0) return; 

			var $div = $("<div></div>")
				.attr('class', 'gallery_border')
				.width($t.width()-4)
				.height($t.height()-4)
				.css({
					border: '2px solid #000', 
					position: 'absolute', 
					top: p.top + 'px', 
					left: p.left + 'px'

				}).mouseout(function(event) {
					$(this).remove(); 
				});

			$t.after($div)
			$div.fadeTo("slow", 0); 

		}); 
	}, 

	setupReviews: function() {


		$("#villa_reviews form").submit(function() {
			var $this = $(this); 
			$.post($this.attr('action'), $this.serialize() + '&CommentForm_submit=1', function(data) {
				$("#villa_reviews").html(data).slideDown();
				villa.setupReviews(); 
			}); 
			$("#villa_reviews").slideUp();
			return false; 
		}); 

		$("#post_review_link").click(function() {
			var id = $(this).attr('href').substring(1); 
			$.get("/comments/villas/" + id + "/?form=1", function(data) {
				$("#villa_reviews").html(data).slideDown();
				villa.setupReviews(); 
			}); 
			$("#villa_reviews").slideUp();
			$(this).parents(".related_villas_links").remove();

			return false; 
		}); 


	},

	setupInquiryForm: function() {

		var $form = $("#villa_inquiry_form"); 
		if($form.size() < 1) return;

		var saved = $.cookie('villa_inquiry');
		if(saved != null) {
			saved = $.json.decode(saved); 
			$(":input[name!=villa_id]", $form).each(function() {
				var name = $(this).attr('name'); 
				if(saved[name]) $(this).val(saved[name]); 
			}); 
		}
		
		$(".datepicker", $form).datepicker({
			changeMonth: true,
			changeYear: true,
			dateFormat: 'MM d, yy',
			onSelect: function(dateText, inst) {
				$(this).prev("h4").text(dateText).effect('highlight'); 
			}
		}); 

		$("#date_from_picker")
			.datepicker('setDate', new Date($("#date_from").val()))
			.datepicker('option', 'altField', '#date_from');

		$("#date_to_picker")
			.datepicker('setDate', new Date($("#date_to").val()))
			.datepicker('option', 'altField', '#date_to');

		var d = $("#date_from").val();
		if(d.length > 0) $("#date_from_picker").prev("h4").text(d); 

		d = $("#date_to").val();
		if(d.length > 0) $("#date_to_picker").prev("h4").text(d); 

		$("#rcdform_inquiry").val("save"); 

		$form.submit(function() {

			var errors = '';
			var fields = { ajax: 1 };

			$(":input", $form).each(function() {

				var $t = $(this); 
				var val = $.trim($t.val());
				var name = $t.attr('name');

				fields[name] = val;
				if(!$t.is(".required")) return; 

				if(val.length < 1) errors += "<li>Please enter a value for " + name.replace(/_/, ' ') + "</li>"; 
					else if(name == 'email' && (val.indexOf('@') < 1 || val.indexOf('.') < 1))
						errors += "<li>Please enter a valid email address</li>";
			}); 

			if(errors.length) {
				var $d = $("<ul>" + errors + "</ul>"); 
				$d.dialog({
					title: 'Missing Required Fields',
					modal: true,
					buttons: { "Ok": function() { $(this).dialog("close"); }}
				});
				return false;
			}

			var $div = $form.parent("div"); 
			$div.slideUp("normal", function() {
				$("h3#villa_inquiry").addClass("on"); // fadeOut("fast", function() { $("h3#villa_inquiry").addClass("on").fadeIn("fast"); }); 
				$.post($form.attr('action'), fields, function(data) {
					$div.html(data); 
					$div.slideDown("normal"); 
				}, 'html'); 
			}); 

			$.cookie('villa_inquiry', $.json.encode(fields), villaSite.cookieOptions); 

			return false; 
		}); 


	},

	setupBodyTruncate: function() {
		var $a = $("<a class='more' href='#'>Show More&hellip;</a>").click(function() {
			$(this).fadeOut();
			$(this).parent().next('.truncate').fadeIn();
			return false; 
		}); 
		$("#bodycopy .bodycopy .truncate").hide().prev('p').append('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;').append($a); 
	}
}

$(document).ready(function() {
	villa.init();
}); 

