﻿var setCity = false;

var _xmlHttp = false;

function createHttpRequest() {
	_xmlHttp = false;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	try {
		_xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e) {
		try {
			_xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (e2) {
			_xmlHttp = false;
		}
	}
	@end @*/

	if (!_xmlHttp && typeof XMLHttpRequest != 'undefined') {
		_xmlHttp = new XMLHttpRequest();
	}
}

function SelectCity(region, set){
	setCity = set;
	GetWeatherCities(region);
}

function GetWeatherRegions(){
	// create XMLHttpRequest object to send search query
	createHttpRequest();
	
	// create url to lookup weather regions
	var t = new Date().getTime();
	var url = "/scripts/Weather.aspx?item=regions&t=" + t;
	
	// send ajax request
	_xmlHttp.open("GET", url, true);
	_xmlHttp.onreadystatechange = ShowWeatherRegions;
	_xmlHttp.send(null);
}

function GetWeatherCities(region){
	  // create XMLHttpRequest object to send search query
    createHttpRequest();

    // create url to lookup weather cities
	var t = (new Date).getTime();
	var url = "/scripts/Weather.aspx?item=cities&rg=" + region + "&t=" + t;
	_xmlHttp.open("GET", url, true);
	_xmlHttp.onreadystatechange = ShowWeatherCities;
	_xmlHttp.send(null);
}

function ShowWeatherCities()
{
	
    if (_xmlHttp.readyState == 4) {

		if (document.implementation && document.implementation.createDocument)
		{
				xmlDoc = _xmlHttp.responseXML; // !IE
		}
		else if (window.ActiveXObject)
		{
			// IE only
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.loadXML(_xmlHttp.responseText);
		}
    
		var cities= xmlDoc.getElementsByTagName("item");
		var dd = document.getElementById("dlstWeatherCities");
		
		//clear city drop down
		for (var j = dd.length - 1; j >= 0; j--) {
			dd.remove(j);
		}
		
		for( i = 0; i < cities.length ; i++)
		{
			var city_value = "";
			for(x = 0; x < cities[i].childNodes.length; x ++)
			{
				if(cities[i].childNodes[x].nodeName == "city")
					city_value = cities[i].childNodes[x].firstChild.data;
			}

			var newElem = document.createElement("option");

			try
			{
				dd.add(newElem); // IE only
				newElem.innerText = city_value;
				newElem.value = city_value.toLowerCase();
			}
			catch(ex)
			{
				dd.add(newElem, null); // !IE
				newElem.text = city_value;
				newElem.value = city_value.toLowerCase();
			}
		}
		
		if(setCity)
		{
			city = GetSelectedCity();
			if(city)
			{
				var r = new RegExp("\\\+", 'g');
				city = city.replace(r," ");
				dd.value = city;
			}
			else
				dd.selectedIndex = 0;

			ShowWeatherLabel();
		} else
			dd.selectedIndex = 0;
	}
}

function ShowWeatherRegions() {

    if (_xmlHttp.readyState == 4) {

		if (document.implementation && document.implementation.createDocument)
		{
			xmlDoc = _xmlHttp.responseXML;
		}
		else if (window.ActiveXObject)
		{
			 xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.loadXML(_xmlHttp.responseText);
		}

		var regions = xmlDoc.getElementsByTagName("item");
		var dd = document.getElementById("dlstWeatherRegion");
		
		for( i = 0; i < regions.length ; i++)
		{
			var region_text = "";
			var region_value = "";
			for(x = 0; x < regions[i].childNodes.length; x ++)
			{
				if(regions[i].childNodes[x].nodeName == "region")
					region_value = regions[i].childNodes[x].firstChild.data;
				else if(regions[i].childNodes[x].nodeName == "name")
					region_text = regions[i].childNodes[x].firstChild.data;
			}
			
			var newElem = document.createElement("option");
			
			try
			{
				dd.add(newElem); // IE only
				newElem.innerText = region_text;
				newElem.value = region_value.toLowerCase();
			}
			catch(ex)
			{
				dd.add(newElem, null); // !IE
				newElem.text = region_text;
				newElem.value = region_value.toLowerCase();
			}
		}
		dd.value = GetSelectedRegion();
		SelectCity(dd.value, true);
		
	}
}

function GetSelectedRegion(){
	var q = queryString("rg");
	if(q != "false")
		return q.toLowerCase();
	else
		return "on";
}

function GetSelectedCity(){
	var q = queryString("city");
	if(q != "false")
		return q.toLowerCase();
	else if (document.getElementById("dlstWeatherRegion").value ==  "on")
		return "toronto";
	else
		return null;
}

function ShowWeatherLabel(){
	var lbl = document.getElementById("lblCity");
	var ddCity = document.getElementById("dlstWeatherCities");
	var ddRegion = document.getElementById("dlstWeatherRegion");
	
	lbl.innerHTML = ddCity.options[ddCity.selectedIndex].text + ", " + ddRegion.options[ddRegion.selectedIndex].text;

}

function PageQuery(q){
	
	if(q.length > 1)
			this.q = q.substring(1, q.length);
	else 
			this.q = null;

	this.keyValuePairs = new Array();

	if(q) {
		for(var i=0; i < this.q.split("&").length; i++) {
			this.keyValuePairs[i] = this.q.split("&")[i];
		}
	}

	this.getKeyValuePairs = function() { return this.keyValuePairs; }

	this.getValue = function(s) {
		for(var j=0; j < this.keyValuePairs.length; j++) {
			if(this.keyValuePairs[j].split("=")[0] == s)
			return this.keyValuePairs[j].split("=")[1];
		}

		return false;
	}
	
	this.getParameters = function() {
			var a = new Array(this.getLength());
			for(var j=0; j < this.keyValuePairs.length; j++) {
						a[j] = this.keyValuePairs[j].split("=")[0];
			}
			return a;
		}
	
	this.getLength = function() { return this.keyValuePairs.length; }
}

function queryString(key){
	var querystring = new PageQuery(window.location.search);
	return unescape(querystring.getValue(key)); 
}
