adding documentation
authorSandro Knauß <knauss@netzguerilla.net>
Tue, 06 Dec 2011 19:46:00 +0100
changeset 72 e7b44716a564
parent 71 0f3063b5e96b
child 73 f2f247a5b6c9
adding documentation
createdoc.py
doc/css/960.css
doc/css/reset.css
doc/css/style-ie.css
doc/css/style.css
doc/current.html
doc/images/netzguerilla-3.png
doc/impressum.html
doc/index.html
doc/new.html
doc/tmpl/current.html
doc/tmpl/impressum.html
doc/tmpl/index.html
doc/tmpl/layout.tmpl
doc/tmpl/layout.tmpl.bak
doc/tmpl/new.html
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/createdoc.py	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,128 @@
+#!/usr/bin/env python2.7
+# -*- coding: utf-8 -*- 
+
+from genshi.template import TemplateLoader
+
+loader = TemplateLoader('doc/tmpl', auto_reload=True)
+
+import re
+import inspect
+from iro.user import User
+
+
+user_methods = dict(inspect.getmembers(User(None,None)))
+
+class Link():
+    def __init__(self,name,title):
+        self.name=name
+        self.title=title
+
+    def getLink(self):
+        return self.name
+
+    def __getitem__(self,name):
+        if name == "link":
+            return self.getLink()
+        return AttributeError(name)
+
+class Site(Link):
+    pass
+
+
+class Keyword():
+    def __init__(self,name,typ,description):
+        self.name=name
+        self.typ=typ
+        self.description=description
+
+def section(text):
+    ret={}
+    li=[]
+    kw=None
+    for line in text.split("\n"):
+        if re.match("^\s*$",line):
+            continue
+
+        if line[0] not in (" ","\t"):
+            if kw:
+                ret[kw.name]=kw
+                li.append(kw)
+            l=re.match(r"^(?P<name>[a-zA-Z0-9-_.]*)\[(?P<typ>[a-zA-Z0-9-_]*)\]:(?P<d>.*)$",line)
+            kw=Keyword(name=l.group("name"),typ=l.group("typ"),description=l.group("d"))
+        else:
+            kw.description+="\n"+line.strip()
+    if kw:
+        ret[kw.name]=kw
+        li.append(kw)
+    return ret,li
+
+
+
+def keywords(f):
+    doc=f.__doc__
+    kwds=re.search("Keywords:\n(?P<keywords>(?P<whitespace>\s*)(.+\n)*)\n",doc)
+    k=kwds.group("keywords")
+    #get rid of beginning whitespaces
+    k=re.sub(re.compile(r"^"+kwds.group("whitespace"),re.M),"",k)
+    return section(k)
+
+def ret(f):
+    doc=f.__doc__
+    kwds=re.search("Return:\n(?P<ret>(?P<whitespace>\s*)(.+\n)*)\n",doc)
+    k=kwds.group("ret")
+    #get rid of beginning whitespaces
+    k=re.sub(re.compile(r"^"+kwds.group("whitespace"),re.M),"",k)
+    return section(k)
+
+
+
+class Arg():
+    def __init__(self,name,f):
+        self.name=name
+        k,_ = keywords(f)
+        kwd=k[name]
+        self.typ=kwd.typ
+        self.description=kwd.description
+
+        
+
+class Method(Link):
+    def __init__(self,name,title):
+        Link.__init__(self,name,title)
+        m=user_methods[name]
+        self.description = m.__doc__.split("\n")[0]
+        a=inspect.getargspec(m)
+        self.args=[Arg(a,m) for a in a.args if a is not "self"]
+        _, self.rets=ret(m)
+
+
+def main():
+    sites=[Site("index.html","Iro"),
+           Site("current.html","API Documentation"),
+           Site("new.html","geplante API Documentation"),
+           Site("impressum.html","Impressum"),
+           ]
+
+    methods=[
+            Method("startSMS","StartSMS"),
+            Method("startFAX","StartFAX"),
+            Method("startMail","StartMail"),
+            
+            Method("status","Status"),
+            Method("stop","Stop"),
+            
+            Method("getProvider","GetProvider"),
+            Method("getDefaultProvider","GetDefaultProvider"),
+            ]
+    for site in sites:
+        print("generiere %s" % site.name)
+        tmpl = loader.load(site.name)
+        def a(s):
+            if s == site:
+                return {"class":"menu active"}
+        stream = tmpl.generate(sites=sites,active=a,methods=methods)
+        with open('doc/'+site.name, "w") as g:
+            g.write(stream.render('html', doctype='html'))
+
+if __name__ == '__main__':
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/css/960.css	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,1 @@
+.container_12,.container_16{margin-left:auto;margin-right:auto;width:960px}.grid_1,.grid_2,.grid_3,.grid_4,.grid_5,.grid_6,.grid_7,.grid_8,.grid_9,.grid_10,.grid_11,.grid_12,.grid_13,.grid_14,.grid_15,.grid_16{display:inline;float:left;margin-left:10px;margin-right:10px}.push_1,.pull_1,.push_2,.pull_2,.push_3,.pull_3,.push_4,.pull_4,.push_5,.pull_5,.push_6,.pull_6,.push_7,.pull_7,.push_8,.pull_8,.push_9,.pull_9,.push_10,.pull_10,.push_11,.pull_11,.push_12,.pull_12,.push_13,.pull_13,.push_14,.pull_14,.push_15,.pull_15{position:relative}.container_12 .grid_3,.container_16 .grid_4{width:220px}.container_12 .grid_6,.container_16 .grid_8{width:460px}.container_12 .grid_9,.container_16 .grid_12{width:700px}.container_12 .grid_12,.container_16 .grid_16{width:940px}.alpha{margin-left:0}.omega{margin-right:0}.container_12 .grid_1{width:60px}.container_12 .grid_2{width:140px}.container_12 .grid_4{width:300px}.container_12 .grid_5{width:380px}.container_12 .grid_7{width:540px}.container_12 .grid_8{width:620px}.container_12 .grid_10{width:780px}.container_12 .grid_11{width:860px}.container_16 .grid_1{width:40px}.container_16 .grid_2{width:100px}.container_16 .grid_3{width:160px}.container_16 .grid_5{width:280px}.container_16 .grid_6{width:340px}.container_16 .grid_7{width:400px}.container_16 .grid_9{width:520px}.container_16 .grid_10{width:580px}.container_16 .grid_11{width:640px}.container_16 .grid_13{width:760px}.container_16 .grid_14{width:820px}.container_16 .grid_15{width:880px}.container_12 .prefix_3,.container_16 .prefix_4{padding-left:240px}.container_12 .prefix_6,.container_16 .prefix_8{padding-left:480px}.container_12 .prefix_9,.container_16 .prefix_12{padding-left:720px}.container_12 .prefix_1{padding-left:80px}.container_12 .prefix_2{padding-left:160px}.container_12 .prefix_4{padding-left:320px}.container_12 .prefix_5{padding-left:400px}.container_12 .prefix_7{padding-left:560px}.container_12 .prefix_8{padding-left:640px}.container_12 .prefix_10{padding-left:800px}.container_12 .prefix_11{padding-left:880px}.container_16 .prefix_1{padding-left:60px}.container_16 .prefix_2{padding-left:120px}.container_16 .prefix_3{padding-left:180px}.container_16 .prefix_5{padding-left:300px}.container_16 .prefix_6{padding-left:360px}.container_16 .prefix_7{padding-left:420px}.container_16 .prefix_9{padding-left:540px}.container_16 .prefix_10{padding-left:600px}.container_16 .prefix_11{padding-left:660px}.container_16 .prefix_13{padding-left:780px}.container_16 .prefix_14{padding-left:840px}.container_16 .prefix_15{padding-left:900px}.container_12 .suffix_3,.container_16 .suffix_4{padding-right:240px}.container_12 .suffix_6,.container_16 .suffix_8{padding-right:480px}.container_12 .suffix_9,.container_16 .suffix_12{padding-right:720px}.container_12 .suffix_1{padding-right:80px}.container_12 .suffix_2{padding-right:160px}.container_12 .suffix_4{padding-right:320px}.container_12 .suffix_5{padding-right:400px}.container_12 .suffix_7{padding-right:560px}.container_12 .suffix_8{padding-right:640px}.container_12 .suffix_10{padding-right:800px}.container_12 .suffix_11{padding-right:880px}.container_16 .suffix_1{padding-right:60px}.container_16 .suffix_2{padding-right:120px}.container_16 .suffix_3{padding-right:180px}.container_16 .suffix_5{padding-right:300px}.container_16 .suffix_6{padding-right:360px}.container_16 .suffix_7{padding-right:420px}.container_16 .suffix_9{padding-right:540px}.container_16 .suffix_10{padding-right:600px}.container_16 .suffix_11{padding-right:660px}.container_16 .suffix_13{padding-right:780px}.container_16 .suffix_14{padding-right:840px}.container_16 .suffix_15{padding-right:900px}.container_12 .push_3,.container_16 .push_4{left:240px}.container_12 .push_6,.container_16 .push_8{left:480px}.container_12 .push_9,.container_16 .push_12{left:720px}.container_12 .push_1{left:80px}.container_12 .push_2{left:160px}.container_12 .push_4{left:320px}.container_12 .push_5{left:400px}.container_12 .push_7{left:560px}.container_12 .push_8{left:640px}.container_12 .push_10{left:800px}.container_12 .push_11{left:880px}.container_16 .push_1{left:60px}.container_16 .push_2{left:120px}.container_16 .push_3{left:180px}.container_16 .push_5{left:300px}.container_16 .push_6{left:360px}.container_16 .push_7{left:420px}.container_16 .push_9{left:540px}.container_16 .push_10{left:600px}.container_16 .push_11{left:660px}.container_16 .push_13{left:780px}.container_16 .push_14{left:840px}.container_16 .push_15{left:900px}.container_12 .pull_3,.container_16 .pull_4{left:-240px}.container_12 .pull_6,.container_16 .pull_8{left:-480px}.container_12 .pull_9,.container_16 .pull_12{left:-720px}.container_12 .pull_1{left:-80px}.container_12 .pull_2{left:-160px}.container_12 .pull_4{left:-320px}.container_12 .pull_5{left:-400px}.container_12 .pull_7{left:-560px}.container_12 .pull_8{left:-640px}.container_12 .pull_10{left:-800px}.container_12 .pull_11{left:-880px}.container_16 .pull_1{left:-60px}.container_16 .pull_2{left:-120px}.container_16 .pull_3{left:-180px}.container_16 .pull_5{left:-300px}.container_16 .pull_6{left:-360px}.container_16 .pull_7{left:-420px}.container_16 .pull_9{left:-540px}.container_16 .pull_10{left:-600px}.container_16 .pull_11{left:-660px}.container_16 .pull_13{left:-780px}.container_16 .pull_14{left:-840px}.container_16 .pull_15{left:-900px}.clear{clear:both;display:block;overflow:hidden;visibility:hidden;width:0;height:0}.clearfix:after{clear:both;content:' ';display:block;font-size:0;line-height:0;visibility:hidden;width:0;height:0}* html .clearfix,*:first-child+html .clearfix{zoom:1}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/css/reset.css	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,1 @@
+html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus{outline:0}ins{text-decoration:none}del{text-decoration:line-through}table{border-collapse:collapse;border-spacing:0}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/css/style-ie.css	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,15 @@
+#head #menu {
+	
+	width: 750px;
+	
+}
+
+	#head #menu li {
+		
+		display: inline;
+		position: relative;
+		float: left;
+		margin: 0px;
+		padding: 0px;
+		
+	}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/css/style.css	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,975 @@
+
+body {
+	
+	background-color: #eee;
+	color: #111;
+	margin: 0px;
+	padding: 0px;
+	font-family: "DroidSans", "Trebuchet MS", sans-serif;
+	line-height: 1.6em;
+	font-size: 1.3em;
+	
+}
+
+	#head-container {
+		
+		display: block;
+		position: relative;
+		width: 100%;
+		height: 90px;
+		
+		background: #111 url(../images/head.png) top left repeat-x;
+		
+	}
+	
+		#head {
+			
+			display: block;
+			position: relative;
+			width: 960px;
+			height: 90px;
+			margin: 0px auto;			
+			
+		}
+			
+			#head #logo {
+			
+				display: block;
+				position: absolute;
+				left: 0px;
+				bottom: 10px;
+				width: 200px;
+				height: 70px;
+			
+			}
+
+				#head #logo a {
+					
+					display: block;
+					position: relative;
+					width: 200px;
+					padding-left: 70px;
+					height: 70px;
+					background: url(../images/netzguerilla-3.png) 0px 0px no-repeat;
+					text-decoration: none;
+					
+				}
+
+				#head #logo a span {
+			
+					display: none;
+			
+				}
+				
+			#head #menu {
+				
+				display: block;
+				position: absolute;
+				right: 0px;
+				bottom: 0px;
+				margin: 0px;
+				padding: 0px;
+				
+			}
+
+				#head #menu li {
+					
+					display: inline-block;
+					position: relative;
+					margin: 0px;
+					padding: 0px;
+					
+				}
+				
+					#head #menu li a {
+					
+						display: block;
+						position: relative;
+						
+						color: #c03;
+						text-decoration: none;
+						text-transform: uppercase;
+						padding: 0px 7px;
+						background: #333 url(../images/fade-top.png) bottom left repeat-x;
+						margin-left: 5px;
+						font-size: .8em;
+						font-weight: bold;
+						
+						-webkit-border-top-left-radius: 4px;
+						-webkit-border-top-right-radius: 4px;
+						-moz-border-radius-topleft: 4px;
+						-moz-border-radius-topright: 4px;
+						border-top-left-radius: 4px;
+						border-top-right-radius: 4px;
+						
+					}
+					
+						#head #menu li a:hover {
+						
+							background: #c03 url(../images/fade-top.png) bottom left repeat-x;
+							color: #fff;
+							
+						}
+
+						#head #menu li a.active {
+							
+							background-color: #eee;
+							background-image: none;
+							color: #000;
+							
+						}
+					
+	#content-container {
+		
+		display: block;
+		position: relative;
+		
+	}
+		#content { 
+		
+			padding: 20px 0px;		
+			
+		}
+	
+		#main {}
+		
+			#main h2 {
+				
+				display: block;
+				position: relative;
+				color: #a01;
+				font-size: 1.8em;
+				line-height: 1.4em;
+				margin-bottom: 15px;
+				text-shadow: 0px 0px 5px #fff;
+				
+			}
+			
+			#main h3 {
+			
+				display: block;
+				position: relative;
+				color: #b02;
+				font-size: 1.4em;
+				line-height: 1.4em;
+				margin: 10px 0px;
+			
+			}
+			
+			#main h4 {
+			
+				display: block;
+				position: relative;
+				color: #a01;
+				font-size: 1.3em;
+				line-height: 1.4em;
+				margin: 10px 0px;
+			
+			}
+			
+			#main h5 {
+			
+				display: block;
+				position: relative;
+				color: #900;
+				font-size: 1.2em;
+				line-height: 1.4em;
+				margin: 10px 0px;
+			
+			}
+			
+			#main .item {
+				
+				display: block;
+				position: relative;
+				
+				padding: 30px 40px;
+				
+				border-radius: 15px;
+				-o-border-radius: 15px;
+				-moz-border-radius: 15px;
+				-webkit-border-radius: 15px;
+
+				-moz-box-shadow: 0px 0px 20px #eee;
+				-o-box-shadow: 0px 0px 20px #eee;
+				-webkit-box-shadow: 0px 0px 20px #eee;
+				box-shadow: 0px 0px 20px #eee;
+				
+				background-color: #fff;
+				margin-bottom: 20px;
+				font-size: .9em;
+				
+			}
+			
+				#main .item p {
+					
+					margin: 5px 0px;
+					
+				}
+						
+				#main .item a {
+					
+					text-decoration: none;
+					color: #b02;
+					
+				}
+				
+				#main .item ol {
+					
+					list-style-type: none;
+					list-style-position: inside;
+					
+				}
+				
+					#main .item ol li {
+						
+						margin-left: 2em;
+						
+					}
+																			
+				#main .item table {
+
+					width: 100%;
+					margin: 0px;
+
+					-webkit-border-radius: 5px;
+					-moz-border-radius: 5px;
+					border-radius: 5px;
+
+					-moz-box-shadow: 0px 0px 15px #ccc;
+					-o-box-shadow: 0px 0px 15px #ccc;
+					-webkit-box-shadow: 0px 0px 15px #ccc;
+					box-shadow: 0px 0px 15px #ccc;
+
+
+				}
+				
+					#main .item table.docs {
+				
+						font-size: .8em;
+
+					}
+
+					#main .item table.docs td {
+				
+						font-weight: bold;
+						padding-right: 0.2em;
+						min-width: 120px;
+
+					}
+
+					#main .item table.docs td+td {
+				
+						font-weight: normal;
+						padding-right: 0.2em;
+						min-width: 80px;
+
+					}
+
+					#main .item table.docs td+td+td {
+					
+						font-weight: normal;
+						padding-right: 0em;
+						white-space: normal;
+
+					}
+
+					#main .item table td {
+
+						background-color: #eee;
+						line-height: 1.7em;
+
+					}
+
+					#main .item table thead tr td {
+
+						background-color: #c03;
+						color: #fff;
+						font-size: .8em;
+						padding: 5px;
+
+					}
+
+					#main .item table tbody tr td {
+
+						color: #222;
+						vertical-align: top;
+
+					}
+
+					#main .item table tbody tr td.content {
+
+						padding: 10px;
+						font-size: .8em;
+						
+					}
+
+					#main .item table tbody tr td.content strong.title {
+
+						display: inline-block;
+						position: relative;
+						max-width: 140px;
+						overflow: hidden;
+						
+					}
+
+					#main .item table tbody tr td.content span.meta {
+
+						display: block;
+						position: relative;
+						max-width: 140px;
+						overflow: hidden;
+						line-height: 1.4em;
+						font-size: .8em;
+						
+					}
+
+					#main .item table tbody tr td.content span.hate {
+
+						display: block;
+						position: relative;
+						line-height: 1.4em;
+						border: 1px solid #ccc;
+						padding: 10px;
+						text-align: justify;
+						
+					}
+					#main .item table tbody tr:nth-child(odd) td {
+
+						background-color: #f9f9f9;
+
+					}
+
+					#main .item table tbody tr:nth-child(even) td {
+
+						background-color: #f6f6f6;
+
+					}
+
+					#main .item table tr td:first-child {
+
+						padding-left: 5px;
+
+					}
+
+					#main .item table tr td:last-child {
+
+						padding-right: 5px;
+
+					}
+
+					#main .item table tr td.controls {
+
+						width: 80px;
+						text-align: right;
+
+					}
+
+					#main .item table tr td.controls a {
+
+						display: inline-block;
+						width: 20px;
+						height: 20px;
+						overflow: hidden;
+						text-indent: 30px;
+						background-color: #eee;
+
+						-moz-box-shadow: 0px 0px 5px #ccc;
+						-o-box-shadow: 0px 0px 5px #ccc;
+						-webkit-box-shadow: 0px 0px 5px #ccc;
+						box-shadow: 0px 0px 5px #ccc;
+
+						-webkit-border-radius: 3px;
+						-moz-border-radius: 3px;
+						border-radius: 3px;
+
+						vertical-align: bottom;
+						margin: 0px 0px 4px 2px;
+
+						background-image: url(../images/icons/bug.png);
+						background-position: center center;
+						background-repeat: no-repeat;
+
+					}	
+
+						#main .item table tr td.controls a:hover {
+
+							background-color: #c03;
+
+						}
+
+						#main .item table tr td.controls a.edit {
+
+							background-image: url(../images/icons/pencil.png);		
+
+						}
+
+						#main .item table tr td.controls a.delete {
+
+							background-image: url(../images/icons/bin.png);		
+
+						}
+
+						#main .item table tr td.controls a.details {
+
+							background-image: url(../images/icons/zoom.png);		
+
+						}
+
+						#main .item table tr td.controls a.accept {
+
+							background-image: url(../images/icons/accept.png);		
+
+						}
+
+					/* round corners */
+
+					#main .item table thead tr:first-child td:first-child {
+
+						-webkit-border-top-left-radius: 5px;
+						-moz-border-radius-topleft: 5px;
+						border-top-left-radius: 5px;								
+
+					}
+
+					#main .item table thead tr:first-child td:last-child {
+
+						-webkit-border-top-right-radius: 5px;
+						-moz-border-radius-topright: 5px;
+						border-top-right-radius: 5px;								
+
+					}
+
+					#main .item table tbody tr:last-child td:first-child {
+
+						-webkit-border-bottom-left-radius: 5px;
+						-moz-border-radius-bottomleft: 5px;
+						border-bottom-left-radius: 5px;								
+
+					}
+
+					#main .item table tbody tr:last-child td:last-child {
+
+						-webkit-border-bottom-right-radius: 5px;
+						-moz-border-radius-bottomright: 5px;
+						border-bottom-right-radius: 5px;								
+
+					}
+					
+					#main .item code.copyme {
+						
+						display: block;
+						margin: 0px 0px 10px;
+						padding: 10px;
+						line-height: 1em;
+						border: 1px solid #ccc;
+						background-color: #eee;
+						
+					}
+					
+				/* main view */
+				
+				#main .hate-pagination {
+					
+					display: block;
+					position: relative;
+					line-height: 1.2em;
+					padding: 10px 0px;
+					
+				}
+
+					#main .hate-pagination-back {
+					
+						display: block;
+						position: relative;
+						width: 300px;
+						text-align: left;
+						float: left;
+					
+					}
+
+					#main .hate-pagination-forward {
+					
+						display: block;
+						position: relative;
+						width: 300px;
+						text-align: right;
+						float: right;
+					
+					}
+
+				#main .ad-item {
+
+					display: block;
+					position: relative;
+					border-bottom: 1px solid #ccc;
+					line-height: 1.2em;
+					padding: 20px 0px;
+					text-align: center;
+
+				}
+
+				#main .hate-item {
+					
+					display: block;
+					position: relative;
+					border-bottom: 1px solid #ccc;
+					line-height: 1.2em;
+					padding: 10px 0px;
+					
+				}
+				
+					#main .hate-item .hate-item-icon {
+				
+						display: block;
+						position: relative;
+						width: 48px;
+						padding: 5px 0px 5px 10px;
+						float: left;
+				
+					}
+
+					#main .hate-item .hate-item-main {
+					
+						display: block;
+						position: relative;
+						width: 550px;
+						float: right;
+					
+					}
+				
+					#main .hate-item .hate-item-author {
+					
+						display: block;
+						position: relative;
+						font-size: .8em;
+						font-weight: bold;
+						color: #222;
+					
+					}
+
+						#main .hate-item .hate-item-author a {
+						
+							color: #222;
+							
+						}
+				
+					#main .hate-item .hate-item-content {
+					
+						display: block;
+						position: relative;
+						font-size: .8em;
+						font-weight: normal;
+						color: #444;
+					
+					}
+				
+					#main .hate-item .hate-item-meta {
+					
+						display: block;
+						position: relative;
+						font-size: .6em;
+						color: #666;
+					
+					}
+				
+					#main .hate-item .hate-item-meta a {
+
+						color: #666;
+
+					}
+					
+					#main .hate-item .hate-item-meta a.facepalm {
+
+						display: inline-block;
+						padding-left: 20px;
+						line-height: 16px;
+						background: url(../images/icons/facepalm.png) top left no-repeat;
+
+					}
+					
+					#main .hate-item:hover .hate-item-meta a.facepalm {
+
+						background: url(../images/icons/facepalm-hl.png) top left no-repeat;
+						
+					}
+
+					#main .hate-item .hate-item-meta span.godwin {
+
+						display: inline-block;
+						padding-left: 20px;
+						line-height: 16px;
+						background: url(../images/icons/godwinbonus.png) top left no-repeat;
+
+					}					
+					
+				#main .hate-item:hover {
+					
+					background-color: #fce;
+					
+				}
+					
+					#main .hate-item:hover a {
+					
+						color: #c03;
+					
+					}
+					
+				#main .hate-detail {
+
+					display: block;
+					position: relative;
+					border-bottom: 1px solid #ccc;
+					line-height: 1.2em;
+					padding: 10px 0px;
+
+				}
+
+					#main .hate-detail .hate-item-icon {
+
+						display: block;
+						position: relative;
+						width: 48px;
+						padding: 5px 0px;
+						float: left;
+
+					}
+
+					#main .hate-detail .hate-item-main {
+
+						display: block;
+						position: relative;
+
+					}
+
+					#main .hate-detail .hate-item-author {
+
+						display: block;
+						position: relative;
+						font-size: 1.2em;
+						line-height: 50px;
+						font-weight: bold;
+						color: #222;
+						width: 560px;
+						float: right;
+
+					}
+
+					#main .hate-detail .hate-item-content {
+
+						display: block;
+						position: relative;
+						font-size: 1.2em;
+						line-height: 1.4em;
+						font-weight: normal;
+						color: #444;
+						padding: 10px 0px;
+
+					}
+
+					#main .hate-detail .hate-item-meta {
+
+						display: block;
+						position: relative;
+						font-size: .8em;
+						color: #666;
+
+					}
+
+					#main .hate-detail .hate-item-meta a {
+
+						color: #666;
+
+					}
+
+						#main .hate-detail .hate-item-meta a.facepalm {
+
+							display: inline-block;
+							padding-left: 20px;
+							line-height: 16px;
+							background: url(../images/icons/facepalm.png) top left no-repeat;
+
+						}
+					
+						#main .hate-detail:hover .hate-item-meta a.facepalm {
+
+							background: url(../images/icons/facepalm-hl.png) top left no-repeat;
+						
+						}
+						
+						#main .hate-detail .hate-item-meta span.godwin {
+
+							display: inline-block;
+							padding-left: 20px;
+							line-height: 16px;
+							background: url(../images/icons/godwinbonus.png) top left no-repeat;
+
+						}					
+						
+
+				/* special stuff */
+				
+				#main span.redacted {
+					
+					display: inline-block;
+					background-color: #333;
+					color: #c03;
+					line-height: 1.1em;
+					padding: 0px 5px;
+					
+				}
+				
+				#main code.apikey {
+					
+					font-size: 1.1em; 
+					background-color: #a01; 
+					color: #fff; 
+					display: inline-block; 
+					padding: 0px 5px;
+					
+				}
+				
+				#main a.bookmarklet {
+					
+					font-size: 1.4em; 
+					background-color: #ccc; 
+					color: #666; 
+					border: 1px solid #666;
+					display: inline-block; 
+					padding: 5px 10px;					
+					
+					-webkit-border-radius: 10px;
+					-moz-border-radius: 10px;
+					border-radius: 10px;
+					
+				}
+				
+			#main form input[type=text],
+			#main form input[type=password] {
+
+				display: block;
+				position: relative;
+				border: 1px solid #999;
+				font-size: .9em;
+				padding: 3px;
+
+				border-radius: 5px;
+				-o-border-radius: 5px;
+				-moz-border-radius: 5px;
+				-webkit-border-radius: 5px;
+
+			}
+
+			#main form input[type=submit] {
+
+				display: block;
+				position: relative;
+				border: 1px solid #ccc;
+				color: #111;
+				font-size: .9em;
+				padding: 2px;
+
+				border-radius: 5px;
+				-o-border-radius: 5px;
+				-moz-border-radius: 5px;
+				-webkit-border-radius: 5px;
+
+
+			}
+
+			#main form span.input {
+
+				display: inline-block;
+				position: relative;
+				border: 1px solid #999;
+				font-size: .9em;
+				padding: 0px 2px;
+				background-color: #fff;
+				border-radius: 5px;
+				-o-border-radius: 5px;
+				-moz-border-radius: 5px;
+				-webkit-border-radius: 5px;
+
+
+			}
+
+				#main form span.input input[type=text] {
+
+					display: inline-block;
+					position: relative;
+					border-width: 0px;
+					font-size: 1em;
+					padding: 0px;
+					background-color: #fff;
+
+				}
+
+				#main form span.input input[type=text].right {
+
+					text-align: right;
+
+				}
+
+				#main form span.input input.size-2 {
+
+					width: 1.5em !important;
+
+				}
+
+				#main form span.input input.size-4 {
+
+					width: 2.5em !important;
+
+				}
+
+			#main form label {
+
+				display: block;
+				position: relative;
+				font-size: .75em;
+				color: #666;
+
+			}
+
+			#main form textarea {
+
+				display: block;
+				position: relative;
+				border: 1px solid #999;
+				font-size: .9em;
+				font-family: sans-serif;
+				padding: 3px;
+
+				border-radius: 5px;
+				-o-border-radius: 5px;
+				-moz-border-radius: 5px;
+				-webkit-border-radius: 5px;
+
+			}
+
+
+			#main form fieldset {
+
+				border: 1px solid #ccc;
+				padding: 5px;
+				margin: 5px 0px;
+
+			}
+
+				#main form fieldset legend {
+
+					font-size: .75em;
+					color: #666;
+
+				}
+				
+		#sidebar {}
+		
+			#sidebar h3 {
+				
+				display: block;
+				position: relative;
+				color: #fff;
+				font-size: 1.2em;
+				line-height: 1.4em;
+				margin: 5px 0px;
+				
+			}
+
+			#sidebar .item {
+				
+				display: block;
+				position: relative;
+				
+				padding: 0px 10px;
+				
+				border-radius: 10px;
+				-o-border-radius: 10px;
+				-moz-border-radius: 10px;
+				-webkit-border-radius: 10px;
+
+				-moz-box-shadow: 0px 0px 20px #eee;
+				-o-box-shadow: 0px 0px 20px #eee;
+				-webkit-box-shadow: 0px 0px 20px #eee;
+				box-shadow: 0px 0px 20px #eee;
+				
+				background-color: #333;
+				margin-bottom: 20px;
+				font-size: .8em;			
+				
+			}
+			
+				#sidebar .center {
+				
+					text-align: center;
+				
+				}
+			
+				#sidebar .counter-item .content {
+					
+					font-size: 3em;
+					color: #c03;
+					font-weight: bold;
+					line-height: 1em;
+					padding-bottom: 5px;
+					text-align: center;
+					
+				}
+				
+				#sidebar .submenu-item {
+					
+					background-color: #ddd;
+					
+				}
+
+					#sidebar .submenu-item ul {}
+
+						#sidebar .submenu-item ul li {}
+
+							#sidebar .submenu-item ul li+li {
+								
+								border-top: 1px dotted #999;
+								
+							}
+
+							#sidebar .submenu-item ul a {
+								
+								color: #c03;
+								text-decoration: none;
+								text-transform: uppercase;
+								
+							}
+							
+								#sidebar .submenu-item ul a:hover {
+									
+									color: #a01;
+									
+								}
+
+	#foot-container {
+		
+		display: block;
+		position: relative;
+		background: #222;
+		color: #ddd;
+		
+	}
+	
+		#foot {
+			
+			display: block;
+			position: relative;
+			width: 960px;
+			margin: 0px auto;
+			padding: 20px;
+			font-size: .8em;
+			
+		}
+		
+			#foot a {
+				
+				text-decoration: none;
+				color: #c03;
+				
+			}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/current.html	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,385 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+	
+
+	<head>
+		<title>Iro ·  API docs</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta charset="utf-8">
+		<meta name="description" content="">
+		<meta name="keywords" content="">
+		<link rel="shortcut icon" type="image/x-icon" href="images/favicon.png">
+		<link rel="stylesheet" href="css/reset.css" type="text/css" media="screen">
+		<link rel="stylesheet" href="css/960.css" type="text/css" media="screen">
+		<link rel="stylesheet" href="css/style.css" type="text/css" media="screen">
+		<!--[if IE]><link rel="stylesheet" href="css/style-ie.css" type="text/css"  media="screen" /><![endif] -->
+	</head>
+	<body>
+	<div id="head-container">
+		<div id="head">
+			<h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
+			<ul id="menu">
+				<li><a href="index.html" class="menu">Iro</a></li><li><a href="current.html" class="menu active">API Documentation</a></li><li><a href="new.html" class="menu">geplante API Documentation</a></li><li><a href="impressum.html" class="menu">Impressum</a></li>
+			</ul>
+		</div>
+	</div>
+	<div id="content-container">
+		<div id="content" class="container_12">
+			<div id="main" class="grid_9">
+				<h2>API Dokumentation</h2>
+				<div class="item">
+			<p>
+			</p>
+			<ol>
+				<li value="1">1. <a href="#api-intro">Einführung</a></li>
+				<li value="2">2.
+					<a href="#api-interfaces">Interfaces</a>
+					<ol>
+						<li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+					</ol>
+				</li>
+				<li value="3">3.
+					<a href="#api-methods">Methoden</a>
+					<ol>
+						<li value="3.1">3.1 <a href="#method-startSMS">StartSMS</a></li><li value="3.2">3.2 <a href="#method-startFAX">StartFAX</a></li><li value="3.3">3.3 <a href="#method-startMail">StartMail</a></li><li value="3.4">3.4 <a href="#method-status">Status</a></li><li value="3.5">3.5 <a href="#method-stop">Stop</a></li><li value="3.6">3.6 <a href="#method-getProvider">GetProvider</a></li><li value="3.7">3.7 <a href="#method-getDefaultProvider">GetDefaultProvider</a></li>
+					</ol>
+				</li>
+			</ol>
+		</div><div class="item" id="api-intro">
+			<h3>Einführung</h3>
+			<p>
+				Die Iro API enthält Funktion, die für den Massenversand nützlich sind.
+			</p>
+		</div><div class="item" id="api-interfaces">
+			<h3>Interfaces</h3>
+			<p>
+				Die Iro API stellt zur Zeit nur ein Interfaces bereit.
+			</p>
+			<div class="item" id="interface-xmlrpc">
+				<h4>XML-RPC</h4>
+				<p>
+				Interface-URI: <code>https://<em>&lt;benutzer&gt;</em>:<em>&lt;passwort&gt;</em>@localhost:8000</code>
+				</p>
+				<p>
+					Die aufgerufene Methode wird dabei im <code>&lt;methodName /&gt;</code> übergeben.
+				</p>
+			</div>
+		</div><div class="item" id="api-methods">
+			<h3>Methoden</h3>
+			<div class="item" id="method-startSMS">
+				<h4>StartSMS</h4>
+				<p><code>startSMS</code></p>
+				<p>Versendet eine SMS.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>message</td>
+							<td>string</td>
+							<td> Nachricht</td>
+						</tr><tr>
+							<td>recipients</td>
+							<td>list</td>
+							<td> eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)</td>
+						</tr><tr>
+							<td>provider</td>
+							<td>string</td>
+							<td> Provider über den geschickt werden soll;
+default - verschickt über den Standardprovider</td>
+						</tr>
+					</tbody>
+				</table>
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>id</td>
+							<td>hash</td>
+							<td> Die ID des Auftrages</td>
+						</tr>
+					</tbody>
+				</table>
+			</div><div class="item" id="method-startFAX">
+				<h4>StartFAX</h4>
+				<p><code>startFAX</code></p>
+				<p>Versendet ein FAX.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>subject</td>
+							<td>string</td>
+							<td> der Betreff</td>
+						</tr><tr>
+							<td>fax</td>
+							<td>string</td>
+							<td> das pdf base64 kodiert</td>
+						</tr><tr>
+							<td>recipients</td>
+							<td>list</td>
+							<td> eine Liste von Emfänger-Nummern (gemäß ITU-T E.123)</td>
+						</tr><tr>
+							<td>provider</td>
+							<td>string</td>
+							<td> Provider über den geschickt werden soll;
+default - verschickt über den Standardprovider</td>
+						</tr>
+					</tbody>
+				</table>
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>id</td>
+							<td>hash</td>
+							<td> Die ID des Auftrages</td>
+						</tr>
+					</tbody>
+				</table>
+			</div><div class="item" id="method-startMail">
+				<h4>StartMail</h4>
+				<p><code>startMail</code></p>
+				<p>Versendet eine Email.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>subject</td>
+							<td>string</td>
+							<td> der Betreff</td>
+						</tr><tr>
+							<td>body</td>
+							<td>string</td>
+							<td> der Email Body</td>
+						</tr><tr>
+							<td>recipients</td>
+							<td>list</td>
+							<td> eine Liste von Emailadressen</td>
+						</tr><tr>
+							<td>frm</td>
+							<td>string</td>
+							<td> Die Absender Emailadresse</td>
+						</tr><tr>
+							<td>provider</td>
+							<td>string</td>
+							<td> Provider über den geschickt werden soll;
+default - verschickt über den Standardprovider</td>
+						</tr>
+					</tbody>
+				</table>
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>id</td>
+							<td>hash</td>
+							<td> Die ID des Auftrages</td>
+						</tr>
+					</tbody>
+				</table>
+			</div><div class="item" id="method-status">
+				<h4>Status</h4>
+				<p><code>status</code></p>
+				<p>Gibt den aktuellen Status eines Auftrages zurück.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>id</td>
+							<td>hash</td>
+							<td> Eine Auftragsnummer
+default - alle Aufträge ausgeben</td>
+						</tr><tr>
+							<td>detailed</td>
+							<td>boolean</td>
+							<td> Details ausgeben
+default - False</td>
+						</tr>
+					</tbody>
+				</table>
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>jobs</td>
+							<td>list</td>
+							<td> Eine Liste der Aufträge.</td>
+						</tr><tr>
+							<td>job.name</td>
+							<td>string</td>
+							<td> Angebener Name</td>
+						</tr><tr>
+							<td>job.status</td>
+							<td>string</td>
+							<td> Status des Auftrages</td>
+						</tr>
+					</tbody>
+				</table>
+			</div><div class="item" id="method-stop">
+				<h4>Stop</h4>
+				<p><code>stop</code></p>
+				<p>Stoppt den angegeben Auftrag.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>id</td>
+							<td>hash</td>
+							<td> Eine Auftragsnummer</td>
+						</tr>
+					</tbody>
+				</table>
+			</div><div class="item" id="method-getProvider">
+				<h4>GetProvider</h4>
+				<p><code>getProvider</code></p>
+				<p>Gibt eine Liste aller verfügbaren Provider zurück.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>typ</td>
+							<td>string</td>
+							<td> Der Typ zu dem die Providerloste ausgeben werden soll
+Einer der Liste ["sms","fax","mail"]</td>
+						</tr>
+					</tbody>
+				</table>
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>providerlist</td>
+							<td>list</td>
+							<td> Eine Liste aller möglichen Provider</td>
+						</tr>
+					</tbody>
+				</table>
+			</div><div class="item" id="method-getDefaultProvider">
+				<h4>GetDefaultProvider</h4>
+				<p><code>getDefaultProvider</code></p>
+				<p>Gibt den Standardprovider zurück.</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>typ</td>
+							<td>string</td>
+							<td> Der Typ zu dem die Providerloste ausgeben werden soll
+Einer der Liste ["sms","fax","mail"]</td>
+						</tr>
+					</tbody>
+				</table>
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>
+					</thead>
+					<tbody>
+						<tr>
+							<td>provider</td>
+							<td>string</td>
+							<td> Der Standardprovider für den angeben Typ</td>
+						</tr>
+					</tbody>
+				</table>
+			</div>
+		</div>
+			</div>
+			<div class="clear"></div>
+		</div>
+	</div>
+	<div id="foot-container">
+		<div id="foot">
+			<p>© 2010-2011 <a href="impressum.html">Netzguerilla.net</a>.</p>
+		</div>
+	</div>
+	</body>
+</html>
\ No newline at end of file
Binary file doc/images/netzguerilla-3.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/impressum.html	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,62 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+	
+
+	<head>
+		<title>Iro ·  Impressum</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta charset="utf-8">
+		<meta name="description" content="">
+		<meta name="keywords" content="">
+		<link rel="shortcut icon" type="image/x-icon" href="images/favicon.png">
+		<link rel="stylesheet" href="css/reset.css" type="text/css" media="screen">
+		<link rel="stylesheet" href="css/960.css" type="text/css" media="screen">
+		<link rel="stylesheet" href="css/style.css" type="text/css" media="screen">
+		<!--[if IE]><link rel="stylesheet" href="css/style-ie.css" type="text/css"  media="screen" /><![endif] -->
+	</head>
+	<body>
+	<div id="head-container">
+		<div id="head">
+			<h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
+			<ul id="menu">
+				<li><a href="index.html" class="menu">Iro</a></li><li><a href="current.html" class="menu">API Documentation</a></li><li><a href="new.html" class="menu">geplante API Documentation</a></li><li><a href="impressum.html" class="menu active">Impressum</a></li>
+			</ul>
+		</div>
+	</div>
+	<div id="content-container">
+		<div id="content" class="container_12">
+			<div id="main" class="grid_9">
+				<h2>Impressum</h2>
+				<div class="item">
+			<h3>Kontakt</h3>
+			<p>
+				<strong>Netzguerilla.net</strong> Clerc Knauß Vollnhals GbR<br>
+				Manteuffelstraße 40<br>
+				10997 Berlin
+			</p>
+			<p>
+				WWW: <a href="https://netzguerilla.net/">netzguerilla.net</a><br>
+			</p>
+			<p>
+				E-Mail: <a href="mailto:iro@netzguerilla.net">iro@netzguerilla.net</a><br>
+			</p>
+			<p>
+				Telefon: <a href="tel:+493069201075">+49 30 69201075</a><br>
+			</p>
+			<h3>Inhaltlich verantwortlich</h3>
+			<p>
+				<small>Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV bzw. §5 TMG sowie beauftragt mit dem Jugendschutz gemäß TMG, JMStV sowie GjSM:</small><br>
+				<strong>Sandro Knauß</strong>, Anschrift wie oben, <a href="mailto:iro@netzguerilla.net">iro@netzguerilla.net</a>
+			</p>
+		</div>
+			</div>
+			<div class="clear"></div>
+		</div>
+	</div>
+	<div id="foot-container">
+		<div id="foot">
+			<p>© 2010-2011 <a href="impressum.html">Netzguerilla.net</a>.</p>
+		</div>
+	</div>
+	</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/index.html	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+	
+
+	<head>
+		<title>Iro ·  work in progress</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta charset="utf-8">
+		<meta name="description" content="">
+		<meta name="keywords" content="">
+		<link rel="shortcut icon" type="image/x-icon" href="images/favicon.png">
+		<link rel="stylesheet" href="css/reset.css" type="text/css" media="screen">
+		<link rel="stylesheet" href="css/960.css" type="text/css" media="screen">
+		<link rel="stylesheet" href="css/style.css" type="text/css" media="screen">
+		<!--[if IE]><link rel="stylesheet" href="css/style-ie.css" type="text/css"  media="screen" /><![endif] -->
+	</head>
+	<body>
+	<div id="head-container">
+		<div id="head">
+			<h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
+			<ul id="menu">
+				<li><a href="index.html" class="menu active">Iro</a></li><li><a href="current.html" class="menu">API Documentation</a></li><li><a href="new.html" class="menu">geplante API Documentation</a></li><li><a href="impressum.html" class="menu">Impressum</a></li>
+			</ul>
+		</div>
+	</div>
+	<div id="content-container">
+		<div id="content" class="container_12">
+			<div id="main" class="grid_9">
+				<h2>Iro</h2>
+				<div class="item">
+			<p>
+				Iro ist toll, ist aber noch nicht fertig.
+			</p>
+		</div>
+			</div>
+			<div class="clear"></div>
+		</div>
+	</div>
+	<div id="foot-container">
+		<div id="foot">
+			<p>© 2010-2011 <a href="impressum.html">Netzguerilla.net</a>.</p>
+		</div>
+	</div>
+	</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/new.html	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,1036 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+	
+
+	<head>
+		<title>Iro ·  api docs new</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+		<meta charset="utf-8">
+		<meta name="description" content="">
+		<meta name="keywords" content="">
+		<link rel="shortcut icon" type="image/x-icon" href="images/favicon.png">
+		<link rel="stylesheet" href="css/reset.css" type="text/css" media="screen">
+		<link rel="stylesheet" href="css/960.css" type="text/css" media="screen">
+		<link rel="stylesheet" href="css/style.css" type="text/css" media="screen">
+		<!--[if IE]><link rel="stylesheet" href="css/style-ie.css" type="text/css"  media="screen" /><![endif] -->
+	</head>
+	<body>
+	<div id="head-container">
+		<div id="head">
+			<h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
+			<ul id="menu">
+				<li><a href="index.html" class="menu">Iro</a></li><li><a href="current.html" class="menu">API Documentation</a></li><li><a href="new.html" class="menu active">geplante API Documentation</a></li><li><a href="impressum.html" class="menu">Impressum</a></li>
+			</ul>
+		</div>
+	</div>
+	<div id="content-container">
+		<div id="content" class="container_12">
+			<div id="main" class="grid_9">
+				<h2>geplante API Dokumentation</h2>
+				<div class="item">
+			<p>
+			</p>
+			<ol>
+				<li value="1">1. <a href="#api-intro">Einführung</a></li>
+				<li value="2">2.
+				<a href="#api-interfaces">Interfaces</a>
+				<ol>
+					<li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+					<li value="2.2">2.2 <a href="#interface-xml">XML</a></li>
+					<li value="2.3">2.3 <a href="#interface-json">JSON</a></li>
+					<li value="2.4">2.4 <a href="#interface-jsonp">JSONP</a></li>
+					<li value="2.5">2.5 <a href="#interface-php">PHP</a></li>
+				</ol>
+				</li>
+				<li value="3">3.
+				<a href="#api-methods">Methoden</a>
+				<ol>
+					<li value="3.1">3.1 <a href="#method-route">Route</a></li>
+					<li value="3.2">3.2 <a href="#method-dist">Dist</a></li>
+					<li value="3.3">3.3 <a href="#method-geocode">Geocode</a></li>
+					<li value="3.4">3.4 <a href="#method-sms">SMS</a></li>
+					<li value="3.5">3.5 <a href="#method-bank">Bank</a></li>
+					<li value="3.6">3.6 <a href="#method-bank">Boxcar</a></li>
+					<li value="3.7">3.7 <a href="#method-postcode-match">Postcode-Match</a></li>
+					<li value="3.8">3.8 <a href="#method-postcode-shape">Postcode-Shape</a></li>
+				</ol>
+				</li>
+				<li value="4">4. <a href="#api-errors">Fehlermeldungen</a></li>
+			</ol>
+		</div><div class="item" id="api-intro">
+			<h3>Einführung</h3>
+			<p>
+				Die Mesngr API enthält viele Funktionen, die von Fahrradkurierdiensten benötigt werden.
+			</p>
+		</div><div class="item" id="api-interfaces">
+			<h3>Interfaces</h3>
+			<p>
+				Die Mesngr API stellt verschiedene Interfaces bereit, die unterschiedlich angesprochen werden, aber das selbe tun.
+			</p>
+			<div class="item" id="interface-xmlrpc">
+				<h4>XML-RPC</h4>
+				<p>
+					Interface-URI: <code>http://api.mesngr.de/xmlrpc</code>
+				</p>
+				<p>
+					Die aufgerufene Methode wird dabei im <code>&lt;methodName /&gt;</code> übergeben.
+				</p>
+				<p>
+					Das XML-RPC Interface nimmt die Parameter der aufgerufenen Methode als <code>&lt;struct /&gt;</code> inerhalb des ersten <code>&lt;param /&gt;</code> entgegen, alle weiteren <code>&lt;param /&gt;</code>s werden ignoriert.
+				</p>
+				<p>
+					Zeichen außerhalb des ASCII-Sets sind als HTML Entities zu übergeben.
+				</p>
+			</div>
+			<div class="item" id="interface-xml">
+				<h4>XML</h4>
+				<p>
+					Interface-URI: <code>http://api.mesngr.de/xml/<em>&lt;methode&gt;</em></code>
+				</p>
+				<p>
+					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+				</p>
+				<p>
+					Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
+				</p>
+				<p>
+					Die Ausgabe erfolgt als XML Markup.
+				</p>
+			</div>
+			<div class="item" id="interface-json">
+				<h4>JSON</h4>
+				<p>
+					Interface-URI: <code>http://api.mesngr.de/json/<em>&lt;methode&gt;</em></code>
+				</p>
+				<p>
+					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+				</p>
+				<p>
+					Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> oder JSON-Objekt übergeben werden.
+				</p>
+				<p>
+					Die Ausgabe erfolgt als JSON-Objekt.
+				</p>
+			</div>
+			<div class="item" id="interface-json">
+				<h4>JSONP</h4>
+				<p>
+					Interface-URI: <code>http://api.mesngr.de/jsonp/<em>&lt;methode&gt;</em>?callback=&lt;callback&gt;</code>
+				</p>
+				<p>
+					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+				</p>
+				<p>
+					Der Name für die Callback-Methode wird als Parameter Callback übergeben.
+				</p>
+				<p>
+					Parameter können via HTTP per GET im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
+				</p>
+				<p>
+					Die Ausgabe erfolgt als Javascript-Funktionsaufruf mit einem JSON-Objekt als Parameter.
+				</p>
+			</div>
+			<div class="item" id="interface-php">
+				<h4>PHP</h4>
+				<p>
+					Interface-URI: <code>http://api.mesngr.de/php/<em>&lt;methode&gt;</em></code>
+				</p>
+				<p>
+					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+				</p>
+				<p>
+					Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
+				</p>
+				<p>
+					Die Ausgabe erfolgt als serialisiertes PHP-Objekt.
+				</p>
+			</div>
+		</div><div class="item" id="api-methods">
+		<h3>Methoden</h3>
+		<div class="item" id="method-route">
+			<h4>Route</h4>
+			<p><code>route</code></p>
+			<p>
+				Diese Methode ermittelt die Routing-Entfernung zwischen zwei Koordinaten.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>type</td>
+						<td>enum[car,bicycle,foot]</td>
+						<td>Die gewünschte Routing-Methode</td>
+					</tr>
+					<tr>
+						<td>flon</td>
+						<td>float</td>
+						<td>Der Längengrad des Startpunktes</td>
+					</tr>
+					<tr>
+						<td>flat</td>
+						<td>float</td>
+						<td>Der Breitengrad des Startpunktes</td>
+					</tr>
+					<tr>
+						<td>tlon</td>
+						<td>float</td>
+						<td>Der Längengrad des Zielpunktes</td>
+					</tr>
+					<tr>
+						<td>tlat</td>
+						<td>float</td>
+						<td>Der Breitengrad des Zielpunktes</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+					<tr>
+						<td>distance</td>
+						<td>float</td>
+						<td>Die ermittelte Routing-Distanz in km</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="item" id="method-dist">
+			<h4>Dist</h4>
+			<p><code>dist</code></p>
+			<p>
+				Diese Methode ermittelt die direkte Entfernung zwischen zwei Koordinaten.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>flon</td>
+						<td>float</td>
+						<td>Der Längengrad des Startpunktes</td>
+					</tr>
+					<tr>
+						<td>flat</td>
+						<td>float</td>
+						<td>Der Breitengrad des Startpunktes</td>
+					</tr>
+					<tr>
+						<td>tlon</td>
+						<td>float</td>
+						<td>Der Längengrad des Zielpunktes</td>
+					</tr>
+					<tr>
+						<td>tlat</td>
+						<td>float</td>
+						<td>Der Breitengrad des Zielpunktes</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+					<tr>
+						<td>distance</td>
+						<td>float</td>
+						<td>Die ermittelte Routing-Distanz in km</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="item" id="method-geocode">
+			<h4>Geocode</h4>
+			<p><code>geocode</code></p>
+			<p>
+				Ermittelt die Koordinaten zu einer Adresse. Diese Methode ist Kostenpflichtig.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>type</td>
+						<td>enum[fast, complete]</td>
+						<td>Die Eingabemethode. Im Modus <em>fast</em> wird der Parameter <code>number</code> an den Parameter <code>street</code> angehängt sowie der Parameter <code>postcode</code> vor den Parameter <code>city</code>; Die Parameter <code>postcode</code> und <code>number</code> werden dann ignoriert.</td>
+					</tr>
+					<tr>
+						<td>street</td>
+						<td>str</td>
+						<td>Der Straßenname der Adresse</td>
+					</tr>
+					<tr>
+						<td>number</td>
+						<td>str</td>
+						<td>Die Hausnummer der Adresse</td>
+					</tr>
+					<tr>
+						<td>postcode</td>
+						<td>str</td>
+						<td>Die Postleitzahl der Adresse</td>
+					</tr>
+					<tr>
+						<td>city</td>
+						<td>str</td>
+						<td>Die Stadt der Adresse</td>
+					</tr>
+					<tr>
+						<td>country</td>
+						<td>str</td>
+						<td>Das Land der Adresse, ISO 3166</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+					<tr>
+						<td>stage</td>
+						<td>enum[1,2,3]</td>
+						<td>
+							Grad des Erfolges des Geocodings:<br>
+							1 → Es stehen mehrere mögliche Adressen zur Auswahl.<br>
+							2 → Eine mögliche Adresse als Korrekturvorschlag.<br>
+							3 → Die Adresse konnte verifiziert und zugehörige Geokoordinaten ermittelt werden.
+						</td>
+					</tr>
+					<tr>
+						<td>data</td>
+						<td>array</td>
+						<td>
+							Die ermittelten Adressdaten
+						</td>
+					</tr>
+					<tr>
+						<td>data[i]</td>
+						<td>array</td>
+						<td>
+							Ein ermittelter Adressdatensatz
+						</td>
+					</tr>
+					<tr>
+						<td>data[i][street]</td>
+						<td>str</td>
+						<td>Name der Straße</td>
+					</tr>
+					<tr>
+						<td>data[i][nr]</td>
+						<td>str</td>
+						<td>Hausnummer</td>
+					</tr>
+					<tr>
+						<td>data[i][fragment]</td>
+						<td>str</td>
+						<td>Hausnummernzusatz (z.B. <em>a</em> bei <em>12a</em>)</td>
+					</tr>
+					<tr>
+						<td>data[i][postcode]</td>
+						<td>str</td>
+						<td>Postleitzahl</td>
+					</tr>
+					<tr>
+						<td>data[i][city]</td>
+						<td>str</td>
+						<td>Ort</td>
+					</tr>
+					<tr>
+						<td>data[i][country]</td>
+						<td>str[2]</td>
+						<td>Land (gemäß ISO 3166)</td>
+					</tr>
+					<tr>
+						<td>data[i][accuracy]</td>
+						<td>int</td>
+						<td>Genauigkeit (Genau &gt; Ungenau)</td>
+					</tr>
+					<tr>
+						<td>data[i][lat]</td>
+						<td>float</td>
+						<td>Breitengrad</td>
+					</tr>
+					<tr>
+						<td>data[i][lon]</td>
+						<td>float</td>
+						<td>Längengrad</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="item" id="method-sms">
+			<h4>SMS</h4>
+			<p><code>sms</code></p>
+			<p>
+				Versendet eine SMS-Nachricht. Diese Methode ist kostenpflichtig.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>from</td>
+						<td>str[11]|tel[16]</td>
+						<td>Der gewünschte Absender (optional)</td>
+					</tr>
+					<tr>
+						<td>to</td>
+						<td>tel[15]</td>
+						<td>Emfänger-Nummer (gemäß ITU-T E.123)</td>
+					</tr>
+					<tr>
+						<td>ref</td>
+						<td>str</td>
+						<td>Referenz für Antworten</td>
+					</tr>
+					<tr>
+						<td>callback</td>
+						<td>str</td>
+						<td>Callback-URL für SMS-Antworten. Noch nicht implementiert.</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="item" id="method-bank">
+			<h4>Bank</h4>
+			<p><code>bank</code></p>
+			<p>
+				Prüft Bankdaten auf Plausibilität.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>country</td>
+						<td>[de]</td>
+						<td>Das Land des Bankdatenformates</td>
+					</tr>
+					<tr>
+						<td>bank</td>
+						<td>int[8]</td>
+						<td>Die Bankleitzahl</td>
+					</tr>
+					<tr>
+						<td>account</td>
+						<td>int[10]</td>
+						<td>Die Kontonummer (optional)</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+					<tr>
+						<td>bank</td>
+						<td>array</td>
+						<td>Der Bankdatensatz</td>
+					</tr>
+					<tr>
+						<td>bank[id]</td>
+						<td>int[8]</td>
+						<td>Die Bankleitzahl</td>
+					</tr>
+					<tr>
+						<td>bank[name]</td>
+						<td>str</td>
+						<td>Name der Bank</td>
+					</tr>
+					<tr>
+						<td>bank[city]</td>
+						<td>str</td>
+						<td>Stadt</td>
+					</tr>
+					<tr>
+						<td>bank[bic]</td>
+						<td>str</td>
+						<td>Der BIC der Bank</td>
+					</tr>
+					<tr>
+						<td>account</td>
+						<td>array</td>
+						<td>Der Kontodatensatz</td>
+					</tr>
+					<tr>
+						<td>account[id]</td>
+						<td>int[10]</td>
+						<td>Die Kontonummer</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="item" id="method-bank">
+			<h4>Boxcar</h4>
+			<p><code>boxcar</code></p>
+			<p>
+				Sendet eine Push-Notification via Boxcar. Ist der Boxcar-user nicht subskribiert, wird statt der Nachricht eine Subskriptions-Anfrage gesendet.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>to</td>
+						<td>str</td>
+						<td>E-Mail-Adresse des Boxcar-Accounts</td>
+					</tr>
+					<tr>
+						<td>from</td>
+						<td>str</td>
+						<td>Absender</td>
+					</tr>
+					<tr>
+						<td>message</td>
+						<td>str</td>
+						<td>Die Nachricht</td>
+					</tr>
+					<tr>
+						<td>url</td>
+						<td>str</td>
+						<td>Die URL die aufgerufen werden soll</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="item" id="method-postcode-match">
+			<h4>Postcode-Match</h4>
+			<p><code>postcodematch</code></p>
+			<p>
+				Liefert die Schwerpunkt-Koordinaten aller Postleizahlengebiete innerhalb eines Bereiches.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>bbox_n</td>
+						<td>float</td>
+						<td>Maximale Latitude</td>
+					</tr>
+					<tr>
+						<td>bbox_s</td>
+						<td>float</td>
+						<td>Minimale Latitude</td>
+					</tr>
+					<tr>
+						<td>bbox_e</td>
+						<td>float</td>
+						<td>Maximale Longitude</td>
+					</tr>
+					<tr>
+						<td>bbox_w</td>
+						<td>float</td>
+						<td>Minimale Longitude</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+					<tr>
+						<td>postcodes</td>
+						<td>array</td>
+						<td>Ergebnisse</td>
+					</tr>
+					<tr>
+						<td>postcodes[i]</td>
+						<td>array</td>
+						<td>Ergebnis</td>
+					</tr>
+					<tr>
+						<td>postcodes[i][postcode]</td>
+						<td>str</td>
+						<td>Postleitzahl</td>
+					</tr>
+					<tr>
+						<td>postcodes[i][lat]</td>
+						<td>float</td>
+						<td>Latitude des Schwerpunktes</td>
+					</tr>
+					<tr>
+						<td>postcodes[i][lon]</td>
+						<td>float</td>
+						<td>Longitude des Schwerpunktes</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="item" id="method-postcode-shape">
+			<h4>Postcode-Shape</h4>
+			<p><code>postcodeshape</code></p>
+			<p>
+				Gibt eine Näherung an die geografische Definition eines Postleitzahlengebietes aus.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>postcode</td>
+						<td>str</td>
+						<td>Die Postleitzahl des Gebietes</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+					<tr>
+						<td>postcode</td>
+						<td>str</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>center</td>
+						<td>array</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>center[lat]</td>
+						<td>flaot</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>center[lon]</td>
+						<td>flaot</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>bbox</td>
+						<td>array</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>bbox[n]</td>
+						<td>float</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>bbox[s]</td>
+						<td>float</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>bbox[w]</td>
+						<td>float</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>bbox[e]</td>
+						<td>float</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>shape</td>
+						<td>array</td>
+						<td>Alle Shapes dieses Postleitzahlengebietes</td>
+					</tr>
+					<tr>
+						<td>shape[i]</td>
+						<td>array</td>
+						<td>Ein Shape des Postleitzahlengebietes</td>
+					</tr>
+					<tr>
+						<td>shape[i][j]</td>
+						<td>array</td>
+						<td>Ein Punkt des Shapes</td>
+					</tr>
+					<tr>
+						<td>shape[i][j][lat]</td>
+						<td>array</td>
+						<td>Die Latitude des Punktes</td>
+					</tr>
+					<tr>
+						<td>shape[i][j][lon]</td>
+						<td>array</td>
+						<td>Die Longitude des Punktes</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+	</div><div class="item" id="api-errors">
+		<h3>Fehlercode</h3>
+		<p>
+			Wenn der Ausgabeparameter <code>status</code> einen Fehler indiziert, werden alle weiteren Ausgabeparameter ersetzt durch die Parameter <code>code</code> und <code>msg</code>.
+		</p>
+		<table class="docs">
+			<thead>
+				<tr>
+					<td>Parameter</td>
+					<td>Typ</td>
+					<td>Beschreibung</td>
+				</tr>
+			</thead>
+			<tbody>
+				<tr>
+					<td>status</td>
+					<td>bool</td>
+					<td>Fehlerindikator</td>
+				</tr>
+				<tr>
+					<td>code</td>
+					<td>int[3]</td>
+					<td>Fehlercode</td>
+				</tr>
+				<tr>
+					<td>msg</td>
+					<td>str</td>
+					<td>Fehlermeldung</td>
+				</tr>
+				<tr>
+					<td>result</td>
+					<td></td>
+					<td>Optionale weitere Daten</td>
+				</tr>
+			</tbody>
+		</table>
+		<h4>Fehlercodes</h4>
+		<table class="docs">
+			<thead>
+				<tr>
+					<td>Code</td>
+					<td>Bedeutung</td>
+				</tr>
+			</thead>
+			<tbody>
+				<tr>
+					<td>900</td>
+					<td>Die aufgerufene Methode existiert nicht</td>
+				</tr>
+				<tr>
+					<td>901</td>
+					<td>Der API-Key ist ungültig</td>
+				</tr>
+				<tr>
+					<td>902</td>
+					<td>Fehler in externer API</td>
+				</tr>
+				<tr>
+					<td>903</td>
+					<td>Encoding-Problem: Ein Nicht-UTF-8-Zeichen hat den Parser gestoppt</td>
+				</tr>
+				<tr>
+					<td>904</td>
+					<td>Es wurden keine gültigen JSON-Daten im POST-Request gefunden</td>
+				</tr>
+				<tr>
+					<td>910</td>
+					<td>Ungültige Eingabemethode</td>
+				</tr>
+				<tr>
+					<td>911</td>
+					<td>Die eingegebenen Daten reichen nicht aus, um die Adresse zu bestimmen</td>
+				</tr>
+				<tr>
+					<td>912</td>
+					<td>Die Adresse wurde nicht gefunden</td>
+				</tr>
+				<tr>
+					<td>913</td>
+					<td>Für diese Adresse wurden keine Koordinaten gefunden</td>
+				</tr>
+				<tr>
+					<td>914</td>
+					<td>Die Koordinaten für diese Adresse sind nicht eindeutig</td>
+				</tr>
+				<tr>
+					<td>921</td>
+					<td>Ungültige Koordinaten</td>
+				</tr>
+				<tr>
+					<td>922</td>
+					<td>Keine Route gefunden</td>
+				</tr>
+				<tr>
+					<td>930</td>
+					<td>Keine Verbindung zum Gateway</td>
+				</tr>
+				<tr>
+					<td>931</td>
+					<td>Empfänger fehlerhaft</td>
+				</tr>
+				<tr>
+					<td>932</td>
+					<td>Absenderkennung zu lang</td>
+				</tr>
+				<tr>
+					<td>933</td>
+					<td>Nachrichtentext zu lang</td>
+				</tr>
+				<tr>
+					<td>934</td>
+					<td>Messagetyp nicht korrekt</td>
+				</tr>
+				<tr>
+					<td>935</td>
+					<td>Falscher SMS-Typ</td>
+				</tr>
+				<tr>
+					<td>936</td>
+					<td>Fehler bei Login</td>
+				</tr>
+				<tr>
+					<td>937</td>
+					<td>Guthaben zu gering</td>
+				</tr>
+				<tr>
+					<td>938</td>
+					<td>Netz wird von Route nicht unterstützt</td>
+				</tr>
+				<tr>
+					<td>939</td>
+					<td>Feature nicht über diese Route möglich</td>
+				</tr>
+				<tr>
+					<td>940</td>
+					<td>Ungültige BLZ</td>
+				</tr>
+				<tr>
+					<td>941</td>
+					<td>Ungültige Kontonummer</td>
+				</tr>
+				<tr>
+					<td>942</td>
+					<td>Ungültiges Land</td>
+				</tr>
+				<tr>
+					<td>945</td>
+					<td>Ungültiger Empfänger</td>
+				</tr>
+				<tr>
+					<td>946</td>
+					<td>Keine Nachricht angegeben</td>
+				</tr>
+				<tr>
+					<td>947</td>
+					<td>Der Empfänger ist nicht subskribiert</td>
+				</tr>
+				<tr>
+					<td>948</td>
+					<td>Der Empfänger hat den Dienst abgeschaltet</td>
+				</tr>
+				<tr>
+					<td>950</td>
+					<td>Die Postleitzahl ist ungültig.</td>
+				</tr>
+				<tr>
+					<td>951</td>
+					<td>Für diese Postleitzahl gibt es keine Shapes.</td>
+				</tr>
+				<tr>
+					<td>952</td>
+					<td>In diesem Bereich wurden keine Postleitzahlen gefunden.</td>
+				</tr>
+				<tr>
+					<td>953</td>
+					<td>Dieser Bereich enthält zu viele Postleitzahlen.</td>
+				</tr>
+				<tr>
+					<td>999</td>
+					<td>Unbekannter Fehler</td>
+				</tr>
+			</tbody>
+		</table>
+	</div>
+			</div>
+			<div class="clear"></div>
+		</div>
+	</div>
+	<div id="foot-container">
+		<div id="foot">
+			<p>© 2010-2011 <a href="impressum.html">Netzguerilla.net</a>.</p>
+		</div>
+	</div>
+	</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/current.html	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,100 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:xi="http://www.w3.org/2001/XInclude"
+	xmlns:py="http://genshi.edgewall.org/">
+	<xi:include href="layout.tmpl" />
+	<head>
+		<title>API docs</title>
+	</head>
+	<body>
+		<title>API Dokumentation</title>
+		<div class="item">
+			<p>
+				
+			</p>
+			<ol>
+				<li value="1">1. <a href="#api-intro">Einführung</a></li>
+				<li value="2">2. 
+					<a href="#api-interfaces">Interfaces</a>
+					<ol>
+						<li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+					</ol>
+				</li>
+				<li value="3">3. 
+					<a href="#api-methods">Methoden</a>
+					<ol>
+						<li py:for="(key,method) in enumerate(methods)" value="3.${key+1}">3.${key+1} <a href="#method-${method.name}">${method.title}</a></li>
+					</ol>				
+				</li>
+			</ol>
+		</div>
+		<div class="item" id="api-intro">
+			<h3>Einführung</h3>
+			<p>
+				Die Iro API enthält Funktion, die für den Massenversand nützlich sind.
+			</p>
+		</div>
+		<div class="item" id="api-interfaces">
+			<h3>Interfaces</h3>
+			<p>
+				Die Iro API stellt zur Zeit nur ein Interfaces bereit.
+			</p>
+			<div class="item" id="interface-xmlrpc">
+				<h4>XML-RPC</h4>
+				<p>
+				Interface-URI: <code>https://<em>&lt;benutzer&gt;</em>:<em>&lt;passwort&gt;</em>@localhost:8000</code>
+				</p>
+				<p>
+					Die aufgerufene Methode wird dabei im <code>&lt;methodName /&gt;</code> übergeben.
+				</p>
+			</div>
+		</div>
+		<div class="item" id="api-methods">
+			<h3>Methoden</h3>
+			<div py:for="method in methods" class="item" id="method-${method.name}">
+				<h4>${method.title}</h4>
+				<p><code>${method.name}</code></p>
+				<p py:content="method.description">
+					Diese Methode at bis jetzt noch keine Beschreibung.
+				</p>
+				<h5>Parameter</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>					
+					</thead>
+					<tbody>
+						<tr py:for="arg in method.args">
+							<td>${arg.name}</td>
+							<td>${arg.typ}</td>
+							<td>${arg.description}</td>
+						</tr>
+					</tbody>
+				</table>
+				<py:if test="method.rets">
+				<h5>Ausgabe</h5>
+				<table class="docs">
+					<thead>
+						<tr>
+							<td>Parameter</td>
+							<td>Typ</td>
+							<td>Beschreibung</td>
+						</tr>					
+					</thead>
+					<tbody>
+						<tr py:for="arg in method.rets">
+							<td>${arg.name}</td>
+							<td>${arg.typ}</td>
+							<td>${arg.description}</td>
+						</tr>
+					</tbody>
+				</table>	
+				</py:if>
+			</div>
+		</div>
+	</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/impressum.html	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:xi="http://www.w3.org/2001/XInclude"
+	xmlns:py="http://genshi.edgewall.org/">
+	<xi:include href="layout.tmpl" />
+	<head>
+		<title>Impressum</title>
+	</head>
+	<body>
+		<title>Impressum</title>
+
+		<div class="item">
+			<h3>Kontakt</h3>
+			<p>
+				<strong>Netzguerilla.net</strong> Clerc Knauß Vollnhals GbR<br />
+				Manteuffelstraße 40<br />
+				10997 Berlin
+			</p>
+			<p>
+				WWW: <a href="https://netzguerilla.net/">netzguerilla.net</a><br />			
+			</p>
+			<p>
+				E-Mail: <a href="mailto:iro@netzguerilla.net">iro@netzguerilla.net</a><br />			
+			</p>
+			<p>
+				Telefon: <a href="tel:+493069201075">+49 30 69201075</a><br />			
+			</p>
+			<h3>Inhaltlich verantwortlich</h3>
+			<p>
+				<small>Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV bzw. §5 TMG sowie beauftragt mit dem Jugendschutz gemäß TMG, JMStV sowie GjSM:</small><br />
+				<strong>Sandro Knauß</strong>, Anschrift wie oben, <a href="mailto:iro@netzguerilla.net">iro@netzguerilla.net</a>
+			</p>
+		</div>
+	</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/index.html	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:xi="http://www.w3.org/2001/XInclude"
+	xmlns:py="http://genshi.edgewall.org/">
+	<xi:include href="layout.tmpl" />
+	<head>
+		<title>work in progress</title>
+	</head>
+	<body>
+		<title>Iro</title>
+		<div class="item">
+			<p>
+				Iro ist toll, ist aber noch nicht fertig.
+			</p>
+		</div>
+	</body>
+</html>
+
+	
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/layout.tmpl	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+       "http://www.w3.org/TR/html4/strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:py="http://genshi.edgewall.org/" py:strip="">
+
+	<py:match path="head" once="true">
+	<head py:attrs="select('@*')">
+		<title py:with="title = list(select('title/text()'))">Iro <py:if test="title">&middot;  ${title}</py:if></title>
+		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+		<meta charset="utf-8" />
+		<meta name="description" content="" />
+		<meta name="keywords" content="" />
+		<link rel="shortcut icon" type="image/x-icon" href="images/favicon.png" />
+		<link rel="stylesheet" href="css/reset.css" type="text/css" media="screen" />
+		<link rel="stylesheet" href="css/960.css" type="text/css" media="screen" />
+		<link rel="stylesheet" href="css/style.css" type="text/css"  media="screen" />
+		<!--[if IE]><link rel="stylesheet" href="css/style-ie.css" type="text/css"  media="screen" /><![endif] -->
+		${select('*[local-name()!="title"]')}
+	</head>
+	</py:match>
+
+	<py:match path="body" once="true">
+	<body py:attrs="select('@*')">
+	<div id="head-container">
+		<div id="head">
+			<h1 id="logo"><a href="index.html" class="logo" title="Netzguerilla"><span>Netzguerilla</span></a></h1>
+			<ul id="menu">
+				<li py:for="site in sites"><a href="${site.link}" class="menu" py:attrs="active(site)">${site.title}</a></li>
+			</ul>
+		</div>
+	</div>
+
+
+	<div id="content-container">
+		<div id="content" class="container_12">
+			<div id="main" class="grid_9">
+				<h2 py:with="title = list(select('title/text()'))"><py:if test="title">${title}</py:if></h2>
+				${select('*[local-name()!="title"]')}
+			</div>
+			<div class="clear"></div>
+		</div>
+	</div>
+
+	<div id="foot-container">
+		<div id="foot">
+			<p>&copy; 2010-2011 <a href="impressum.html">Netzguerilla.net</a>.</p>
+		</div>
+	</div>
+
+	</body>
+	</py:match>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/layout.tmpl.bak	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,15 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+  <head>
+    <title>Geddit</title>
+  </head>
+  <body class="index">
+    <div id="header">
+      <h1>Geddit</h1>
+    </div>
+    <p>Welcome!</p>
+    <div id="footer">
+      <p class="legalese">© 2007 Edgewall Software</p>
+    </div>
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/tmpl/new.html	Tue Dec 06 19:46:00 2011 +0100
@@ -0,0 +1,1015 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:xi="http://www.w3.org/2001/XInclude"
+	xmlns:py="http://genshi.edgewall.org/">
+	<xi:include href="layout.tmpl" />
+	<head>
+		<title>api docs new</title>
+	</head>
+	<body>
+		<title>geplante API Dokumentation</title>
+		<div class="item">
+			<p>
+
+			</p>
+			<ol>
+				<li value="1">1. <a href="#api-intro">Einführung</a></li>
+				<li value="2">2. 
+				<a href="#api-interfaces">Interfaces</a>
+				<ol>
+					<li value="2.1">2.1 <a href="#interface-xmlrpc">XML-RPC</a></li>
+					<li value="2.2">2.2 <a href="#interface-xml">XML</a></li>
+					<li value="2.3">2.3 <a href="#interface-json">JSON</a></li>
+					<li value="2.4">2.4 <a href="#interface-jsonp">JSONP</a></li>
+					<li value="2.5">2.5 <a href="#interface-php">PHP</a></li>
+				</ol>
+				</li>
+				<li value="3">3. 
+				<a href="#api-methods">Methoden</a>
+				<ol>
+					<li value="3.1">3.1 <a href="#method-route">Route</a></li>
+					<li value="3.2">3.2 <a href="#method-dist">Dist</a></li>
+					<li value="3.3">3.3 <a href="#method-geocode">Geocode</a></li>
+					<li value="3.4">3.4 <a href="#method-sms">SMS</a></li>
+					<li value="3.5">3.5 <a href="#method-bank">Bank</a></li>
+					<li value="3.6">3.6 <a href="#method-bank">Boxcar</a></li>
+					<li value="3.7">3.7 <a href="#method-postcode-match">Postcode-Match</a></li>
+					<li value="3.8">3.8 <a href="#method-postcode-shape">Postcode-Shape</a></li>
+				</ol>				
+				</li>
+				<li value="4">4. <a href="#api-errors">Fehlermeldungen</a></li>
+			</ol>
+		</div>
+		<div class="item" id="api-intro">
+			<h3>Einführung</h3>
+			<p>
+				Die Mesngr API enthält viele Funktionen, die von Fahrradkurierdiensten benötigt werden.
+			</p>
+		</div>
+		<div class="item" id="api-interfaces">
+			<h3>Interfaces</h3>
+			<p>
+				Die Mesngr API stellt verschiedene Interfaces bereit, die unterschiedlich angesprochen werden, aber das selbe tun.
+			</p>
+			<div class="item" id="interface-xmlrpc">
+				<h4>XML-RPC</h4>
+				<p>
+					Interface-URI: <code>http://api.mesngr.de/xmlrpc</code>
+				</p>
+				<p>
+					Die aufgerufene Methode wird dabei im <code>&lt;methodName /&gt;</code> übergeben.
+				</p>
+				<p>
+					Das XML-RPC Interface nimmt die Parameter der aufgerufenen Methode als <code>&lt;struct /&gt;</code> inerhalb des ersten <code>&lt;param /&gt;</code> entgegen, alle weiteren <code>&lt;param /&gt;</code>s werden ignoriert.
+				</p>
+				<p>
+					Zeichen außerhalb des ASCII-Sets sind als HTML Entities zu übergeben.
+				</p>
+			</div>
+			<div class="item" id="interface-xml">
+				<h4>XML</h4>
+				<p>
+					Interface-URI: <code>http://api.mesngr.de/xml/<em>&lt;methode&gt;</em></code>
+				</p>
+				<p>
+					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+				</p>
+				<p>
+					Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
+				</p>
+				<p>
+					Die Ausgabe erfolgt als XML Markup.
+				</p>
+			</div>
+			<div class="item" id="interface-json">
+				<h4>JSON</h4>
+				<p>
+					Interface-URI: <code>http://api.mesngr.de/json/<em>&lt;methode&gt;</em></code>
+				</p>
+				<p>
+					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+				</p>
+				<p>
+					Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> oder JSON-Objekt übergeben werden.
+				</p>
+				<p>
+					Die Ausgabe erfolgt als JSON-Objekt.
+				</p>
+			</div>
+			<div class="item" id="interface-json">
+				<h4>JSONP</h4>
+				<p>
+					Interface-URI: <code>http://api.mesngr.de/jsonp/<em>&lt;methode&gt;</em>?callback=&lt;callback&gt;</code>
+				</p>
+				<p>
+					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+				</p>
+				<p>
+					Der Name für die Callback-Methode wird als Parameter Callback übergeben.
+				</p>
+				<p>
+					Parameter können via HTTP per GET im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
+				</p>
+				<p>
+					Die Ausgabe erfolgt als Javascript-Funktionsaufruf mit einem JSON-Objekt als Parameter.
+				</p>
+			</div>
+			<div class="item" id="interface-php">
+				<h4>PHP</h4>
+				<p>
+					Interface-URI: <code>http://api.mesngr.de/php/<em>&lt;methode&gt;</em></code>
+				</p>
+				<p>
+					Die aufgerufene Methode wird im Pfad der Interface-URI übergeben.
+				</p>
+				<p>
+					Parameter können via HTTP per GET oder POST im Format <em>application/x-www-form-urlencoded</em> übergeben werden.
+				</p>
+				<p>
+					Die Ausgabe erfolgt als serialisiertes PHP-Objekt.
+				</p>
+			</div>
+		</div>
+	<div class="item" id="api-methods">
+		<h3>Methoden</h3>
+		<div class="item" id="method-route">
+			<h4>Route</h4>
+			<p><code>route</code></p>
+			<p>
+				Diese Methode ermittelt die Routing-Entfernung zwischen zwei Koordinaten.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>type</td>
+						<td>enum[car,bicycle,foot]</td>
+						<td>Die gewünschte Routing-Methode</td>
+					</tr>
+					<tr>
+						<td>flon</td>
+						<td>float</td>
+						<td>Der Längengrad des Startpunktes</td>
+					</tr>
+					<tr>
+						<td>flat</td>
+						<td>float</td>
+						<td>Der Breitengrad des Startpunktes</td>
+					</tr>
+					<tr>
+						<td>tlon</td>
+						<td>float</td>
+						<td>Der Längengrad des Zielpunktes</td>
+					</tr>
+					<tr>
+						<td>tlat</td>
+						<td>float</td>
+						<td>Der Breitengrad des Zielpunktes</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+					<tr>
+						<td>distance</td>
+						<td>float</td>
+						<td>Die ermittelte Routing-Distanz in km</td>
+					</tr>
+				</tbody>
+			</table>	
+		</div>
+		<div class="item" id="method-dist">
+			<h4>Dist</h4>
+			<p><code>dist</code></p>
+			<p>
+				Diese Methode ermittelt die direkte Entfernung zwischen zwei Koordinaten.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>flon</td>
+						<td>float</td>
+						<td>Der Längengrad des Startpunktes</td>
+					</tr>
+					<tr>
+						<td>flat</td>
+						<td>float</td>
+						<td>Der Breitengrad des Startpunktes</td>
+					</tr>
+					<tr>
+						<td>tlon</td>
+						<td>float</td>
+						<td>Der Längengrad des Zielpunktes</td>
+					</tr>
+					<tr>
+						<td>tlat</td>
+						<td>float</td>
+						<td>Der Breitengrad des Zielpunktes</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+					<tr>
+						<td>distance</td>
+						<td>float</td>
+						<td>Die ermittelte Routing-Distanz in km</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="item" id="method-geocode">
+			<h4>Geocode</h4>
+			<p><code>geocode</code></p>
+			<p>
+				Ermittelt die Koordinaten zu einer Adresse. Diese Methode ist Kostenpflichtig.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>type</td>
+						<td>enum[fast, complete]</td>
+						<td>Die Eingabemethode. Im Modus <em>fast</em> wird der Parameter <code>number</code> an den Parameter <code>street</code> angehängt sowie der Parameter <code>postcode</code> vor den Parameter <code>city</code>; Die Parameter <code>postcode</code> und <code>number</code> werden dann ignoriert.</td>
+					</tr>
+					<tr>
+						<td>street</td>
+						<td>str</td>
+						<td>Der Straßenname der Adresse</td>
+					</tr>
+					<tr>
+						<td>number</td>
+						<td>str</td>
+						<td>Die Hausnummer der Adresse</td>
+					</tr>
+					<tr>
+						<td>postcode</td>
+						<td>str</td>
+						<td>Die Postleitzahl der Adresse</td>
+					</tr>
+					<tr>
+						<td>city</td>
+						<td>str</td>
+						<td>Die Stadt der Adresse</td>
+					</tr>
+					<tr>
+						<td>country</td>
+						<td>str</td>
+						<td>Das Land der Adresse, ISO 3166</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+					<tr>
+						<td>stage</td>
+						<td>enum[1,2,3]</td>
+						<td>
+							Grad des Erfolges des Geocodings:<br />
+							1 &rarr; Es stehen mehrere mögliche Adressen zur Auswahl.<br />
+							2 &rarr; Eine mögliche Adresse als Korrekturvorschlag.<br />
+							3 &rarr; Die Adresse konnte verifiziert und zugehörige Geokoordinaten ermittelt werden.
+						</td>
+					</tr>
+					<tr>
+						<td>data</td>
+						<td>array</td>
+						<td>
+							Die ermittelten Adressdaten
+						</td>
+					</tr>
+					<tr>
+						<td>data[i]</td>
+						<td>array</td>
+						<td>
+							Ein ermittelter Adressdatensatz
+						</td>
+					</tr>
+					<tr>
+						<td>data[i][street]</td>
+						<td>str</td>
+						<td>Name der Straße</td>
+					</tr>
+					<tr>
+						<td>data[i][nr]</td>
+						<td>str</td>
+						<td>Hausnummer</td>
+					</tr>
+					<tr>
+						<td>data[i][fragment]</td>
+						<td>str</td>
+						<td>Hausnummernzusatz (z.B. <em>a</em> bei <em>12a</em>)</td>
+					</tr>
+					<tr>
+						<td>data[i][postcode]</td>
+						<td>str</td>
+						<td>Postleitzahl</td>
+					</tr>
+					<tr>
+						<td>data[i][city]</td>
+						<td>str</td>
+						<td>Ort</td>
+					</tr>
+					<tr>
+						<td>data[i][country]</td>
+						<td>str[2]</td>
+						<td>Land (gemäß ISO 3166)</td>
+					</tr>
+					<tr>
+						<td>data[i][accuracy]</td>
+						<td>int</td>
+						<td>Genauigkeit (Genau &gt; Ungenau)</td>
+					</tr>
+					<tr>
+						<td>data[i][lat]</td>
+						<td>float</td>
+						<td>Breitengrad</td>
+					</tr>
+					<tr>
+						<td>data[i][lon]</td>
+						<td>float</td>
+						<td>Längengrad</td>
+					</tr>
+				</tbody>
+			</table>		
+		</div>
+		<div class="item" id="method-sms">
+			<h4>SMS</h4>
+			<p><code>sms</code></p>
+			<p>
+				Versendet eine SMS-Nachricht. Diese Methode ist kostenpflichtig.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>from</td>
+						<td>str[11]|tel[16]</td>
+						<td>Der gewünschte Absender (optional)</td>
+					</tr>
+					<tr>
+						<td>to</td>
+						<td>tel[15]</td>
+						<td>Emfänger-Nummer (gemäß ITU-T E.123)</td>
+					</tr>
+					<tr>
+						<td>ref</td>
+						<td>str</td>
+						<td>Referenz für Antworten</td>
+					</tr>
+					<tr>
+						<td>callback</td>
+						<td>str</td>
+						<td>Callback-URL für SMS-Antworten. Noch nicht implementiert.</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="item" id="method-bank">
+			<h4>Bank</h4>
+			<p><code>bank</code></p>
+			<p>
+				Prüft Bankdaten auf Plausibilität.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>country</td>
+						<td>[de]</td>
+						<td>Das Land des Bankdatenformates</td>
+					</tr>
+					<tr>
+						<td>bank</td>
+						<td>int[8]</td>
+						<td>Die Bankleitzahl</td>
+					</tr>
+					<tr>
+						<td>account</td>
+						<td>int[10]</td>
+						<td>Die Kontonummer (optional)</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+					<tr>
+						<td>bank</td>
+						<td>array</td>
+						<td>Der Bankdatensatz</td>
+					</tr>
+					<tr>
+						<td>bank[id]</td>
+						<td>int[8]</td>
+						<td>Die Bankleitzahl</td>
+					</tr>
+					<tr>
+						<td>bank[name]</td>
+						<td>str</td>
+						<td>Name der Bank</td>
+					</tr>
+					<tr>
+						<td>bank[city]</td>
+						<td>str</td>
+						<td>Stadt</td>
+					</tr>
+					<tr>
+						<td>bank[bic]</td>
+						<td>str</td>
+						<td>Der BIC der Bank</td>
+					</tr>
+					<tr>
+						<td>account</td>
+						<td>array</td>
+						<td>Der Kontodatensatz</td>
+					</tr>
+					<tr>
+						<td>account[id]</td>
+						<td>int[10]</td>
+						<td>Die Kontonummer</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="item" id="method-bank">
+			<h4>Boxcar</h4>
+			<p><code>boxcar</code></p>
+			<p>
+				Sendet eine Push-Notification via Boxcar. Ist der Boxcar-user nicht subskribiert, wird statt der Nachricht eine Subskriptions-Anfrage gesendet.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>to</td>
+						<td>str</td>
+						<td>E-Mail-Adresse des Boxcar-Accounts</td>
+					</tr>
+					<tr>
+						<td>from</td>
+						<td>str</td>
+						<td>Absender</td>
+					</tr>
+					<tr>
+						<td>message</td>
+						<td>str</td>
+						<td>Die Nachricht</td>
+					</tr>
+					<tr>
+						<td>url</td>
+						<td>str</td>
+						<td>Die URL die aufgerufen werden soll</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="item" id="method-postcode-match">
+			<h4>Postcode-Match</h4>
+			<p><code>postcodematch</code></p>
+			<p>
+				Liefert die Schwerpunkt-Koordinaten aller Postleizahlengebiete innerhalb eines Bereiches. 
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>bbox_n</td>
+						<td>float</td>
+						<td>Maximale Latitude</td>
+					</tr>
+					<tr>
+						<td>bbox_s</td>
+						<td>float</td>
+						<td>Minimale Latitude</td>
+					</tr>
+					<tr>
+						<td>bbox_e</td>
+						<td>float</td>
+						<td>Maximale Longitude</td>
+					</tr>
+					<tr>
+						<td>bbox_w</td>
+						<td>float</td>
+						<td>Minimale Longitude</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+					<tr>
+						<td>postcodes</td>
+						<td>array</td>
+						<td>Ergebnisse</td>
+					</tr>
+					<tr>
+						<td>postcodes[i]</td>
+						<td>array</td>
+						<td>Ergebnis</td>
+					</tr>
+					<tr>
+						<td>postcodes[i][postcode]</td>
+						<td>str</td>
+						<td>Postleitzahl</td>
+					</tr>
+					<tr>
+						<td>postcodes[i][lat]</td>
+						<td>float</td>
+						<td>Latitude des Schwerpunktes</td>
+					</tr>
+					<tr>
+						<td>postcodes[i][lon]</td>
+						<td>float</td>
+						<td>Longitude des Schwerpunktes</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+		<div class="item" id="method-postcode-shape">
+			<h4>Postcode-Shape</h4>
+			<p><code>postcodeshape</code></p>
+			<p>
+				Gibt eine Näherung an die geografische Definition eines Postleitzahlengebietes aus.
+			</p>
+			<h5>Parameter</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>apikey</td>
+						<td>str[20]</td>
+						<td>Der API Key</td>
+					</tr>
+					<tr>
+						<td>postcode</td>
+						<td>str</td>
+						<td>Die Postleitzahl des Gebietes</td>
+					</tr>
+				</tbody>
+			</table>
+			<h5>Ausgabe</h5>
+			<table class="docs">
+				<thead>
+					<tr>
+						<td>Parameter</td>
+						<td>Typ</td>
+						<td>Beschreibung</td>
+					</tr>					
+				</thead>
+				<tbody>
+					<tr>
+						<td>status</td>
+						<td>bool</td>
+						<td>Fehlerindikator</td>
+					</tr>
+					<tr>
+						<td>postcode</td>
+						<td>str</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>center</td>
+						<td>array</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>center[lat]</td>
+						<td>flaot</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>center[lon]</td>
+						<td>flaot</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>bbox</td>
+						<td>array</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>bbox[n]</td>
+						<td>float</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>bbox[s]</td>
+						<td>float</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>bbox[w]</td>
+						<td>float</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>bbox[e]</td>
+						<td>float</td>
+						<td></td>
+					</tr>
+					<tr>
+						<td>shape</td>
+						<td>array</td>
+						<td>Alle Shapes dieses Postleitzahlengebietes</td>
+					</tr>
+					<tr>
+						<td>shape[i]</td>
+						<td>array</td>
+						<td>Ein Shape des Postleitzahlengebietes</td>
+					</tr>
+					<tr>
+						<td>shape[i][j]</td>
+						<td>array</td>
+						<td>Ein Punkt des Shapes</td>
+					</tr>
+					<tr>
+						<td>shape[i][j][lat]</td>
+						<td>array</td>
+						<td>Die Latitude des Punktes</td>
+					</tr>
+					<tr>
+						<td>shape[i][j][lon]</td>
+						<td>array</td>
+						<td>Die Longitude des Punktes</td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+	</div>
+	<div class="item" id="api-errors">
+		<h3>Fehlercode</h3>
+		<p>
+			Wenn der Ausgabeparameter <code>status</code> einen Fehler indiziert, werden alle weiteren Ausgabeparameter ersetzt durch die Parameter <code>code</code> und <code>msg</code>. 
+		</p>
+		<table class="docs">
+			<thead>
+				<tr>
+					<td>Parameter</td>
+					<td>Typ</td>
+					<td>Beschreibung</td>
+				</tr>					
+			</thead>
+			<tbody>
+				<tr>
+					<td>status</td>
+					<td>bool</td>
+					<td>Fehlerindikator</td>
+				</tr>
+				<tr>
+					<td>code</td>
+					<td>int[3]</td>
+					<td>Fehlercode</td>
+				</tr>
+				<tr>
+					<td>msg</td>
+					<td>str</td>
+					<td>Fehlermeldung</td>
+				</tr>
+				<tr>
+					<td>result</td>
+					<td></td>
+					<td>Optionale weitere Daten</td>
+				</tr>
+			</tbody>
+		</table>
+		<h4>Fehlercodes</h4>
+		<table class="docs">
+			<thead>
+				<tr>
+					<td>Code</td>
+					<td>Bedeutung</td>
+				</tr>					
+			</thead>
+			<tbody>
+				<tr>
+					<td>900</td>
+					<td>Die aufgerufene Methode existiert nicht</td>
+				</tr>
+				<tr>
+					<td>901</td>
+					<td>Der API-Key ist ungültig</td>
+				</tr>
+				<tr>
+					<td>902</td>
+					<td>Fehler in externer API</td>
+				</tr>
+				<tr>
+					<td>903</td>
+					<td>Encoding-Problem: Ein Nicht-UTF-8-Zeichen hat den Parser gestoppt</td>
+				</tr>
+				<tr>
+					<td>904</td>
+					<td>Es wurden keine gültigen JSON-Daten im POST-Request gefunden</td>
+				</tr>
+				<tr>
+					<td>910</td>
+					<td>Ungültige Eingabemethode</td>
+				</tr>
+				<tr>
+					<td>911</td>
+					<td>Die eingegebenen Daten reichen nicht aus, um die Adresse zu bestimmen</td>
+				</tr>
+				<tr>
+					<td>912</td>
+					<td>Die Adresse wurde nicht gefunden</td>
+				</tr>
+				<tr>
+					<td>913</td>
+					<td>Für diese Adresse wurden keine Koordinaten gefunden</td>
+				</tr>
+				<tr>
+					<td>914</td>
+					<td>Die Koordinaten für diese Adresse sind nicht eindeutig</td>
+				</tr>
+				<tr>
+					<td>921</td>
+					<td>Ungültige Koordinaten</td>
+				</tr>
+				<tr>
+					<td>922</td>
+					<td>Keine Route gefunden</td>
+				</tr>
+				<tr>
+					<td>930</td>
+					<td>Keine Verbindung zum Gateway</td>
+				</tr>
+				<tr>
+					<td>931</td>
+					<td>Empfänger fehlerhaft</td>
+				</tr>
+				<tr>
+					<td>932</td>
+					<td>Absenderkennung zu lang</td>
+				</tr>
+				<tr>
+					<td>933</td>
+					<td>Nachrichtentext zu lang</td>
+				</tr>
+				<tr>
+					<td>934</td>
+					<td>Messagetyp nicht korrekt</td>
+				</tr>
+				<tr>
+					<td>935</td>
+					<td>Falscher SMS-Typ</td>
+				</tr>
+				<tr>
+					<td>936</td>
+					<td>Fehler bei Login</td>
+				</tr>
+				<tr>
+					<td>937</td>
+					<td>Guthaben zu gering</td>
+				</tr>
+				<tr>
+					<td>938</td>
+					<td>Netz wird von Route nicht unterstützt</td>
+				</tr>
+				<tr>
+					<td>939</td>
+					<td>Feature nicht über diese Route möglich</td>
+				</tr>
+				<tr>
+					<td>940</td>
+					<td>Ungültige BLZ</td>
+				</tr>
+				<tr>
+					<td>941</td>
+					<td>Ungültige Kontonummer</td>
+				</tr>
+				<tr>
+					<td>942</td>
+					<td>Ungültiges Land</td>
+				</tr>
+				<tr>
+					<td>945</td>
+					<td>Ungültiger Empfänger</td>
+				</tr>
+				<tr>
+					<td>946</td>
+					<td>Keine Nachricht angegeben</td>
+				</tr>
+				<tr>
+					<td>947</td>
+					<td>Der Empfänger ist nicht subskribiert</td>
+				</tr>
+				<tr>
+					<td>948</td>
+					<td>Der Empfänger hat den Dienst abgeschaltet</td>
+				</tr>
+				<tr>
+					<td>950</td>
+					<td>Die Postleitzahl ist ungültig.</td>
+				</tr>
+				<tr>
+					<td>951</td>
+					<td>Für diese Postleitzahl gibt es keine Shapes.</td>
+				</tr>
+				<tr>
+					<td>952</td>
+					<td>In diesem Bereich wurden keine Postleitzahlen gefunden.</td>
+				</tr>
+				<tr>
+					<td>953</td>
+					<td>Dieser Bereich enthält zu viele Postleitzahlen.</td>
+				</tr>
+				
+				<tr>
+					<td>999</td>
+					<td>Unbekannter Fehler</td>
+				</tr>
+			</tbody>
+		</table>
+	</div>
+	</body>
+</html>