xWeather = {
	folder: "/tempo/data/forecast/",
	maincities: {
		ac: 'riobranco',
		al: 'maceio',
		am: 'manaus',
		ap: 'macapa',
		ba: 'salvador',
		ce: 'fortaleza',
		df: 'brasilia',
		es: 'vitoria',
		go: 'goiania',
		ma: 'saoluis',
		mg: 'belohorizonte',
		ms: 'campogrande',
		mt: 'cuiaba',
		pa: 'belem',
		pb: 'joaopessoa',
		pe: 'recife',
		pi: 'teresina',
		pr: 'curitiba',
		rj: 'riodejaneiro',
		rn: 'natal',
		ro: 'portovelho',
		rr: 'boavista',
		rs: 'portoalegre',
		sc: 'florianopolis',
		se: 'aracaju',
		sp: 'saopaulo',
		to: 'palmas'
	},
	forecast: [
		'sp', 'mg', 'es', 'rj', 'ma', 'pi', 'al', 'ba', 'ce',
		'pb', 'pe', 'se', 'rn', 'ms', 'go', 'mt', 'am', 'rr',
		'ac', 'pa', 'ro', 'ap', 'to', 'sc', 'pr', 'rs'
	],
	fcPos: -1,
	now: function() {return +new Date;},
	ajax: function(h){
		var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
		xhr.open(h.type, h.url,false)
		try {
			if(s.contentType) xhr.setRequestHeader("Content-Type", s.contentType);
			xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
		}catch(e){}
		var requestDone = false;
		function onreadystatechange(isTimeout){
			if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){
				requestDone = true;
				stat = (isTimeout=="timeout"?"timeout":"success");
				if(stat=="success"){
					data = (h.dataType == 'xml' ? xhr.responseXML : xhr.responseText);
					if(h.dataType=="json")data=eval("("+data+")");
					h.success(data);
				}
			}
		}
		try{if(!h.data)h.data=null;xhr.send(h.data);}catch(e){};
		onreadystatechange();
	},
	_get: function(st,ci){
		st=st.toUpperCase();
		var ret;
		this.ajax({url: this.folder+st+(ci?'_'+ci:'')+'.js',type:'GET',dataType:'json',contentType:'text/html;charset=UTF-8',success:function(d){ret=d;}})
		return ret;
	},
	modify: function(id,html) {
		o=document.getElementById(id);
		if(typeof html == 'string') {
			o.innerHTML = html;
		}else{
			for(a in html){
				o.setAttribute(a,html[a]);
			}
		}
	},
	next: function(ids){
		last = this.fcPos;
		this.fcPos+=1;
		if(this.fcPos>=this.forecast.length)this.fcPos=0;
		st=this.forecast[this.fcPos];
		data=this._get(st,this.maincities[st]);
		if(!data)return;
		var w=data.weather[0];
		this.modify(ids.state,st.toUpperCase());
		this.modify(ids.min,w.min+"&ordm; C");
		this.modify(ids.max,w.max+"&ordm; C");
		this.modify(ids.legend,legshort[w.ico]);
		this.modify(ids.icone,{src:icone[w.ico],alt:legshort[w.ico],title:legshort[w.ico]});
	},
	launch: function(){
		xWeather.next({
			icone: "fig_tempo",
			state: "local",
			min: "minima",
			max: "maxima",
			legend: "detalhe"
		})
	},
	init: function(){
		this.launch();
		window.setInterval(this.launch,4000);
	}
};
xWeather.init();

