/*+-------------+----------------------------------------------------------*
 *|        /\   |   University of Bonn                                     *
 *|       |  |  |     Department of Geography                              *
 *|      _|  |_ |     Chair of Cartography                                 *
 *|    _/      \|                                                          *
 *|___|         |                                                          *
 *|             |     Meckenheimer Allee 172                               *
 *|             |     D-53115 Bonn, Germany                                *
 *+-------------+----------------------------------------------------------*/
/**
 * <p><b>Title: AAS </b></p>
 * <p><b>Description:</b> Functions for AAS </p>
 *
 * <p><b>Copyright:</b> Copyright (c) 2008</p>
 * <p><b>Institution:</b> University of Bonn, Department of Geography</p>
 * @author Pascal Neis, neis@geographie.uni-bonn.de
 * @version 1.0 2008-07-11
 */
 
//Alles was für Accessibility Analysis wichtig ist

//**********************************************************
var accessibilityTime = null;
var accessibilityPosition = null;

		function accessibilityAnalyse(){
			
			//disable Search TextField & Button
			document.getElementById("tfMinutes").disabled=true;
			document.getElementById("Analyse").disabled=true;
			
			//get Minutes
			var minutes = document.getElementById("tfMinutes").value;
			accessibilityTime = minutes;
			
			if(checkNumber(minutes)){
				//get start and end geom
				var position = new OpenLayers.LonLat(getStartOrEndFeature('Start').lonlat.lon,getStartOrEndFeature('Start').lonlat.lat);
				var positionLonlat = position.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
				var position_X = positionLonlat.lon.toFixed(7);
				var position_Y = positionLonlat.lat.toFixed(7);
				
				accessibilityPosition = 'Position: '+position_X+' '+position_Y;

				//Set Infos ...
				document.getElementById('informations').style.visibility = 'visible';
				document.getElementById('informations').innerHTML =  '<span class="infos">This calculation may take a little time. Please be patient!</span>';
				//document.getElementById('problems').innerHTML = '<span class="infos">none</span>';
			
				var data = 'Position='+position_X+','+position_Y+'&Minutes='+minutes;
				var url = 'php/AAS_AccessibilityRequest.php';

				// assuming you already know how to create your handler
				//var request = OpenLayers.Request.POST({url: url,data: data,callback: showRoute});

				new OpenLayers.Ajax.Request(url,
                         {   method: 'post',
                             parameters: data,
                             onComplete: showAnalyse
                          }
						  );
			}
			else{
				//enable TextField & Search Button
				document.getElementById("tfMinutes").disabled=false;
				document.getElementById("Analyse").disabled=false;
			}
		}

		function showAnalyse(response) {
			//alert(response.responseText);
			if (response) {
				
				// remove route, start and end
				vectorLayerPolygon.removeFeatures(vectorLayerPolygon.features);
				
				//alert(response.responseText);
				var xmlresponse = response.responseXML;

				var errorList = xmlresponse.getElementsByTagName('ErrorList');
				if(errorList.length == 0)
						errorList = xmlresponse.getElementsByTagName('aas:ErrorList');

				if(errorList.length > 0){
					var error = errorList[0].getElementsByTagName('Error');
					if(error.length == 0)
						error = xmlresponse.getElementsByTagName('aas:Error');
					
					var message = error[0].getAttribute('message')

					alert("Problem \nMessage: "+message);
					//document.getElementById('problems').innerHTML = '<span class="problems">'+message+'</span>';
					document.getElementById('informations').innerHTML = "";
				}
				else{
					// parse areas
					var analyseAreas = xmlresponse.getElementsByTagName('LinearRing');
					if(analyseAreas.length == 0)
						analyseAreas = xmlresponse.getElementsByTagName('gml:LinearRing');
					
					for (var i = 0; i < 1 ; i++){//analyseAreas.length; i++) {
										
						var positions = analyseAreas[i].getElementsByTagName('pos');
						if(positions.length == 0)
							positions = analyseAreas[i].getElementsByTagName('gml:pos');

						var startPos, endPos;
						var line_points = [];

						for (var j = 0; j < positions.length; j++) {
							var pos;
							if(typeof positions[j].textContent != 'undefined')
								pos = positions[j].textContent.split(' ');
							else
								pos = positions[j].text.split(' ');

							line_points.push(new OpenLayers.Geometry.Point(pos[0],pos[1]).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")));
						}

						vectorLayerPolygon.addFeatures([new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(line_points)))]);
					}
					
					//set center and zoom
					var zoomvalue = 10;
					if(accessibilityTime < 4)
						zoomvalue = 13;
					else if(accessibilityTime >= 4 && accessibilityTime < 10 )
						zoomvalue = 12;
					else if(accessibilityTime >= 10 && accessibilityTime < 30 )
						zoomvalue = 11;
					map.setCenter(new OpenLayers.LonLat(getStartOrEndFeature('Start').lonlat.lon,getStartOrEndFeature('Start').lonlat.lat), zoomvalue);

					//create Result
					var result = '<span class="route_instruction_heading">Result Accessibility Analysis</span>'+
						'<span class="infos"><br><br>Time: '+accessibilityTime+' Minutes<br>'+accessibilityPosition+'</span><br>';
					document.getElementById('informations').innerHTML = result;
					
					//document.getElementById('problems').innerHTML = '<span class="infos">none</span>';
				}
			}
			//enable TextField & Search Button
			document.getElementById("tfMinutes").disabled=false;
			document.getElementById("Analyse").disabled=false;
			//document.getElementById("rbMap").checked=true;
			//toggleControl(document.getElementById("rbMap"));
		}
		
		function checkNumber(Wert) {
		  if (isNaN(Wert)) {
			alert("'"+Wert+"' is not a number!");
			return false;
		  }
		  else if(Wert.search(/\.+/) != -1 || Wert.search(/,+/) != -1){
		  	alert("Please no decimal number!");
			return false;
		  }
		  else if(Wert == null || Wert == ''){
		  	alert("Please insert a number!");
			return false;
		  }
		  else
		  	return true;
		}
//**********************************************************