<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="org.deegree.framework.util.CharsetUtils" %>
<%@ page import="org.deegree.enterprise.WebUtils" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<%
int width = Integer.parseInt( request.getParameter( "mapWidth" ) );
int height = Integer.parseInt( request.getParameter( "mapHeight" ) );

String geomTypes = request.getParameter( "geomTypes" );
String defaultGeomType = geomTypes.split( ";" )[0]; 

boolean validateGeom = Boolean.valueOf( request.getParameter( "validateGeometry" ) ) ;
%>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Digitizer</title>
<script language="JavaScript1.2" type="text/javascript" src="digitizer.js"></script>
<script language="JavaScript1.2" type="text/javascript" src="geometries.js"></script>
<script language="JavaScript1.2" type="text/javascript" src="digitizer_utils.js"></script>
<script language="JavaScript1.2" type="text/javascript" src="../../mapmodel.js"></script>
<script language="JavaScript1.2" type="text/javascript"	src="../../wmsrequestfactory.js"></script>
<script language="JavaScript1.2" type="text/javascript"	src="../../geotransform.js"></script>
<script language="JavaScript1.2" type="text/javascript" src="../../envelope.js"></script>
<script language="JavaScript1.2" type="text/javascript" src="../../geotransform.js"></script>
<script language="JavaScript1.2" type="text/javascript" src="../../wz_jsgraphics.js"></script>
<script language="JavaScript1.2" type="text/javascript" src="../../rpc.js"></script>
	<script type="text/javascript">
	<!-- //
	
	var templateDoc = null;

	var geomCheckerProxy = null;

	var geomType = '<%= defaultGeomType %>';
	
	var digitizer;
	
	var geoTrans;
	
	var mapDocument;
	
	var isNav = true;
	
	var geometry = null;
	
	var mapLeft = <%= request.getParameter( "mapLeft" ) %>;
	var mapTop = 0; <!--  don't do this request.getParameter( "mapTop" ) -->
	
	var isFirstPoint = true;
	
	function swapTemplate( list ) {
		var template = list.value;
		var im = document.getElementById( "templateWindow" );
		im.src = template;
	}		
	
	function init(){
		
		var col = document.getElementById( 'leftCol' );
		col.setAttribute( 'width', mapLeft + 'px');
		initMap();
		paintMap();
		initDigitizer();
		initEventHandling();
	
	}
	
	function sendRequest(){
		if( geometry == null ){
			alert('Please digititze a geometry.');
			return;
		}
	
		var params = '<param><value><struct>';
		params+= createMember( 'GEOMETRY', geometry, 'string' );
		
		if ( templateDoc != null ){
			params+= templateDoc.getRPCFragment();
		}           
		params+= '</struct></value></param>';
			
		var rpc =  createMethodCall('dig:digitizeGeometry', params, '<%= CharsetUtils.getSystemCharset() %>' );
			
		document.forms[0].action = "<%= WebUtils.getAbsoluteContextPath(request)%>/control?rpc=" + rpc;
		//document.forms[0].submit();
		alert( 'digizing still under construction; WFS-T request will be aborted ' );
		window.close();
		
	}	
	
	function initDigitizer(){
		var lineColor = "<%= request.getParameter("lineColor") %>";
		digitizer = new Digitizer( <%= width %> + mapLeft, <%= height %>, 0, 0, lineColor);				
		digitizer.setDocument(document);
		digitizer.init();
	}
	
	function paintMap() {
	
		var mm = opener.parent.controller.mapModel;
		var env = ensureAspectRatio( mm.getBoundingBox(), <%= width %>, <%= height %> );
		var llist = mm.getLayerList();
		var lGroups = mm.getLayerList().getLayerGroups();
		
		var localMapModel = new MapModel( llist, mm.getSrs(), env, <%=width %>, <%=height %>);
		var factory = new WMSRequestFactory();
		
		var sid = null;
		if( opener.parent.controller.vSessionKeeper != null ){
			sid = opener.parent.controller.vSessionKeeper.id;
		}
		
        for(var i = 0; i < lGroups.length; ++i){
        	var src = factory.createGetMapRequest( lGroups[i], localMapModel, null );
	   		document.getElementById( "image" + i ).src = src;
        }
        //UT deviating from normal FIX IT: +mapLeft and top, if you will
        geoTrans = new GeoTransform( env.minx, env.miny, env.maxx, env.maxy, 0 + mapLeft, 0, <%= width %> + mapLeft, <%= height %> );
        
	}
	
	function doCheckGeometry(){
		<%
		if( validateGeom ){
		    %>
		updateMesgField( 'Checking geometry...', 'background-color:#77FF77');
		geomCheckerProxy.checkGeometry( geometry );	
		<%
		} else {
		    out.println("//Nothing to validate");
		}
		    %>
		
	}
	
	// -->
	</script>
</head>
<body onload="init();" onunload="digitizer.clear();" marginheight="0" marginwidth="0">

<%
	if( validateGeom ){
%>
<iframe src="geom_checker_proxy.jsp" id="geomCheckerProxy" height="0" width="0" frameborder="0" ></iframe>
<%
	}
%>

<form action="" id="form" method="post">
<input name="rpc" type="hidden" />
</form>

<table border="0" width="100%">
	<tr>
		<td width="150px" id="leftCol" >
			<%			
			
			//TODO check parameter availability
			String[] formLabels = request.getParameter( "formLabels" ).split( ";" );
			String[] formTemplates = request.getParameter( "formTemplates" ).split( ";" );

			if( formLabels.length > 1 ){
			    %>
				<select id="templateChooser" onchange="swapTemplate( this )">
			    <%
			    for( int i = 0; i < formLabels.length;i++){
	        %>
				<option value="<%= WebUtils.getAbsoluteContextPath(request) + "/" +formTemplates[i] %>"> <%= formLabels[i] %></option>
		    <%
			    }
			    %>
		    </select>
			    <%
			} else {
			    %>
			    <p><%=formLabels[0] %></p>
			    <%  
			}
		    %>
		
		</td>
	</tr>
	<tr>
		<td >
		<!-- -->
		<iframe id="templateWindow" src="<%= WebUtils.getAbsoluteContextPath(request) + "/" + formTemplates[0] %>" frameborder="0" ></iframe>
		</td>
	</tr>
	<tr>
		<td>
		<jsp:include flush="true" page="geom_control.jsp?geomTypes=<%= geomTypes %>"></jsp:include>
		</td>
	</tr>
</table>

</body>
</html>