// YAHOO! utilities shortcuts

var yDom = YAHOO.util.Dom;
var yEvent = YAHOO.util.Event;
var yElement = YAHOO.util.Element;

// store key elements
var propLocations = new yElement('sb-property-filters');

function propReady() {		

	var handleSuccessSubType = function(o) {
		if(o.responseText !== undefined) {
			myInnerDiv = o.responseText;
			filterSubType = yDom.get('filterform-subtype-container');
			filterSubType.innerHTML = myInnerDiv;
		}
	};
	var handleSuccessExtraFilters = function(o) {
		if(o.responseText !== undefined) {
			myInnerDiv = o.responseText;
			filterExtras = yDom.get('filterExtras-container');
			filterExtras.innerHTML = myInnerDiv;
		}
	};
	var callbackSubType = {
  		success:handleSuccessSubType,
  		failure: handleFailure
	};
	var callbackExtraFilters = {
  		success:handleSuccessExtraFilters,
  		failure: handleFailure
	};
	
	// Add Listener for drop down Property Type
	yEvent.addListener('filterform-type', 'change', function(){
		// get selectedIndex value for Property Type
		propType = yDom.get('filterform-type').options[this.selectedIndex].value;
		var requestSubType = YAHOO.util.Connect.asyncRequest('GET', '/property/_ajax/_ajaxGetPropertySubTypes/?propType='+propType, callbackSubType);
		var requestExtraFilters = YAHOO.util.Connect.asyncRequest('GET', '/property/_ajax/_ajaxGetPropertyExtraFilters/?propType='+propType, callbackExtraFilters);
	});

	var handleFailure = function(o) {
		if(o.responseText !== undefined) {
			alert('failed');
		}
	};

	yEvent.addListener('filterform-submit','click', submitForm);
	yEvent.addListener('is_prudential','click', submitForm);
	yEvent.addListener('items_per_page','change', submitForm);
}

function orderList(sortField, sortOrder, pageOffset) {
	submitForm(this, 'compact', sortField, sortOrder, pageOffset);
}

function submitForm(a, viewMode, orderby, orderdirection, myPageOffset) {
	if(viewMode) { myViewMode = viewMode; } else { myViewMode = ''; }
	if(orderby) { myorderby = orderby; } else { myorderby = 'price'; }
	if(orderdirection) { myorderdirection = orderdirection; } else { myorderdirection = 'DESC'; }

	// set default values
	redirectUrl = '/property/agent/Montana/';
	property_location = yDom.get('filterform-feed').value;
	if(yDom.get('filterform-subtype')) {
		property_detailed = yDom.get('filterform-location').value;
	} else {
		property_detailed = 'All-Locations';	
	}
	property_type     = yDom.get('filterform-type').options[document.filterform['filterform-type'].selectedIndex].value;
	if(yDom.get('filterform-subtype')) {
		property_subType  = yDom.get('filterform-subtype').options[document.filterform['filterform-subtype'].selectedIndex].value;
	} else {
		property_subType = 'any';
	}
	property_minprice = yDom.get('filterform-minprice').options[document.filterform['filterform-minprice'].selectedIndex].value;
	property_maxprice = yDom.get('filterform-maxprice').options[document.filterform['filterform-maxprice'].selectedIndex].value;
	if(yDom.get('filterform-footage')) {
		property_footage  = yDom.get('filterform-footage').options[document.filterform['filterform-footage'].selectedIndex].value;
	} else {
		property_footage  = 'All-Squarefoot';
	}
	if(yDom.get('filterform-acres')) {
		property_acres    = yDom.get('filterform-acres').options[document.filterform['filterform-acres'].selectedIndex].value;
	} else {
		property_acres    = 'All-Acre';
	}
	if(yDom.get('filterform-beds')) {
		property_beds     = yDom.get('filterform-beds').options[document.filterform['filterform-beds'].selectedIndex].value;
	} else {
		property_beds     = 'All-Bed';
	}
	if(yDom.get('filterform-baths')) {
		property_bath     = yDom.get('filterform-baths').options[document.filterform['filterform-baths'].selectedIndex].value;
	} else {
		property_bath     = 'All-Bath';
	}
	if(yDom.get('filterform-days')) {
		property_days     = yDom.get('filterform-days').options[document.filterform['filterform-days'].selectedIndex].value;
	} else {
		property_days     = 'All-Days';
	}
	if(yDom.get('items_per_page')) {
		perPage     = yDom.get('items_per_page').options[document.limitform['items_per_page'].selectedIndex].value;
	} else {
		perPage     = '20';
	}

 	var agent_fn = yDom.get('agent_fn').value;
	var agent_ln = yDom.get('agent_ln').value;
	
	if(myPageOffset) {
		pageOffset = myPageOffset;
	} else {
		pageOffset = '0';
	}

	if(yDom.get('is_prudential').checked) {
		property_prudential     = 't';
	} else {
		property_prudential     = '';
	}

	redirectUrl = '/property/agent/Montana/'+property_location+'/'+property_type+'/'+property_minprice+'/'+property_maxprice+'/All-Cities/'+property_footage+'/'+property_acres+'/'+property_beds+'/'+property_bath+'/'+agent_fn+'/'+agent_ln+'/All-Locations/';
	redirectUrl = redirectUrl+pageOffset+'/';

	redirectUrl = redirectUrl+'?subType='+property_subType;
	redirectUrl = redirectUrl+'&perPage='+perPage;
	redirectUrl = redirectUrl+'&daysOnMarket='+property_days;
	redirectUrl = redirectUrl+'&is_prudential='+property_prudential;
	redirectUrl = redirectUrl+'&viewMode='+myViewMode;

	if(myViewMode == 'compact') {
		redirectUrl = redirectUrl+'&sortby='+myorderby+'&sortorder='+myorderdirection;
	}

	// redirect to new url based on form input
	location.href=redirectUrl;
}

propLocations.addListener('contentReady', propReady);
