
function InitDragDrop()
{
	document.onmousedown = OnMouseDown;
	document.onmouseup = OnMouseUp;
	_debug = $('debug');
}

function OnMouseDown(e)
{
	// IE is retarded and doesn't pass the event object
	if (e == null)
		e = window.event;
	// IE uses srcElement, others use target
	var target = e.target != null ? e.target : e.srcElement;
	if(_debug)
		_debug.innerHTML = target.className == 'drag' ? 'draggable element clicked' : 'NON-draggable element clicked';
	
	// for IE, left click == 1 // for Firefox, left click == 0
	if ((e.button == 1 && window.event != null || e.button == 0) && target.className == 'drag')
	{
		// grab the mouse position
		_startX = e.clientX;
		_startY = e.clientY;
		// grab the clicked element's position
		//_offsetX = ExtractNumber(target.style.left);
		_offsetX=target.offsetLeft;
		_offsetY = ExtractNumber(target.style.top);
		// bring the clicked element to the front while it is being dragged
		_oldZIndex = target.style.zIndex;
		target.style.zIndex = 10000;
		// we need to access the element in OnMouseMove
		_dragElement = target;
		// tell our code to start moving the element with the mouse
		document.onmousemove = OnMouseMove;
		// cancel out any text selections
		document.body.focus();
		// prevent text selection in IE
		document.onselectstart = function () { return false; };
		// prevent IE from trying to drag an image
		target.ondragstart = function() { return false; };
		// prevent text selection (except IE)
		return false;
	}
}

var searchInterval=null;

function OnMouseMove(e)
{
	if (e == null)
		var e = window.event;
	// this is the actual "drag code"
	var value=Math.max(0,Math.min(200,(_offsetX + e.clientX - _startX)));
	_dragElement.style.left = value + 'px';
	//_dragElement.style.top = (_offsetY + e.clientY - _startY) + 'px';
	if(_debug)
		_debug.innerHTML = '(' + _dragElement.style.left + ', ' + _dragElement.style.top + ')';
	if(_dragElement.id=="sliderHead")
	{
		if(value==0 || value==200)
		{
			_dragElement.innerHTML="Any Price";
		}
		else
		{
			var dollar_value=value*15000+100000;
			var gradient=Math.pow(value/4,2)*200+20000;
			var dollar_value2=dollar_value-gradient;
			if(dollar_value >= 1000000)
			{
				dollar_value/=1000000;
				dollar_value2/=1000000;
				var dstr="$"+dollar_value.toFixed(1)+"M";
				var dstr2="$"+dollar_value2.toFixed(1)+"M";
			}
			else
			{
				dollar_value/=1000;
				dollar_value2/=1000;
				var dstr="$"+dollar_value.toFixed(0)+"K";
				var dstr2="$"+dollar_value2.toFixed(0)+"K";
			}
			/*var dstr="$"+dollar_value;
			var dstr2="$"+dollar_value2;*/
			_dragElement.innerHTML=dstr2+"-"+dstr;
		}
		document.getElementById("search_price").value=value;
	}
	else if(_dragElement.id=="sliderHeadArea")
	{
		if(value==0 || value==200)
		{
			_dragElement.innerHTML="Any";
		}
		else
		{
			var sqft=value*40;
			var gradient=Math.pow(value/4,2)*1+50;
			var sqft_max=sqft+gradient;
			var dstr= sqft.toFixed(0);
			var dstr2=sqft_max.toFixed(0);
			_dragElement.innerHTML=dstr+"-"+dstr2+"";
		}
		document.getElementById("search_sqft").value=value;
	}
	clearInterval(searchInterval);
	searchInterval=setInterval("initiateSearch()",1000);
}

function initiateSearch()
{
	clearInterval(searchInterval);
	showRealtimeResults();
}

function OnMouseUp(e)
{
	if (_dragElement != null)
	{
		_dragElement.style.zIndex = _oldZIndex;
		// we're done with these events until the next OnMouseDown
		document.onmousemove = null;
		document.onselectstart = null;
		_dragElement.ondragstart = null;
		// this is how we know we're not dragging
		_dragElement = null;
		if(_debug)
			_debug.innerHTML = 'mouse up';
	}
}

function ExtractNumber(value)
{
	var n = parseInt(value);
	return n == null || isNaN(n) ? 0 : n;
}

/*
// this is simply a shortcut for the eyes and fingers
function $(id)
{
	return document.getElementById(id);
}
*/

var _startX = 0; // mouse starting positions
var _startY = 0;
var _offsetX = 0; // current element offset
var _offsetY = 0;
var _dragElement; // needs to be passed from OnMouseDown to OnMouseMove
var _oldZIndex = 0; // we temporarily increase the z-index during drag
var _debug; // makes life easier

