// The "Property is on watchlist" image
var onlistImg = new Image;
onlistImg.src = '/images/btn_onlist.gif';

// The "Property is off watchlist" image
var offlistImg = new Image;
offlistImg.src = '/images/btn_offlist.gif';

/**
 --	Calls the AJAX method to toggle the property
 **/
function toggleWatchList(mlsNumber) {
	HomeSale.AgentCore.Util.WatchListUtil.ToggleProperty(mlsNumber, toggleWatchList_callback);
}

/**
 -- The callback to handle changing the status image
 **/
function toggleWatchList_callback(response) {
	var status = response.value.split(';')[0];
	var element = $('watchList_' + response.value.split(';')[1]);
	
	if(status == 'onlist')
		new Effect.Fade(element.firstChild, {afterFinish: onlist_callback} );
	else
		new Effect.DropOut(element.firstChild, {afterFinish: offlist_callback} );
	
	new Effect.Appear(element.firstChild, {queue: 'end'} );
}

/**
 -- Effect callbacks
 **/
function onlist_callback(obj) {	
	//setImageFromEffectCallback(obj, onlistImg);
	obj.element.firstChild.src = onlistImg.src;
}
function offlist_callback(obj) {
	setImageFromEffectCallback(obj, offlistImg);
}

/**
 -- Takes an effect callback object and changes the image inside 
 -- (used from parallel effect callbacks)
 **/
function setImageFromEffectCallback(obj, image) {
	for(var i in obj.effects) {
		var element = obj.effects[i]['element']
		if(element != null) {
			obj.effects[i]['element'].firstChild.src = image.src;
			break;
		}
	}
}

/**
 -- Removes the property, but also removes the table row
 **/
function removeFromWatchList(mlsNumber, rowID) {
	HomeSale.AgentCore.Util.WatchListUtil.RemoveProperty(mlsNumber, rowID, removeFromWatchList_callback);
}

/**
 -- The callback to handle property removals on the watch list page
 **/
function removeFromWatchList_callback(response) {
	new Effect.Fade($(response.value));
	
	// If the mapLoad function is defined, call it to reload the watchlist map
	if(mapLoad) mapLoad();
}