var regions =  [];
var regionIndex = [];
var regionVisibility = true;
var curRegion = 0;

function writeOutageTable(outages) {
	var div = document.getElementById("side");
	div.style.display='none';
	
	var sums = outages.getElementsByTagName("summaryTable");
	
	div.innerHTML = "<div class=\"tabber\" id=\"outageTableArea\"></div>";
	div = document.getElementById("outageTableArea");
	for( var i=0; i < sums.length; i++ ) {
		var name = sums[i].getAttribute("type");
		
		var node = getNodeData(sums[i]);
		div.innerHTML = div.innerHTML + "<div class=\"tabbertab\"><h3>" + name + "</h3>" + node + "</div>";
		regionIndex[i] = name.toLowerCase();
	}

	tabberAutomatic({onTabDisplay: function(tab) {setRegionView(tab.index);}});
	//tabberAutomaticOnLoad();
	document.getElementById("side").style.display="block";
}

function cleanOutageTable() {
	var div = document.getElementById("side");
	
	document.getElementById("side").style.display="none";


	
	for( var i in regions ) {
		for( var j in regions[i] ) {
			regions[i][j].poly.clean();
			regions[i][j] = null;
		}
	}

	regions = [];
	regionIndex = [];
	curRegion = 0;
}

function getNodeData(node) {
	var x = node.childNodes;
	var data = "";
	
	for( i=0; i < x.length; i++ ) {
		data = data + x[i].nodeValue;
	}
	
	return data;
}

function showRegion2(form, textName, typeName) {
	var value = form.areaSearch.value.toLowerCase();
	typeName = typeName.toLowerCase();

	var poly = regions[typeName][value];
	if( poly != undefined ) {
		showInfoWindow(poly.center, poly.label, poly.affected);
	} else {
		alert( value.toUpperCase() + " not found");
	}
	 
}

function showInfoWindow(latLng, _3, _4) {
	var infoText = outages.getElementsByTagName("summaryDetail")[0].firstChild.nodeValue;
	if( infoText != undefined ) {
		infoText = infoText.replace(/\$3/g, _3);
		infoText = infoText.replace(/\$4/g, _4);
		map.openInfoWindowHtml(latLng,  infoText);
	}
}

function showRegion(lng, lat, _3, _4) {
	var infoText = outages.getElementsByTagName("summaryDetail")[0].firstChild.nodeValue;
	if( infoText != undefined ) {
		infoText = infoText.replace(/\$3/g, _3);
		infoText = infoText.replace(/\$4/g, _4);
		map.openInfoWindowHtml(new GLatLng(lat, lng),  infoText);
	}
}

function setRegionView(index) {
	map.closeInfoWindow();
	curRegion = index;
	drawRegions();
}

function drawRegions() {
	for( var i in regions ) {
		var polys = regions[i];
		var flag = (regionIndex[curRegion] == i && regionVisibility == true) ? true : false; 
			for( var j in polys ) {
				polys[j].poly.setVisibility(flag);
				polys[j].poly.setLabelVisibility(flag);
			}
	}
}

function loadPolygons() {
	var polys = outages.getElementsByTagName("poly");
	
	for( var i = 0; i < polys.length; i++ ) {
		var type = polys[i].getAttribute("type").toLowerCase()
		var name = polys[i].getAttribute("name");
		if( regions[type] == undefined ) {
			regions[type] = [];
		}
		var obj = { label: name,
		 			center: new GLatLng(polys[i].getAttribute("lat"),
					polys[i].getAttribute("lng")),
					points: polys[i].firstChild.nodeValue,
					levels: polys[i].getAttribute("levels"),
					affected: polys[i].getAttribute("affected") };
		/* temp obj.affected = 122; */
		var fillColor = setColor(obj.affected);

		var code = new Label(name, obj.center);
		code.setViewLevel(10, 12);
		obj.poly = new Poly(map,
							obj.points,
						    obj.center,
							obj.levels,
							fillColor.borderColor,
							1,
							1,
							fillColor.backgroundColor,
							fillColor.opacity,
							code);

  		regions[type][name.toLowerCase()] = obj;  
  	}	
}
