var newPropertyImageLarge = new Image();
var carousel;

var handleFormDate = function() {
	var date1 = cal1.getSelectedDates()[0];
    var m = date1.getMonth() + 1;
    var d = date1.getDate();
    var y = date1.getFullYear();
    document.getElementById('vacationStart').value = m + '/' + d + '/' + y;
}

var handlePrevButtonState = function(type, args) {
	var enabling = args[0];
	var leftImage = args[1];
	if(enabling) leftImage.src = "/media/active-left.gif";	
	else leftImage.src = "/media/inactive-left.gif";	
}

var handleNextButtonState = function(type, args) {
	var enabling = args[0];
	var rightImage = args[1];
	if(enabling) rightImage.src = "/media/active-right.gif";
	else rightImage.src = "/media/inactive-right.gif";
}

var handleImageButton = function() {
	this.blur();
	switchImages(this.rel);
	return false;
}

var switchImages = function(number) {
	if (document.getElementById('image-'+number)) {
		newPropertyImageLarge.src = document.getElementById('image-' + number).src.split(/-thumb.gif|-thumb.jpg/)[0] + ".jpg";
		var propertyImageLarge = document.getElementById('property-image');
	
		var tempcount = number;
		++tempcount;
		if (carousel.returnSize() == (tempcount-1)) tempcount = 1;
		document.getElementById('property-next').rel = (tempcount);
	
		tempcount = number;
		--tempcount;
		if (tempcount == 0) tempcount = carousel.returnSize();
		document.getElementById('property-previous').rel = (tempcount);
	
		var animOne = new YAHOO.util.Anim(propertyImageLarge, { opacity: { to: 0 } }, 0.8, YAHOO.util.Easing.easeOut);
		animOne.onComplete.subscribe(fadeIn);
		animOne.animate();
		var newImageCaption = document.getElementById('dhtml-carousel-item-' + number).innerHTML.split(">")[2];
		//document.getElementById('property-caption').innerHTML = newImageCaption;
		return false;
	}
}

var fadeIn = function() {
	document.getElementById("property-img").src = newPropertyImageLarge.src;
	var propertyImageLarge = document.getElementById('property-image');
	var animTwo = new YAHOO.util.Anim(propertyImageLarge, { opacity: { to: 1 } }, 0.8, YAHOO.util.Easing.easeOut);
	animTwo.animate();
}

var toggleForm = function(e) {
	if (e) YAHOO.util.Event.stopEvent(e);
	var formDiv = document.getElementById('request-availability');
	var formLink = document.getElementById('request-availability-link');
	formLink.blur();
	if (formDiv.style.height != "250px") {
		YAHOO.util.Dom.addClass(formLink, 'active');
		var formAnim = new YAHOO.util.Anim(formDiv, { height: {to: 250}, opacity: { from: 0, to: 0.8 } }, 0.5, YAHOO.util.Easing.backOut);
		formAnim.onComplete.subscribe(displayForm);
		formAnim.animate();
	}
	else {
		YAHOO.util.Dom.removeClass(formLink, 'active');
		var formAnim = new YAHOO.util.Anim(formDiv, { height: {to: 0}, opacity: { to: 0 } }, 0.5, YAHOO.util.Easing.easeOut);
		hideForm();
		formAnim.animate();
	}
}

var requestAvailability = function(e) {
	var formDiv = document.getElementById('request-availability');
	var formAnim = new YAHOO.util.Anim(formDiv, { height: {to: 250}, opacity: { from: 0, to: 0.8 } }, 0.5, YAHOO.util.Easing.backOut);
	formAnim.onComplete.subscribe(displayForm);
	formAnim.animate();
}

var submitForm = function() {
	var formItself = document.getElementById('availability-form');
	formItself.submit();
}

var displayForm = function() {
	var formItself = document.getElementById('availability-form');
	//Thanks IE for all the code below. Really appriciate doing this the incredibly hard way to force hasLayout.
	var ieCopy = document.getElementById('availability-form').innerHTML;
	document.getElementById('availability-form').innerHTML = "";
	formItself.style.display = "block";
	document.getElementById('availability-form').innerHTML = ieCopy;
	formItself.style.height = "300px";
}

var hideForm = function() {
	var formItself = document.getElementById('availability-form');
	formItself.style.display = "none";
}

var pageLoad = function() 
{
	var objectCount = YAHOO.util.Dom.getElementsByClassName("property-image-link").length;
	carousel = new YAHOO.extension.Carousel("dhtml-carousel", 
		{
			numVisible:        5,
			animationSpeed:   .5,
			scrollInc:         3,
			navMargin:         40,
			prevElementID:     "prev-arrow",
			nextElementID:     "next-arrow",
			size:              objectCount,
			wrap:			   true,
			prevButtonStateHandler:   handlePrevButtonState,
			nextButtonStateHandler:   handleNextButtonState
		}
	);
	document.getElementById('property-next').rel = (carousel.returnSize() > 1) ? 2 : 1;
	document.getElementById('property-previous').rel = carousel.returnSize();
	if (carousel.numVisible >= objectCount) carousel.disableNext();
	YAHOO.util.Event.addListener('request-availability-link', 'click', toggleForm);
	// YAHOO.util.Event.addListener('closeRequest', 'click', toggleForm);
	// 	YAHOO.util.Event.addListener('submitter', 'click', submitForm);
	YAHOO.util.Event.addListener('property-next', 'click', handleImageButton);
	YAHOO.util.Event.addListener('property-previous', 'click', handleImageButton);
	if (document.location.href.search(/available/) != -1) toggleForm();
	var links = document.getElementsByTagName('a');
	for (var i = 0; i < links.length; i++) {
		if (links[i].rel == 'external') links[i].target = "_blank";
	}
}

YAHOO.util.Event.addListener(window, 'load', pageLoad);