<!--

var cd=false;
var cg=false;
var saved_prefix;

// If the city isn't filled in yet
function onLoad()
{
	// All pages with forms have a MoveFromCity field
	if(!document.getElementById("MoveFromCity"))
		return;

	if(!document.getElementById("MoveFromCity").value)
	{
		document.getElementById("MoveFromCity").value = "City";
	}
	if(!document.getElementById("MoveToCity").value)
	{
		document.getElementById("MoveToCity").value = "City";
	}

	// Need to do what we normally do when the province is changed, so that any
	// province coming from a previous page is handled (city field enabled, etc.)
	province_change("From", false);
	province_change("To", false);
	moving_change(false);

	// If we come back to a page that's been submitted, the submit button may still be disabled
	document.getElementById("continue").disabled = false;

	// Set the input focus to the from city input
	var city = document.getElementById("MoveFromCity");
	if (city && city.disabled == false)
		city.focus();
}

function loadXML(url,func,parm)
{
	if(!func)
	{
		var func = "processXML";
	}
	if(window.XMLHttpRequest)
	{
		var obj = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		var obj = new ActiveXObject('Msxml2.XMLHTTP');
	}
	eval("req" + func + "= obj");

	if(obj)
	{
		saved_prefix = parm;
		obj.onreadystatechange = eval(func);
		try
		{
			obj.open("GET",url,true);
			obj.setRequestHeader("Cache-Control","no-cache");
			obj.setRequestHeader("Pragma", "no-cache");
		}
		catch(e)
		{
		}
		obj.send("");
	}
}

function getCity(prefix)
{
	var field = "Move" + prefix + "City";
	var city = document.getElementById("Move" + prefix + "City").value;
	if(city.length < 2 || city == "City")
	{
		var ddown = document.getElementById('ddown');
		ddown.style.display = "none";
		return;
	}
	var province = document.getElementById("Move" + prefix + "Province")[document.getElementById("Move" + prefix + "Province").selectedIndex].value;
	if(province != "Select")
	{
		loadXML("/cities?city=" + city + "&province=" + province, "cities", prefix);
	}
}

function cities()
{
	var prefix = saved_prefix;

	var ddown = document.getElementById('ddown');

	ddown.innerHTML = "<div id='wmsg'>PLEASE WAIT...</div>";
	ddown.style.left = findPosX(document.getElementById("Move" + prefix + "City")) + 150 + "px";
	ddown.style.top = findPosY(document.getElementById("Move" + prefix + "City")) + "px";
	ddown.style.display = "block";

	if(reqcities.readyState==4)
	{
		if(reqcities.status==200)
		{
			var match = reqcities.responseXML.getElementsByTagName('match');
			if (match.length)
			{
				remhelpMsg(document.getElementById("Move" + prefix + "City"));
				cg=false;
				ddown.style.display = "none";
				return;
			}

			var cities = reqcities.responseXML.getElementsByTagName('city_name').length;

			ddown.style.border = "1px solid #000";
			ddown.style.backgroundColor = "#fff";
			ddown.style.height = "100px";
			if(cities < 1 || !cities)
			{
				ddown.innerHTML = "<div id='wmsg'>INVALID CITY NAME. PLEASE TRY AGAIN.</div>";
				ddown.style.border = "none";
				ddown.style.overFlow = "none";
				ddown.style.backgroundColor = "";
			}
			else
			{
				ddown.innerHTML = "<div id='wmsg'>DID YOU MEAN?</div>";
			}

			for(i=0;i<cities;i++)
			{
				var c = reqcities.responseXML.getElementsByTagName('city_name')[i].firstChild.nodeValue;
				var div = document.createElement('div');
				div.id = c;
				div.onclick = function()
				{
					var city = document.getElementById("Move" + prefix + "City");
					city.value = this.id;
					city.focus();
					ddown.innerHTML = "";
					ddown.style.display = "none";
					remhelpMsg(city);
				}
				div.style.cursor = "pointer";
				div.onmouseover = function()
				{
					this.style.backgroundColor = "#eee";
				}
				div.onmouseout = function()
				{
					this.style.backgroundColor = "#fff";
				}
				div.innerHTML = c;
				ddown.appendChild(div);
			}
			helpMsg(document.getElementById("Move" + prefix + "City"));
		}
		else
		{
			alert('Bad response code ' + reqcities.status);
			ddown.style.display = "none";
		}
	}
}

function cdown(prefix)
{
	if(!cd)
	{
		cd = setTimeout("getCity('" + prefix + "')",500);
	}
}

function city_property(prefix)
{
	// In IE, this is fired for the background colour changes we cause, so it
	// keeps going and going!  Hence, we want to make sure it's only triggered
	// by value changes.  Not all browsers have the window.event, so we check
	// for that too.
	if (!window.event || window.event.propertyName == "value")
	{
		city_key(prefix);
	}
}

function city_key(prefix)
{
	try
	{
		clearTimeout(cd);
		cd = false;
	}
	catch(e)
	{
	}
	cdown(prefix);
}

var key_is_down = false;

function province_keydown()
{
	key_is_down = true;
}

function province_keyup(prefix)
{
	province_change(prefix, false);
	key_is_down = false;
}

function province_blur()
{
	key_is_down = false;
}

function province_change(prefix, focus)
{
	var obj = document.getElementById("Move" + prefix + "Province");

	// Not all forms have all elements
	if (obj)
	{
		var province = obj[obj.selectedIndex].innerHTML;

		var city = document.getElementById("Move" + prefix + "City");
		if(province == "Select")
		{
			city.disabled = true;
			remhelpMsg(city);
		}
		else
		{
			city.disabled = false;
			if ( focus && !key_is_down )
			{
				city.focus();
				getCity(prefix);
			}
		}
	}
}

function moving_keydown()
{
	key_is_down = true;
}

function moving_keyup()
{
	moving_change(false);
	key_is_down = false;
}

function moving_blur()
{
	key_is_down = false;
}

function moving_change(focus)
{
	var obj = document.getElementById("MoveDirection");

	// Not all forms have all elements
	if (obj)
	{
		var from = obj[obj.selectedIndex].text;

		var can_label = document.getElementById('label_FromProvince');
		var int_label = document.getElementById('label_ToCity');
		if(from == "from Canada")
		{
			can_label.innerHTML = "From Province:";
			int_label.innerHTML = "To City and State/Province:";
		}
		else if(from == "to Canada")
		{
			can_label.innerHTML = "To Province:";
			int_label.innerHTML = "From City and State/Province:";
		}
		else
		{
			can_label.innerHTML = "Province:";
			int_label.innerHTML = "City and State/Province:";
		}
	}
}

function city_focus(prefix)
{
	var city = document.getElementById("Move" + prefix + "City");
	if(city.value == "City")
	{
		city.value = "";
	}
}

//from http://www.quirksmode.org/js/findpos.html
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function helpMsg(el)
{
	el.style.textDecoration = "underline";
	el.style.color = "#d00";
	el.style.backgroundColor = "#0d0";
	blink(el.id,30,"#FF0000","#FFFFFF");
}

function remhelpMsg(el)
{
	el.style.textDecoration = "none";
	el.style.color = "#000";
	document.getElementById('ddown').style.display = "none";
}

function blink(id,reps,b1,b2)
{
	if(!b1)
		var b1 = "#fc0";
	if(!b2)
		var b2 = "#eee";

	if(reps%2==0)
	{
		//when the rep is even we colour the border
		document.getElementById(id).style.backgroundColor = b1;
	}
	else
	{
		//when the rep is odd we uncolour the border
		document.getElementById(id).style.backgroundColor = b2;
	}

	reps--;
	if(reps>0)
	{
		bl = setTimeout("blink('" + id + "'," + reps + ",'" + b1 + "','" + b2 + "')",50);
	}
	else
	{
		bl = false;
	}
}

//-->
