var template_url = "/servlet/Page/document/v5/templates"

function getCity(e){
	var c = d.getElementById("City").value;
	if(c.length==0) { alert("Please enter a city name before submitting the search."); d.getElementById("City").focus(); return false; }
	else if(3>c.length) { alert("The city name is too short, try another."); d.getElementById("City").value = ""; d.getElementById("City").focus(); return false; } 
	callWeather(c,e.type);
	return false;
}

function changeCity(){
	var tbodyObj = d.getElementById("weatherCities");
	d.getElementById("weatherOption").style.display = "none";
	d.getElementById("weatherChooser").style.display = "block";
	c = getCookie("TGAM-weather");
	d.getElementById("City").value = (c!=null) ? unescape(c) : "";
	deleteCookie("TGAM-weather");
	return false;
}

function loadCity(){
	if(getCookie("homeTown")!=null) {
		c = getCookie("homeTown");
		deleteCookie("homeTown");
		setCookie("TGAM-weather",c);
	}
	c = getCookie("TGAM-weather");
	if(c!=null) { 
		setCookie("TGAM-weather",c);
		callWeather(c);
	} else {
		d.getElementById("weatherOption").style.display = "none";
	}
}

function checkCity(c){
	var wD;
	c = unescape(c);
	
	if(c.search(/montreal/i)!=-1) { return "Montréal"; }
	else if(c.search(/gaspe/i)!=-1) { return "Gaspé"; }
	else if(c.search(/happy\svalley/i)!=-1 || c.search(/goose\sbay/i)!=-1) { return "Happy Valley Goose Bay Labr"; }
	else if(c.search(/labrador/i)!=-1 || c.search(/wabush/i)!=-1) { return "Labrador City Wabush Labr"; }
	else if(c.search(/riviere/i)!=-1 && c.search(/loup/i)!=-1) { return "Rivière-du-Loup"; }
	else if(c.search(/sept/i)!=-1 && c.search(/iles/i)!=-1) { return "Sept-Îles"; }
	else if(c.search(/st/i)!=-1 && c.search(/jerome/i)!=-1) { return "St-Jérôme"; }
	else if(c.search(/trois/i)!=-1 && c.search(/riviere/i)!=-1) { return "Trois-Rivières"; }
		
	c = c.toLowerCase();
	if(c.search(/[\s]/g)!=-1){ 
		wD = " ";
	} else if(c.search(/[-]/g)!=-1){ 
		wD = "-";
	}
	var words = c.split(wD);
	var word = new Array();
	for(x=0;x<words.length;x++){ 
		word[x] = words[x].charAt(0).toUpperCase() + words[x].substring(1,words[x].length).toLowerCase(); 
	}
	c = word.join(wD);
	
	if(
		(c.search(/cap/i)!=-1 && c.search(/chat/i)!=-1) ||
		(c.search(/iles/i)!=-1 && c.search(/madeleine/i)!=-1) ||
		(c.search(/jovite/i)!=-1) ||
		(c.search(/st/i)!=-1 && c.search(/richelieu/i)!=-1) ||
		(c.search(/st/i)!=-1 && c.search(/hubert/i)!=-1) ||
		(c.search(/port/i)!=-1 && c.search(/prince/i)!=-1) ||
		(c.search(/hyacinthe/i)!=-1)
	) { c = c.replace(new RegExp(" ","g"),"-"); }
	return c;
}
		
function callWeather(c,eT){		
	c = (c.indexOf("%3C!--")==-1) ? escape(checkCity(c)) : c;
	d.getElementById("City").value = c;
	setCookie("TGAM-weather", c);

	var xmlhttp = false;
	if(window.XMLHttpRequest){
		xmlhttp = new XMLHttpRequest();
	}	else if(window.ActiveXObject){
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	xmlhttp.open("GET", template_url+"/weather/watcher?City="+c,true);
	
	xmlhttp.onreadystatechange=function() {
		if(xmlhttp.readyState==4){
			temperature = xmlhttp.responseText.split(",");
			if(eT=="submit" && temperature.length<7) {
				deleteCookie("TGAM-weather");
				location.href = template_url+"/hub?hub=Weather\u0026Change=1"; 
				return;
			} else { 
				createCityRows(temperature,c); 
			}
		} 
	} 
	
	xmlhttp.send("o");

	d.getElementById("weatherOption").style.display = "";
	d.getElementById("weatherChooser").style.display = "none";
	d.getElementById("weatherWarning").style.display = "none";
}

function createCityRows(temperature,c){
	if(d.getElementById("weatherWatched")) { d.getElementById("weatherWatched").parentNode.removeChild(d.getElementById("weatherWatched")); }
	var tbodyObj = createElement("tbody","weatherWatched");
	var	trObj = createElement("tr");
	
	if(temperature.length<7){ 
		tdObj = createElement("td","","weatherCity");
		tdObj.colSpan = 4;	 	
		c = (navigator.userAgent.indexOf("Safari")==-1) ? unescape(c) : c;
		tdObj.appendChild(d.createTextNode("No weather information currently available for "+c));
		trObj.appendChild(tdObj);
		tbodyObj.appendChild(trObj);
		return; 
	}

	for(x=0;temperature.length>x;x++){

		var str=temperature[x];
		var re = /(\\x[0-9A-F]{2}|[A-F0-9]{2})/g;
		if(str.match(re)) { 
			if(str.indexOf("xE8")!=-1) { str = str.replace(/\\xE8/g,"\u00E8"); }
			if(str.indexOf("xE9")!=-1) { str = str.replace(/\\xE9/g,"\u00E9"); }
			if(str.indexOf("xCE")!=-1) { str = str.replace(/\\xCE/g,"\u00CE"); }
			if(str.indexOf("xF4")!=-1) { str = str.replace(/\\xF4/g,"\u00F4"); }
		}
		var cityname = (str.indexOf("<!--")!=-1) ? str.split("<!--")[0] : str;

	
		switch(x){
			case 0:
				tdObj = createElement("td","","weatherImage","","",25);
				tdObj.rowSpan = 2;
				imgObj = createElement("img","","weatherImage","/v5/images/weather/small/i"+temperature[x]+".gif","",25,20);
				tdObj.appendChild(imgObj);
				trObj.appendChild(tdObj);
				break;
			case 1:
				tr2Obj = createElement("tr");
				tdObj = createElement("td","","weatherCity");
				thObj = createElement("th","","weatherCity");
				aObj = createElement("a","","",template_url+"/hub?hub=Weather\u0026City="+str,"","","","View the extended forecast for "+cityname+", "+temperature[4]);
				aObj.appendChild(d.createTextNode(cityname));
				if(temperature[4]=="Canada" || temperature[4]=="U.S.A.") {
					tdObj.className = "weatherConditions";
					tdObj.appendChild(d.createTextNode(temperature[5]));
					tdObj.title = temperature[6];
					imgObj.alt = "Icon indicating "+temperature[5].toLowerCase();
				} else {
					tdObj.className = "weatherConditions";
					tdObj.appendChild(d.createTextNode(temperature[6]));
					tdObj.title = temperature[3]+"\u00B0C";
					imgObj.alt = "Icon of forecasted weather";
				}
				thObj.appendChild(aObj);
				trObj.appendChild(thObj);
				tr2Obj.appendChild(tdObj);
				break;
			case 2:
				tdObj = createElement("td","","weatherCurrent");
				tdObj.rowSpan = 2;
				tdObj.appendChild(d.createTextNode(temperature[2]));
				spanObj = createElement("span","","","","","","","Celsius","","");
				spanObj.appendChild(d.createTextNode("\u00B0"));
				if(temperature[4]=="Canada" || temperature[4]=="U.S.A.") { 
					tdObj.title = (temperature[3]!="Current temperature") ? temperature[3]+"\u00B0C" : temperature[3];
				} else {
					tdObj.title = temperature[6];
				}
				tdObj.appendChild(spanObj);
				trObj.appendChild(tdObj);
				break;
		}
	}		
	tbodyObj.appendChild(trObj);
	tbodyObj.appendChild(tr2Obj);
	d.getElementById("weatherOption").appendChild(tbodyObj);
}

if(d.getElementById("weatherChooser") || d.getElementById("weatherChg")){
	loadCity(); 
	addEvent(d.getElementById("weatherChg"),"click",changeCity);
	addEvent(d.getElementById("weatherChooser"),"submit",getCity);
} 
