﻿// Copyright(c) 2008-2009 IT One, Ltd, Slovakia
// Do not use, change or distribute.

function initAggregation(){
	setInterval(updateAggregates, 30000); //30 secs
	setInterval(updateScales, 120000);
	
	var aggregDiv = document.getElementById("Aggreg");
	var viewport = getViewportDimensions();
	var left = (viewport.width == 0) ? 70 : parseInt((viewport.width - 310), 10);
	aggregDiv.style.left = left + 'px';

	
	//init combo boxes
	var mapCenter = map.getCenter();
	CleverGlobeService.GetCountryAndContinentFromPoint(mapCenter.lat(), mapCenter.lng(), 1,function(res){
	
		CleverGlobeService.AggrGetCountryGroupTypes(function(types){
			var i,j;
			for (i = 1; i <= 2; i++){
				var combo = document.getElementById("SelCtrGrpT" + i.toString());
				
				for (j = 0; j < types.length; j+=2){ 
					var newOption = document.createElement("option");
					newOption.text = types[j+1];
					newOption.value = types[j];
					combo.options.add(newOption);
				}
			}
			
			var groupTypeID = combo.options[combo.selectedIndex].value;
			
			CleverGlobeService.AggrGetCountryGroups(groupTypeID, function (groups){
				for (i = 1; i <= 2; i++){
					var combo = document.getElementById("SelCtrGrp" + i.toString());
					
					for (j = 0; j < groups.length; j+=2){ 
						var newOption = document.createElement("option");
						newOption.text = groups[j+1];
						newOption.value = groups[j];
						combo.options.add(newOption);
					}
					
					if (res.length > 0){ //select continent
						var vi;
						for (vi = 0; vi < combo.options.length; vi++){
							if (combo.options[vi].value == res[2]){
								combo.selectedIndex = vi;
							}
						}
					}
				}
				
				var groupID = combo.options[combo.selectedIndex].value;
				
				CleverGlobeService.AggrGetCountries(groupID, function(ctrs){
					for (i = 1; i <= 2; i++){
						var combo = document.getElementById("SelCtr" + i.toString());
						
						for (j = 0; j < ctrs.length; j+=2){ 
							newOption = document.createElement("option");
							newOption.text = ctrs[j+1];
							newOption.value = ctrs[j];
							combo.options.add(newOption);
						}
						//select country
						if (res.length > 0){
							for (vi = 0; vi < combo.options.length; vi++){
								if (combo.options[vi].value == res[0]){
									combo.selectedIndex = vi;
									break;
								}
							}
						}
					}
				});		
			});
		});
	});
}

function updateAggrLayers(){
	//get categories
	var i, j, c;
	for (i = 1; i <= 2; i++){
		var combo = document.getElementById("SetCat" + i.toString());
		
		for (j = 0; j < layers.length; j++){
			if (layers[j].childs.length == 0){
			var newOption = document.createElement("option");
			newOption.text = layers[j].name;
			newOption.value = layers[j].id;
			combo.options.add(newOption);
			}
		}
		
		var catID = combo.options[combo.selectedIndex].value;
		//get properties for first layer (gas stations)
		CleverGlobeService.GetPropertiesForCategoryWithSelID(culture, i, catID, null, function(props){
			var combo = document.getElementById("SelProp" + props[0]);
			for (c = 1; c < props.length; c+=3){
				var newOption = document.createElement("option");
				newOption.text = props[c];
				newOption.setAttribute("propID", props[c+1]);
				newOption.value = props[c+2];
				combo.options.add(newOption);
			}
			
			//set diesel
			if (combo.options.length > 6)
				combo.selectedIndex = 6;

			//get avaiable aggregation operations for property type
			if (combo.selectedIndex != -1){
				var type = combo.options[combo.selectedIndex].value;
				CleverGlobeService.GetAggregateOperations(Number(props[0]), type, function(opers){
					var combo = document.getElementById("SelOper" + opers[0]);
					for (c = 1; c < opers.length; c+=2){
						var newOption = document.createElement("option");
						newOption.text = opers[c];
						newOption.value = opers[c];
						combo.options.add(newOption);
					}
					
					if (combo.options.length > 2) //select AVG
						combo.selectedIndex = 2;
				});
			}
			else {
				var combo = document.getElementById("SelOper" + props[0]);	
				var newOption = document.createElement("option");
				newOption.text = "COUNT";
				newOption.value = "COUNT";
				combo.options.add(newOption);
			}
		});
	}
}

function handleAggrCatChanged(selID){
	var combo = document.getElementById("SetCat" + selID.toString());
	
	var catID = combo.options[combo.selectedIndex].value;
	//get properties for first layer
	CleverGlobeService.GetPropertiesForCategoryWithSelID(culture, selID, catID, null, function(props){
		var combo = document.getElementById("SelProp" + props[0]);
		combo.options.length = 0;
		for (c = 1; c < props.length; c+=3){
			var newOption = document.createElement("option");
			newOption.text = props[c];
			newOption.setAttribute("propID", props[c+1]);
			newOption.value = props[c+2];
			combo.options.add(newOption);
		}
		
		//get avaiable aggregation operations for property type
		if (combo.selectedIndex != -1){
			var type = combo.options[combo.selectedIndex].value;
			CleverGlobeService.GetAggregateOperations(Number(props[0]), type, function(opers){
				var combo = document.getElementById("SelOper" + opers[0]);
				combo.options.length = 0;
				for (c = 1; c < opers.length; c+=2){
					var newOption = document.createElement("option");
					newOption.text = opers[c];
					newOption.value = opers[c];
					combo.options.add(newOption);
				}
			});
		}
		else {
			var combo = document.getElementById("SelOper" + props[0]);
			combo.options.length = 0;	
			var newOption = document.createElement("option");
			newOption.text = "COUNT";
			newOption.value = "COUNT";
			combo.options.add(newOption);
		}
	});
}

function handleAggrPropChanged(selID){
	var combo = document.getElementById("SelProp" + selID.toString());
	
	//get avaiable aggregation operations for property type
	var type = combo.options[combo.selectedIndex].value;
	CleverGlobeService.GetAggregateOperations(selID, type, function(opers){
		var combo = document.getElementById("SelOper" + opers[0]);
		combo.options.length = 0;
		for (c = 1; c < opers.length; c++){
			var newOption = document.createElement("option");
			newOption.text = opers[c];
			newOption.value = opers[c];
			combo.options.add(newOption);
		}
	});
}

function handleAggrGroupTypeChanged(selID){
	var combo = document.getElementById("SelCtrGrpT" + selID.toString());
	var groupTypeID = combo.options[combo.selectedIndex].value;
		
	CleverGlobeService.AggrGetCountryGroups(groupTypeID, function (groups){
		var combo = document.getElementById("SelCtrGrp" + selID.toString());
		combo.options.length = 0;
		for (j = 0; j < groups.length; j+=2){ 
			var newOption = document.createElement("option");
			newOption.text = groups[j+1];
			newOption.value = groups[j];
			combo.options.add(newOption);
		}
		
		if (combo.selectedIndex != -1){
			var groupID = combo.options[combo.selectedIndex].value;
				
			if (combo.selectedIndex != -1){	
				CleverGlobeService.AggrGetCountries(groupID, function(ctrs){
					var combo = document.getElementById("SelCtr" + selID.toString());
					combo.options.length = 0;

					for (j = 0; j < ctrs.length; j+=2){ 
						var newOption = document.createElement("option");
						newOption.text = ctrs[j+1];
						newOption.value = ctrs[j];
						combo.options.add(newOption);
					}
				});	
			}
			else {
				var combo = document.getElementById("SelCtr" + selID.toString());
				combo.options.length = 0;
			}
		}	
	});
}

function handleAggrGroupChanged(selID){
	var combo = document.getElementById("SelCtrGrp" + selID.toString());
	
	if (combo.selectedIndex != -1){
		var groupID = combo.options[combo.selectedIndex].value;
			
		if (combo.selectedIndex != -1){	
			CleverGlobeService.AggrGetCountries(groupID, function(ctrs){
				var combo = document.getElementById("SelCtr" + selID.toString());
				combo.options.length = 0;

				for (j = 0; j < ctrs.length; j+=2){ 
					var newOption = document.createElement("option");
					newOption.text = ctrs[j+1];
					newOption.value = ctrs[j];
					combo.options.add(newOption);
				}
			});	
		}
		else {
			var combo = document.getElementById("SelCtr" + selID.toString());
			combo.options.length = 0;
		}
	}	
}

function updateAggregates(){
	var i;
	for (i = 1; i <= 2; i++){
		var groupType = document.getElementById("SelCtrGrpT" + i.toString());
		var group = document.getElementById("SelCtrGrp" + i.toString());
		var ctr = document.getElementById("SelCtr" + i.toString());
		var cat = document.getElementById("SetCat" + i.toString());
		var prop = document.getElementById("SelProp" + i.toString());
		var oper = document.getElementById("SelOper" + i.toString());
		
		if (groupType.selectedIndex != -1 && group.selectedIndex != -1 &&
			ctr.selectedIndex != -1 && cat.selectedIndex != -1 &&
			prop.selectedIndex != -1 && oper.selectedIndex != -1){
				CleverGlobeService.GetCountryAggregate(i, cat.value, ctr.value, Number(prop.options[prop.selectedIndex].getAttribute("PropID")), 
					oper.value, function (res){
					var lab = document.getElementById("aggrLab" + res[0]);
					lab.innerHTML = res[1];
					var img = document.getElementById("aggrImg" + res[0]);
					switch (res[2]){
						case "Same":
							img.setAttribute("src", "img/tsame.png");
							break;
						case "Up":
							img.setAttribute("src", "img/tup.png");
							break;
						case "Down":
							img.setAttribute("src", "img/tdown.png");
							break;
					}
				});
			}
	}
}

function updateScales(){

}

function determineMarkerColor(layerID, propID){

}