
//jQuery page load
$(function() {
		   
	//init the datepicker objects on the arrival and departure date textboxes
	$( "#arrivaldate" ).datepicker();
	$( "#departuredate" ).datepicker();
	
	//add handlers to the calendar images
	$("#imgarrivalcal").click( function() { 
		if( $('#ui-datepicker-div').is(':hidden') ) {
			$( "#arrivaldate" ).focus();
		}
	});
	
	$("#imgdeparturecal").click( function() { 
		if( $('#ui-datepicker-div').is(':hidden') ) {
			$( "#departuredate" ).focus();
		}
	});
	
	//set arrival and departure date default values
	try {
		$('#arrivaldate').val(getDefaultArrivalDate( 7 ));
		$("#arrivaldate").blur( setDeparture );
		setDeparture();
	} catch (e) { }
	
	$("#frmSearch").submit( function() { return setSearchFormFields(); } );
	
	//search page
	$(".menu_link_home").text("Listings");
	
	//featured property
	doFeatured();
	
	//flash anim border
	$("div[id*=v3flashslideshow]").attr("class", "illus xmlflash");
	
	//terms and conditions window
	$("#lnkTerms").click( function () {
		window.open('terms-and-conditions.php','npu','height=600,width=790,screenX=100,screenY=100,left=100,top=25,scrollbars=yes,resizable=yes,menubar=no,location=no');
		return false;						
	});
	

});


function setSearchFormFields () {
	
	try {
		
		var arrdate = $("#arrivaldate").val().split("/");
		var depdate = $("#departuredate").val().split("/");
		var numrooms = $("#numbedrooms").val();
		
		//set hidden fields
		$("#from_month").val( arrdate[0] );
		$("#from_day").val( arrdate[1] );
		$("#from_year").val( arrdate[2] );
		
		$("#to_month").val( depdate[0] );
		$("#to_day").val( depdate[1] );
		$("#to_year").val( depdate[2] );
		
		$("#bedrooms_from").val ( numrooms );
		//$("#bedrooms_to").val ( numrooms );
	
		return true;
		
	} catch (e ) { alert("Please enter all form information in correct format."); return false; }
}


function swapCals( caltoshow, caltohide ) {
	$("#"+caltohide)[0].style.display = "none";
	$("#"+caltoshow)[0].style.display = "block";
}

function getDefaultArrivalDate( numdaysout ) {
	var today = FormatDate(new Date());
	return getADate( numdaysout, today );
}

function setDeparture() {
	setNextDate($("#arrivaldate")[0],  $("#departuredate")[0]);
}


//date format function, pass date string
function FormatDate(date) {

	//month array
	var mon = new Array(12);
	mon[0]="Jan"; mon[1]="Feb"; mon[2]="Mar"; mon[3]="Apr"; mon[4]="May"; mon[5]="Jun"; 
	mon[6]="Jul"; mon[7]="Aug"; mon[8]="Sep"; mon[9]="Oct"; mon[10]="Nov"; mon[11]="Dec";

	//parse date
	var month = date.getMonth(); 
	month=String(month+1); 
	month = month.length === 1 ? "0" + month : month;
	
	var year = date.getFullYear();
	
	var day = String(date.getDate());
	day = day.length === 1 ? "0" + day : day;

	return month + "/" + day + "/" + year;
}

//takes a number (of days) and a date string "mm/dd/yyyy"
//returns a date string in the same format + the number of days specified.
//if nothing is passed, returns a date string for today's date.
function getADate(numDays, startDate)
{
	numDays = numDays ? numDays : 0;
	var firstDate = startDate ? new Date(startDate) : new Date();
	if(isNaN(firstDate)) return ""; //bad date format
	firstDate.setUTCDate(firstDate.getUTCDate() + numDays);
	  
	var mo = firstDate.getMonth()+1;
	mo = mo.toString().length == 1 ? "0" + mo : mo;
	var day = firstDate.getDate();
	day = day.toString().length == 1 ? "0" + day : day;
	var yr = firstDate.getFullYear();
	yr = yr.toString(); 
	
	return mo+"/"+day+"/"+yr;
}
//setNextDate takes two text boxes and reads the date in the first one. 
//if it is greater than the date in the second, it sets the value of the second to 7 days later.
function setNextDate(txt1, txt2)
{
	if(!txt1.value) return;
	
	var date1 = new Date(txt1.value);
	if(isNaN(date1)) return; //return if date1 is bad
	
	var date2 = new Date(txt2.value);
	if(isNaN(date2) && txt2.value != "") { date2 = new Date( txt1.value ); } // new date if bad date proceed if no date or good date
	
	var bChangeDate = date1 >= date2; 
	
	//if txt2 is blank OR less than txt1.value
	if(!txt2.value || bChangeDate) txt2.value = getADate(7, txt1.value); 
}

//TOP MENU 

var timeout    = 500;
var closetimer = 0;
var ddmenuitem = 0;
var bDropdownOpen = false;

function jsddm_open() {  
	jsddm_canceltimer();
   	if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');
   	ddmenuitem = $(this).find('ul').css('visibility', 'visible');
	bDropdownOpen = true;
}

function jsddm_close() {  
	if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');
	//$("#menu").attr("class", defaultMenuClass); //set menu back to default class
}

function jsddm_timer()	{  
	closetimer = window.setTimeout(jsddm_close, timeout);
		bDropdownOpen = false;
}

function jsddm_canceltimer() {  
	if(closetimer) {  
		window.clearTimeout(closetimer);
      	closetimer = null;
	}
}

$(document).ready(function()
{  $('#jsddm > li').bind('mouseover', jsddm_open)
   $('#jsddm > li').bind('mouseout',  jsddm_timer)});

document.onclick = jsddm_close;

//END TOP MENU

//import and set the featured property
function doFeatured() {
	try { 
		var loadArg = "properties/preview_featured.php .property-container-featured";
		$("#featuredhtm").load(loadArg , showFeaturedProperty ); 
	} catch (e) { }
}

function showFeaturedProperty() {
	var arrProps = $(".property-body-inset");
	
	var htm;
	
	var ind = getRand(arrProps.length);
	arrProps[ind].innerHTML = arrProps[ind].innerHTML.replace("/small/", "/medium/");
	$("#featuredproperty").html(arrProps[ind].innerHTML);
	var labels = $("#featuredproperty p label");
	var villadesctext = $("#featuredproperty h2 a").text() + ", a " + labels[0].innerHTML + " bedroom, " + labels[1].innerHTML + " bathroom property, ";
	$("#villaname").html(villadesctext);
}

//get a random number between 0 and x
function getRand(len)
{
	return Math.floor(Math.random()*len);
}
