<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
	<!-- General data types for all subsequent XSD files -->
	<xs:simpleType name="name">
		<xs:restriction base="xs:string">
		  <xs:maxLength value="40"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="password">
		<xs:restriction base="xs:string">
		  <xs:maxLength value="32"/>
		</xs:restriction>
	</xs:simpleType>
		
	<xs:simpleType name="rank">
		<xs:restriction base="xs:integer">
		  <xs:minInclusive value="0"/>
		  <xs:maxInclusive value="100000"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="integer_with_zero">
		<xs:restriction base="xs:integer">
		  <xs:minInclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>

	
	<!-- header.xsd specific definitions -->
	<xs:simpleType name="plugin_version">
	  <xs:restriction base="xs:string">
	  	<xs:maxLength value="8"/>
	  </xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="universe">
		<xs:restriction base="xs:string">
		  <xs:maxLength value="40"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="debug">
	  <xs:restriction base="xs:boolean"/>
	</xs:simpleType>
	
	<xs:simpleType name="datetime">
	    <xs:restriction base="xs:string">
	        <xs:pattern value="\d{4}.\d{2}.\d{2} \d{2}:\d{2}:\d{2}"/>
	    </xs:restriction>
	</xs:simpleType>
		
	<xs:complexType name="debris">
		<xs:attribute name="metal" type="integer_with_zero" use="required"/>
		<xs:attribute name="crystal" type="integer_with_zero" use="required"/>
	</xs:complexType>
		
	<xs:complexType name="coordinates">
		<xs:attribute name="galaxy" type="xs:positiveInteger" use="required"/>
		<xs:attribute name="system" type="xs:positiveInteger" use="required"/>
		<xs:attribute name="planet" type="xs:positiveInteger" use="required"/>
	</xs:complexType>
	
	<xs:complexType name="playerdata">
		<xs:attribute name="playername" type="name" use="required"/>
		<xs:attribute name="playerid" type="xs:positiveInteger" use="required"/>	
	</xs:complexType>
	
	<xs:simpleType name="language">
	  <xs:restriction base="xs:string">
	    <xs:enumeration value="german"/>
	    <xs:enumeration value="english"/>
	    <xs:enumeration value="spanish"/>
	    <xs:enumeration value="dutch"/>
	    <xs:enumeration value="balkan"/>
	    <xs:enumeration value="french"/>
	    <xs:enumeration value="portugues"/>
	    <xs:enumeration value="polish"/>
	    <xs:enumeration value="italian"/>
	    <xs:enumeration value="turkish"/>
	    <xs:enumeration value="danish"/>
	    <xs:enumeration value="brazilian"/>
	    <xs:enumeration value="russian"/>
	    <xs:enumeration value="swedish"/>
	    <xs:enumeration value="greek"/>
	    <xs:enumeration value="romanian"/>
	    <xs:enumeration value="hungarian"/>
	    <xs:enumeration value="czech"/>
	    <xs:enumeration value="korean"/>
	    <xs:enumeration value="norwegian"/>
	    <xs:enumeration value="taiwan"/>
	    <xs:enumeration value="japan"/>
	    <xs:enumeration value="chinese"/>
	    <xs:enumeration value="bulgarian"/>
	    <xs:enumeration value="lithuanian"/>
	    <xs:enumeration value="latvian"/>
	    <xs:enumeration value="finnish"/>
	    <xs:enumeration value="slovak"/>
	    <xs:enumeration value="croatian"/>
	    <xs:enumeration value="serbian"/>
	    <xs:enumeration value="slovenian"/>
	  </xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="content_type">
	  <xs:restriction base="xs:string">
	    <xs:enumeration value="galaxyview"/>
	    <xs:enumeration value="player_stats"/>
	    <xs:enumeration value="ally_stats"/>
	    <xs:enumeration value="player_highscore"/>
	    <xs:enumeration value="ally_highscore"/>
	    <xs:enumeration value="allypage"/>
	    <xs:enumeration value="reports"/>
	    <xs:enumeration value="planetinfo"/>
	    <xs:enumeration value="fleet_movement"/>
	    <xs:enumeration value="combat_report"/>
	    <xs:enumeration value="espionage"/>
	    <xs:enumeration value="message"/>
	  </xs:restriction>
	</xs:simpleType>


	<xs:complexType name="activity">
		<xs:attribute name="year" type="xs:positiveInteger" use="required"/>
		<xs:attribute name="month" type="xs:positiveInteger" use="required"/>
		<xs:attribute name="day" type="xs:positiveInteger" use="required"/>
		<xs:attribute name="hour" type="integer_with_zero" use="required"/>
		<xs:attribute name="minute" type="integer_with_zero" use="required"/>
		<xs:attribute name="weekday" type="integer_with_zero" use="required"/>
	</xs:complexType>
		
	<xs:complexType name="header_data">
		<xs:attribute name="version" type="plugin_version" use="required"/>
		<xs:attribute name="universe" type="universe" use="required"/>
		<xs:attribute name="debug" type="debug" use="required"/>
		<xs:attribute name="language" type="language" use="required"/>
		<xs:attribute name="token" type="password" use="required"/>
		<xs:attribute name="content_type" type="content_type" use="required"/>
	</xs:complexType>
	
	<xs:element name="header" type="header_data"/>

</xs:schema>

