<?xml version="1.0" encoding="utf-8"?>
<components:ExtendedForm xmlns:mx="http://www.adobe.com/2006/mxml"
		 xmlns:components="components.*"
		 change="{if(serverNode.@status != 'new') serverNode.@status='changed'}"
		 enabled="{serverNode != null}"
		 initialize="init()">

	<mx:Script>
		<![CDATA[
			import mx.events.CollectionEvent;
			import mx.collections.XMLListCollection;
			import mx.binding.utils.BindingUtils;
			import data.DataSource;
			
			[Bindable]
			public var serverNode:XML = null;	
			
			[Bindable]
			public var scopeDP:Array= new Array("private","public");
			
			[Bindable]
			public var dataSource:DataSource;		
			
			[Bindable]
			private var formEnabled:Boolean = true;
			
			private function change():void {
				if(serverNode != null 
					&& serverNode.@status != 'new'
					&& serverNode.@status != 'changed') {
					serverNode.@status = 'changed';
				}
			}
			
			private function init():void {
				BindingUtils.bindSetter(function():void {
					if(serverNode != null) {						
						service.selectedItem = services.Service.(@label == serverNode.Service);
						formEnabled = dataSource.isOwner(serverNode);						
					}
				}, this, "serverNode");
				
				BindingUtils.bindSetter(function():void {
					if(serverNode != null) {
						if(service.selectedItem != null) {
							version.dataProvider = service.selectedItem.Version;										
							version.selectedItem = service.selectedItem.Version.(@label == serverNode.Version);
							
							security.dataProvider = service.selectedItem.Security;										
							security.selectedItem = service.selectedItem.Security.(@label == serverNode.Security);
						}
					}
				}, service, "selectedItem");
				
				formEnabled = dataSource.isOwner(serverNode);
				
				addRequiredValidator(resourceValidator);
			}
		]]>
	</mx:Script>
	
	<mx:XML id="services">
		<Services>
			<Service label="GI">
				<Version label="1.0.0"/>
				<Version label="2.0.0"/>
				<Version label="3.0.0"/>
				<Security label="none"/>
				<Security label="http"/>
			</Service>
			<Service label="OGC:WMS">
				<Version label="1.1.0"/>
				<Version label="1.1.1"/>
				<Security label="none"/>
				<Security label="ows"/>		
				<Security label="http"/>		
			</Service>
			<Service label="OGC:WFS">
				<Version label="1.3.0"/>
				<Security label="none"/>
				<Security label="ows"/>
				<Security label="http"/>
			</Service>
		</Services> 
	</mx:XML>
	
	<mx:RegExpValidator id="resourceValidator" source="{onlineresource}" property="text" 
		expression="https?://.*[\?&amp;]" triggerEvent="change"/>
	
	<mx:FormItem enabled="{formEnabled}" 
		label="{resourceManager.getString('language', 'Lbl_ServerTitle')}"
		required="true"
		toolTip="{resourceManager.getString('language', 'Tlt_ServerTitle')}">
		<mx:TextInput id="serverTitle" textAlign="left"
			text="{serverNode.Title}"			
			enabled="{formEnabled}"		
			change="{serverNode.Title = serverTitle.text}"/>
	</mx:FormItem>
	<mx:FormItem enabled="{formEnabled}">
		<mx:HBox id="ownerScope" borderStyle="solid"  paddingTop="5" paddingBottom="5" paddingLeft="5" paddingRight="5">
			<mx:FormItem label="{resourceManager.getString('language', 'Lbl_ServerOwner')}"
				 toolTip="{resourceManager.getString('language', 'Tlt_ServerOwner')}">
					<mx:TextInput enabled="false" text="{serverNode.Owner}"/>
			</mx:FormItem>
			<mx:FormItem label="{resourceManager.getString('language', 'Lbl_ServerScope')}" required="true"
				 toolTip="{resourceManager.getString('language', 'Tlt_ServerScope')}">
					<mx:ComboBox id="scope"
						dataProvider="{scopeDP}"   
						width="200"
						selectedItem="{serverNode.Scope.children()[0]}"
				 		change="{serverNode.Scope = scope.selectedItem}"
						enabled="{formEnabled}"/>
			</mx:FormItem>	
		</mx:HBox>
	</mx:FormItem>
	<mx:FormItem enabled="{formEnabled}" 
		label="{resourceManager.getString('language', 'Lbl_ServerService')}"
		required="true"
		toolTip="{resourceManager.getString('language', 'Tlt_ServerService')}">
		<mx:ComboBox id="service"
			dataProvider="{services.Service}"
			labelField="@label"
			change="{serverNode.Service = service.selectedItem.@label}"
			enabled="{formEnabled}"/>				
	</mx:FormItem>
	<mx:FormItem enabled="{formEnabled}" 
		label="{resourceManager.getString('language', 'Lbl_ServerVersion')}"
		required="true"
		toolTip="{resourceManager.getString('language', 'Tlt_ServerVersion')}">
		<mx:ComboBox id="version"			
			labelField="@label"			
			change="{serverNode.Version = version.selectedItem.@label}"
			enabled="{formEnabled}"/>						
	</mx:FormItem>
	<mx:FormItem enabled="{formEnabled}" 
		label="Security"
		required="true"
		toolTip="Security">
		<mx:ComboBox id="security"			
			labelField="@label"			
			change="{serverNode.Security = security.selectedItem.@label}"
			enabled="{formEnabled}"/>						
	</mx:FormItem>
	<mx:FormItem enabled="{formEnabled}"
		label="Proxy"
		required="true"
		toolTip="Proxy">
		<mx:CheckBox id="proxy" selected="{serverNode.Proxy == 't'}"
			change="{serverNode.Proxy = proxy.selected ? 't' : 'f'}"/>
	</mx:FormItem>
	<mx:FormItem enabled="{formEnabled}"
		label="{resourceManager.getString('language', 'Lbl_ServerOnLineResource')}"
		required="true"
		toolTip="{resourceManager.getString('language', 'Tlt_ServerOnLineResource')}">		
		<mx:TextInput id="onlineresource" textAlign="left"
			text="{serverNode.Onlineresource}"
			change="{serverNode.Onlineresource = onlineresource.text; dataSource.dropServerCache(serverNode)}"
			enabled="{formEnabled}"/>	
	</mx:FormItem>
		<mx:FormItem enabled="{formEnabled}"
		label="{resourceManager.getString('language', 'Lbl_ServerDescription')}"
		required="false"
		toolTip="{resourceManager.getString('language', 'Tlt_ServerDescription')}">		
		<mx:TextArea id="description" width="{ownerScope.width}" height="100"
			text="{serverNode.Description}"
			change="{serverNode.Description = description.text}"
			enabled="{formEnabled}"/>
	</mx:FormItem>
	
</components:ExtendedForm>