prepare for release: devel
authorSandro Knauß <knauss@netzguerilla.net>
Wed, 25 Apr 2012 15:06:28 +0200
branchdevel
changeset 277 f65edc0382cc
parent 276 4841b443f1fd
child 278 4d376a97e663
child 279 d32fa77ce318
prepare for release: * diffrent web directory with all web specific content (split doc dir -> doc (data) and web (rendered data)) * update installation
.hgignore
Makefile
createdoc.py
doc/about.html
doc/conf.py
doc/css/960.css
doc/css/reset.css
doc/css/style-ie.css
doc/css/style.css
doc/current.html
doc/database.html
doc/images/db-schema.svg
doc/images/favicon.png
doc/images/netzguerilla-3.png
doc/index.html
doc/install.rst
doc/tmpl/index.html
fabfile.py
web/css/960.css
web/css/reset.css
web/css/style-ie.css
web/css/style.css
web/images/db-schema.svg
web/images/favicon.png
web/images/netzguerilla-3.png
--- a/.hgignore	Wed Apr 25 00:06:27 2012 +0200
+++ b/.hgignore	Wed Apr 25 15:06:28 2012 +0200
@@ -19,3 +19,9 @@
 doc/_build/*
 twisted/plugins/dropin.cache
 *.db
+*.old
+_build/
+web/dev/
+web/*.html
+web/files/*.tar.gz
+web.tar.gz
--- a/Makefile	Wed Apr 25 00:06:27 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-# Makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS    =
-SPHINXBUILD   = sphinx-build
-PAPER         =
-BUILDDIR      = doc/_build
-
-# Internal variables.
-PAPEROPT_a4     = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) doc
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) doc
-
-.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
-
-help:
-	@echo "Please use \`make <target>' where <target> is one of"
-	@echo "  html       to make standalone HTML files"
-	@echo "  dirhtml    to make HTML files named index.html in directories"
-	@echo "  singlehtml to make a single large HTML file"
-	@echo "  pickle     to make pickle files"
-	@echo "  json       to make JSON files"
-	@echo "  htmlhelp   to make HTML files and a HTML help project"
-	@echo "  qthelp     to make HTML files and a qthelp project"
-	@echo "  devhelp    to make HTML files and a Devhelp project"
-	@echo "  epub       to make an epub"
-	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
-	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
-	@echo "  text       to make text files"
-	@echo "  man        to make manual pages"
-	@echo "  texinfo    to make Texinfo files"
-	@echo "  info       to make Texinfo files and run them through makeinfo"
-	@echo "  gettext    to make PO message catalogs"
-	@echo "  changes    to make an overview of all changed/added/deprecated items"
-	@echo "  linkcheck  to check all external links for integrity"
-	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
-
-clean:
-	-rm -rf $(BUILDDIR)/*
-
-html:
-	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
-	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
-	@echo
-	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-singlehtml:
-	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
-	@echo
-	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-pickle:
-	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
-	@echo
-	@echo "Build finished; now you can process the pickle files."
-
-json:
-	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
-	@echo
-	@echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
-	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
-	@echo
-	@echo "Build finished; now you can run HTML Help Workshop with the" \
-	      ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
-	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
-	@echo
-	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
-	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
-	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Iro.qhcp"
-	@echo "To view the help file:"
-	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Iro.qhc"
-
-devhelp:
-	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
-	@echo
-	@echo "Build finished."
-	@echo "To view the help file:"
-	@echo "# mkdir -p $$HOME/.local/share/devhelp/Iro"
-	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Iro"
-	@echo "# devhelp"
-
-epub:
-	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
-	@echo
-	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo
-	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
-	@echo "Run \`make' in that directory to run these through (pdf)latex" \
-	      "(use \`make latexpdf' here to do that automatically)."
-
-latexpdf:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
-	@echo "Running LaTeX files through pdflatex..."
-	$(MAKE) -C $(BUILDDIR)/latex all-pdf
-	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-text:
-	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
-	@echo
-	@echo "Build finished. The text files are in $(BUILDDIR)/text."
-
-man:
-	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
-	@echo
-	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-texinfo:
-	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
-	@echo
-	@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
-	@echo "Run \`make' in that directory to run these through makeinfo" \
-	      "(use \`make info' here to do that automatically)."
-
-info:
-	$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
-	@echo "Running Texinfo files through makeinfo..."
-	make -C $(BUILDDIR)/texinfo info
-	@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
-
-gettext:
-	$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
-	@echo
-	@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-changes:
-	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
-	@echo
-	@echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
-	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
-	@echo
-	@echo "Link check complete; look for any errors in the above output " \
-	      "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
-	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
-	@echo "Testing of doctests in the sources finished, look at the " \
-	      "results in $(BUILDDIR)/doctest/output.txt."
--- a/createdoc.py	Wed Apr 25 00:06:27 2012 +0200
+++ b/createdoc.py	Wed Apr 25 15:06:28 2012 +0200
@@ -5,7 +5,13 @@
 from genshi import Markup
 loader = TemplateLoader('doc/tmpl', auto_reload=True)
 
+
+from glob import glob
+import re
+import os.path
 import inspect
+from pkg_resources import parse_version
+
 from docutils.core import publish_doctree
 import docutils
 
@@ -13,6 +19,10 @@
 from docutils import core
 from docutils.writers.html4css1 import Writer,HTMLTranslator
 
+from iro.view.xmlrpc import TwistedInterface as Current 
+from iro import __version__
+from createerm import createSchemaPlot, tables, tables_cls
+
 class NoHeaderHTMLTranslator(HTMLTranslator):
     def __init__(self, document):
         HTMLTranslator.__init__(self,document)
@@ -38,9 +48,6 @@
 
     return core.publish_from_doctree(d, writer=_w)
 
-from iro.view.xmlrpc import TwistedInterface as Current 
-
-from createerm import createSchemaPlot, tables, tables_cls
 
 class Link():
     def __init__(self,name,title):
@@ -169,6 +176,11 @@
         
         self.description = Markup(core.publish_string(cls.__doc__,writer=_w))
 
+class File:
+    def __init__(self,path):
+        self.version = re.search("/iro-(.*).tar.gz",path).group(1)
+        self.name = os.path.basename(path)
+
 
 def main():
     sites=[Site("index.html","Iro"),
@@ -177,11 +189,22 @@
            Site("about.html","About us"),
            ]
 
+    files=[File(f) for f in glob("web/files/*tar.gz")]
+    files.sort(key=lambda a:parse_version(a.version),reverse=True)
+    code ="files/iro-%s.tar.gz"%__version__
+
     current_methods = dict(inspect.getmembers(Current()))
     current=[ Method(i,current_methods) for i in Current().listMethods() if i  != "listMethods" ]
     
     t = [Table(tables_cls[str(f)]) for f in tables]
-    createSchemaPlot('doc/images/db-schema.svg')
+    createSchemaPlot('web/images/db-schema.svg')
+
+    gd = {"sites":sites,
+          "current":current,
+          "tables": t,
+          "code":code,
+          "files":files
+        }
 
     for site in sites:
         print("generiere %s" % site.name)
@@ -189,8 +212,8 @@
         def a(s):
             if s == site:
                 return {"class":"menu active"}
-        stream = tmpl.generate(sites=sites, active=a, current=current, tables=t)
-        with open('doc/'+site.name, "w") as g:
+        stream = tmpl.generate(active=a, **gd)
+        with open('web/'+site.name, "w") as g:
             g.write(stream.render('html', doctype='html'))
 
 if __name__ == '__main__':
--- a/doc/about.html	Wed Apr 25 00:06:27 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-	
-
-	<head>
-		<title>Iro ·  About us</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="database.html" class="menu">Datenbase Schema</a></li><li><a href="about.html" class="menu active">About us</a></li>
-			</ul>
-		</div>
-	</div>
-	<div id="content-container">
-		<div id="content" class="container_12">
-			<div id="main" class="grid_9">
-				<h2>About us</h2>
-				<div class="item">
-			<h3>Contact</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>German legal notice - 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
--- a/doc/conf.py	Wed Apr 25 00:06:27 2012 +0200
+++ b/doc/conf.py	Wed Apr 25 15:06:28 2012 +0200
@@ -25,7 +25,7 @@
 
 # Add any Sphinx extension module names here, as strings. They can be extensions
 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode']
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode','sphinx.ext.extlinks']
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
@@ -242,3 +242,5 @@
 #texinfo_show_urls = 'footnote'
 
 autoclass_content = 'both'
+
+extlinks = {'irofile': ("../files/iro-%s.tar.gz","Iro ")}
--- a/doc/css/960.css	Wed Apr 25 00:06:27 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-.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
--- a/doc/css/reset.css	Wed Apr 25 00:06:27 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-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
--- a/doc/css/style-ie.css	Wed Apr 25 00:06:27 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-#head #menu {
-	
-	width: 750px;
-	
-}
-
-	#head #menu li {
-		
-		display: inline;
-		position: relative;
-		float: left;
-		margin: 0px;
-		padding: 0px;
-		
-	}
\ No newline at end of file
--- a/doc/css/style.css	Wed Apr 25 00:06:27 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,975 +0,0 @@
-
-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;
-				
-			}
-
--- a/doc/current.html	Wed Apr 25 00:06:27 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,532 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-	
-
-	<head>
-		<title>Iro ·  api docs current</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="database.html" class="menu">Datenbase Schema</a></li><li><a href="about.html" class="menu">About us</a></li>
-			</ul>
-		</div>
-	</div>
-	<div id="content-container">
-		<div id="content" class="container_12">
-			<div id="main" class="grid_9">
-				<h2>API Documentation</h2>
-				<div class="item">
-			<p>
-			</p>
-			<ol>
-				<li value="1">1. <a href="#api-intro">Intro</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.1">2.2 <a href="#interface-soap">SOAP</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>
-				</ol>
-				</li>
-				<li value="3">3.
-					<a href="#api-methods">Methods</a>
-					<ol>
-						<li value="3.1">3.1 <a href="#method-status">Status</a></li><li value="3.2">3.2 <a href="#method-sms">Sms</a></li><li value="3.3">3.3 <a href="#method-fax">Fax</a></li><li value="3.4">3.4 <a href="#method-mail">Mail</a></li><li value="3.5">3.5 <a href="#method-routes">Routes</a></li><li value="3.6">3.6 <a href="#method-defaultRoute">DefaultRoute</a></li><li value="3.7">3.7 <a href="#method-bill">Bill</a></li><li value="3.8">3.8 <a href="#method-telnumber">Telnumber</a></li><li value="3.9">3.9 <a href="#method-email">Email</a></li>
-					</ol>
-				</li>
-			</ol>
-		</div><div class="item" id="api-intro">
-			<h3>Intro</h3>
-			<p>
-				Iro API has many methods, that are usefull if you want to send a bunch of messages. This Site describes the API for Iro 1.0.
-			</p>
-		</div><div class="item" id="api-interfaces">
-			<h3>Interfaces</h3>
-			<p>
-				You can use diffrent interfaces to get to same result.
-			</p>
-			<div class="item" id="interface-xmlrpc">
-				<h4>XML-RPC</h4>
-				<p>
-					Interface-URI: <code>http://localhost:8000/xmlrpc</code>
-				</p>
-			</div>
-			<div class="item" id="interface-soap">
-				<h4>SOAP</h4>
-				<p>
-					Interface-URI: <code>http://localhost:8000/soap</code>
-				</p>
-			</div>
-			<div class="item" id="interface-json">
-				<h4>JSON</h4>
-				<p>
-					Interface-URI: <code>http://localhost:8000/json/<em>&lt;methode&gt;</em></code>
-				</p>
-				<p>
-					Not yet implementet
-				</p>
-			</div>
-			<div class="item" id="interface-jsonp">
-				<h4>JSONP</h4>
-				<p>
-					Interface-URI: <code>http://localhost:8000/jsonp/<em>&lt;methode&gt;</em>?callback=&lt;callback&gt;</code>
-				</p>
-				<p>
-					Not yet implementet
-				</p>
-			</div>
-		</div><div class="item" id="api-methods">
-			<h3>Methods</h3>
-			<div class="item" id="method-status">
-				<h4>Status</h4>
-				<p><code>status(user=None, id=False, detailed=None)</code></p>
-				<p>Returns the status of one or more jobs.</p>
-				<h5>Parameter</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>user</td>
-							<td>string</td>
-							<td>apikey of a user</td>
-						</tr><tr>
-							<td>id</td>
-							<td>integer</td>
-							<td>one job id</td>
-						</tr><tr>
-							<td>detailed</td>
-							<td>boolean</td>
-							<td>return more details about the status</td>
-						</tr>
-					</tbody>
-				</table>
-				<h5>Return</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>return</td>
-							<td>dict</td>
-							<td><ul class="simple">
-<li><cite>key</cite> -- is the job id</li>
-<li>[<cite>key</cite>][<strong>'status'</strong>] -- status of the job</li>
-</ul></td>
-						</tr>
-					</tbody>
-				</table>
-			</div><div class="item" id="method-sms">
-				<h4>Sms</h4>
-				<p><code>sms(user, message, recipients, route='default', info='')</code></p>
-				<p>Send a sms.</p>
-				<h5>Parameter</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>user</td>
-							<td>string</td>
-							<td>apikey of a user</td>
-						</tr><tr>
-							<td>message</td>
-							<td>string</td>
-							<td>message</td>
-						</tr><tr>
-							<td>recipients</td>
-							<td>list</td>
-							<td>a list of telefon numbers (use ITU-T E.123)</td>
-						</tr><tr>
-							<td>route</td>
-							<td>string|list</td>
-							<td>route to use to send, or a list of routes as fallback</td>
-						</tr><tr>
-							<td>info</td>
-							<td>string</td>
-							<td>a name, to combine different jobs to one billing group</td>
-						</tr>
-					</tbody>
-				</table>
-				<h5>Return</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>return</td>
-							<td>integer</td>
-							<td>the job id</td>
-						</tr>
-					</tbody>
-				</table>
-			</div><div class="item" id="method-fax">
-				<h4>Fax</h4>
-				<p><code>fax(user, subject, fax, recipients, route='default', info='')</code></p>
-				<p>Send a fax.</p>
-				<h5>Parameter</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>user</td>
-							<td>string</td>
-							<td>apikey of a user</td>
-						</tr><tr>
-							<td>subject</td>
-							<td>string</td>
-							<td>subject</td>
-						</tr><tr>
-							<td>fax</td>
-							<td>string</td>
-							<td>content (base64 encoded)</td>
-						</tr><tr>
-							<td>recipients</td>
-							<td>list</td>
-							<td>a list of telefon numbers (use ITU-T E.123)</td>
-						</tr><tr>
-							<td>route</td>
-							<td>string|list</td>
-							<td>route to use to send, or a list of routes as fallback</td>
-						</tr><tr>
-							<td>info</td>
-							<td>string</td>
-							<td>a name, to combine different jobs to one billing group</td>
-						</tr>
-					</tbody>
-				</table>
-				<h5>Return</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>return</td>
-							<td>integer</td>
-							<td>the job id</td>
-						</tr>
-					</tbody>
-				</table>
-			</div><div class="item" id="method-mail">
-				<h4>Mail</h4>
-				<p><code>mail(user, subject, body, recipients, frm=None, route='default', info='')</code></p>
-				<p>Send a mail.</p>
-				<h5>Parameter</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>user</td>
-							<td>string</td>
-							<td>apikey of a user</td>
-						</tr><tr>
-							<td>subject</td>
-							<td>string</td>
-							<td>subject</td>
-						</tr><tr>
-							<td>body</td>
-							<td>string</td>
-							<td>mail body</td>
-						</tr><tr>
-							<td>recipients</td>
-							<td>list</td>
-							<td>a list of email addresses</td>
-						</tr><tr>
-							<td>frm</td>
-							<td>string</td>
-							<td>sender mail address</td>
-						</tr><tr>
-							<td>route</td>
-							<td>string|list</td>
-							<td>route to use to send, or a list of routes as fallback</td>
-						</tr><tr>
-							<td>info</td>
-							<td>string</td>
-							<td>a name, to combine different jobs to one billing group</td>
-						</tr>
-					</tbody>
-				</table>
-				<h5>Return</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>return</td>
-							<td>integer</td>
-							<td>the job id</td>
-						</tr>
-					</tbody>
-				</table>
-			</div><div class="item" id="method-routes">
-				<h4>Routes</h4>
-				<p><code>routes(user, typ=None)</code></p>
-				<p>Returns a list of all possible offernames.</p>
-				<h5>Parameter</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>user</td>
-							<td>string</td>
-							<td>apikey of a user</td>
-						</tr><tr>
-							<td>typ</td>
-							<td>string</td>
-							<td>a typ of message -- one of in this list [&quot;sms&quot;,&quot;fax&quot;,&quot;mail&quot;]</td>
-						</tr>
-					</tbody>
-				</table>
-				<h5>Return</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>return</td>
-							<td>list</td>
-							<td>a list of all possible offer names for a typ</td>
-						</tr>
-					</tbody>
-				</table>
-			</div><div class="item" id="method-defaultRoute">
-				<h4>DefaultRoute</h4>
-				<p><code>defaultRoute(user, typ=None)</code></p>
-				<p>Returns all default offernames.</p>
-				<h5>Parameter</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>user</td>
-							<td>string</td>
-							<td>apikey of a user</td>
-						</tr><tr>
-							<td>typ</td>
-							<td>string</td>
-							<td>a typ of message -- one of in this list [&quot;sms&quot;,&quot;fax&quot;,&quot;mail&quot;]</td>
-						</tr>
-					</tbody>
-				</table>
-				<h5>Return</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>return</td>
-							<td>list</td>
-							<td>a list of all possible offer names for a typ</td>
-						</tr>
-					</tbody>
-				</table>
-			</div><div class="item" id="method-bill">
-				<h4>Bill</h4>
-				<p><code>bill(user=None)</code></p>
-				<p>Returns the bill, of not paid messages.</p>
-				<h5>Parameter</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>user</td>
-							<td>string</td>
-							<td>apikey of a user</td>
-						</tr>
-					</tbody>
-				</table>
-				<h5>Return</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>return</td>
-							<td>dict</td>
-							<td><ul class="simple">
-<li><cite>route</cite> -- one offer name ; <strong>&quot;total&quot;</strong> complete sum</li>
-<li>[<cite>route</cite>][<cite>info</cite>][<strong>anz</strong>] -- Number of sended messages in one billing group</li>
-<li>[<cite>route</cite>][<cite>info</cite>][<strong>price</strong>] -- Price for one billing group</li>
-<li>[<cite>route</cite> | <strong>total</strong>][<strong>anz</strong>] -- Number of sended messages for one offer</li>
-<li>[<cite>route</cite> | <strong>total</strong>][<strong>price</strong>] -- Price for one offer</li>
-</ul></td>
-						</tr>
-					</tbody>
-				</table>
-			</div><div class="item" id="method-telnumber">
-				<h4>Telnumber</h4>
-				<p><code>telnumber(recipients)</code></p>
-				<p>Return True, if all telnumbers a vaild.</p>
-				<h5>Parameter</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>recipients</td>
-							<td>list</td>
-							<td>a list of telnumbers (use ITU-T E.123)</td>
-						</tr>
-					</tbody>
-				</table>
-				<h5>Return</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>return</td>
-							<td>boolean</td>
-							<td>True -- all numbers are valid</td>
-						</tr>
-					</tbody>
-				</table>
-			</div><div class="item" id="method-email">
-				<h4>Email</h4>
-				<p><code>email(recipients)</code></p>
-				<p>Return True, if all mailadresses a valid.</p>
-				<h5>Parameter</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>recipients</td>
-							<td>list</td>
-							<td>a list of mailadresses</td>
-						</tr>
-					</tbody>
-				</table>
-				<h5>Return</h5>
-				<table class="docs">
-					<thead>
-						<tr>
-							<td>parameter</td>
-							<td>type</td>
-							<td>description</td>
-						</tr>
-					</thead>
-					<tbody>
-						<tr>
-							<td>return</td>
-							<td>boolean</td>
-							<td>True -- all addresses are valid</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
--- a/doc/database.html	Wed Apr 25 00:06:27 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-	
-
-	<head>
-		<title>Iro ·  Datenbase</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="database.html" class="menu active">Datenbase Schema</a></li><li><a href="about.html" class="menu">About us</a></li>
-			</ul>
-		</div>
-	</div>
-	<div id="content-container">
-		<div id="content" class="container_12">
-			<div id="main" class="grid_9">
-				<h2>Datenbase Schema</h2>
-				<div class="item">
-			<p>
-			</p>
-			<ol>
-				<li value="1">1. <a href="#schema">Datenbase schema</a></li>
-				<li value="3">3.
-					<a href="#tables">Tables</a>
-					<ol>
-						<li value="2.1">2.1 <a href="#table-apiuser">Apiuser</a></li><li value="2.2">2.2 <a href="#table-offer">Offer</a></li><li value="2.3">2.3 <a href="#table-job">Job</a></li><li value="2.4">2.4 <a href="#table-userright">Userright</a></li><li value="2.5">2.5 <a href="#table-message">Message</a></li>
-					</ol>
-				</li>
-			</ol>
-		</div><div class="item" id="schema">
-			<h3>Schema</h3>
-			<img src="images/db-schema.svg">
-			<p>Overview of used tables.</p>
-		</div><div class="item" id="tables">
-			<h3>Tables</h3>
-			<div class="item" id="table-apiuser">
-				<h4>Apiuser</h4>
-				<p><p>An user in iro.</p></p>
-			</div><div class="item" id="table-offer">
-				<h4>Offer</h4>
-				<p><p>All possible Offers over a Message can be sended. <strong>provider</strong>, <strong>typ</strong> and <strong>route</strong> are used to get the data form configuration file.</p></p>
-			</div><div class="item" id="table-job">
-				<h4>Job</h4>
-				<p><p>A complete Job.</p>
-<blockquote>
-<ul class="simple">
-<li><strong>status</strong> show the status of the job (<tt class="docutils literal">init</tt>, <tt class="docutils literal">started</tt>, <tt class="docutils literal">sending</tt>, <tt class="docutils literal">sended</tt> or <tt class="docutils literal">error</tt>).</li>
-<li><strong>info</strong> is used to make it possible to create different billing groups for user.</li>
-</ul>
-</blockquote></p>
-			</div><div class="item" id="table-userright">
-				<h4>Userright</h4>
-				<p><p>Allowed offers for one user. Default routes are sorted by <strong>default</strong> value.</p></p>
-			</div><div class="item" id="table-message">
-				<h4>Message</h4>
-				<p><p>A message that has created costs.</p>
-<blockquote>
-<strong>isBilled</strong> is False since the bill is paid.</blockquote></p>
-			</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
--- a/doc/images/db-schema.svg	Wed Apr 25 00:06:27 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<!-- Generated by graphviz version 2.26.3 (20100126.1600)
- -->
-<!-- Title: G Pages: 1 -->
-<svg width="468pt" height="126pt"
- viewBox="0.00 0.00 468.00 125.74" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph1" class="graph" transform="scale(0.83274 0.83274) rotate(0) translate(4 147)">
-<title>G</title>
-<polygon fill="white" stroke="white" points="-4,5 -4,-147 559,-147 559,5 -4,5"/>
-<!-- message -->
-<g id="node1" class="node"><title>message</title>
-<polygon fill="none" stroke="black" points="8,-18.5 8,-133.5 112,-133.5 112,-18.5 8,-18.5"/>
-<text text-anchor="start" x="43.5" y="-124.367" font-family="Bitstream-Vera Sans" font-size="7.00">message</text>
-<polygon fill="none" stroke="black" points="9,-118 9,-120 111,-120 111,-118 9,-118"/>
-<text text-anchor="start" x="11" y="-110.867" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; id : INTEGER</text>
-<text text-anchor="start" x="11" y="-99.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; recipient : VARCHAR(100)</text>
-<text text-anchor="start" x="11" y="-88.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; isBilled : BOOLEAN</text>
-<text text-anchor="start" x="11" y="-77.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; date : DATETIME</text>
-<text text-anchor="start" x="11" y="-66.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; price : NUMERIC(8, 4)</text>
-<text text-anchor="start" x="11" y="-55.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; count : INTEGER</text>
-<text text-anchor="start" x="11" y="-44.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; exID : VARCHAR(100)</text>
-<text text-anchor="start" x="11" y="-33.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; job : VARCHAR(40)</text>
-<text text-anchor="start" x="11" y="-22.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; offer : VARCHAR(100)</text>
-</g>
-<!-- job -->
-<g id="node3" class="node"><title>job</title>
-<polygon fill="none" stroke="black" points="164.5,-79 164.5,-139 251.5,-139 251.5,-79 164.5,-79"/>
-<text text-anchor="start" x="202.5" y="-130.367" font-family="Bitstream-Vera Sans" font-size="7.00">job</text>
-<polygon fill="none" stroke="black" points="166,-124 166,-126 251,-126 251,-124 166,-124"/>
-<text text-anchor="start" x="168" y="-116.867" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; id : INTEGER</text>
-<text text-anchor="start" x="168" y="-105.867" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; info : VARCHAR(100)</text>
-<text text-anchor="start" x="168" y="-94.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; status : VARCHAR(7)</text>
-<text text-anchor="start" x="168" y="-83.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; user : VARCHAR(100)</text>
-</g>
-<!-- message&#45;&gt;job -->
-<g id="edge2" class="edge"><title>message&#45;&gt;job</title>
-<path fill="none" stroke="black" d="M120.197,-89.4224C129.482,-91.4926 139.067,-93.6298 148.34,-95.6974"/>
-<ellipse fill="none" stroke="black" cx="152.488" cy="-96.6224" rx="4.00001" ry="4.00001"/>
-<text text-anchor="middle" x="146.627" y="-97.3455" font-family="Bitstream-Vera Sans" font-size="7.00">+ id</text>
-<text text-anchor="middle" x="129.963" y="-84.9699" font-family="Bitstream-Vera Sans" font-size="7.00">+ job</text>
-</g>
-<!-- offer -->
-<g id="node5" class="node"><title>offer</title>
-<polygon fill="none" stroke="black" points="304.5,-4 304.5,-64 405.5,-64 405.5,-4 304.5,-4"/>
-<text text-anchor="start" x="347" y="-55.3667" font-family="Bitstream-Vera Sans" font-size="7.00">offer</text>
-<polygon fill="none" stroke="black" points="306,-49 306,-51 405,-51 405,-49 306,-49"/>
-<text text-anchor="start" x="308" y="-41.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; name : VARCHAR(100)</text>
-<text text-anchor="start" x="308" y="-30.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; provider : VARCHAR(100)</text>
-<text text-anchor="start" x="308" y="-19.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; route : VARCHAR(100)</text>
-<text text-anchor="start" x="308" y="-8.86667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; typ : VARCHAR(100)</text>
-</g>
-<!-- message&#45;&gt;offer -->
-<g id="edge4" class="edge"><title>message&#45;&gt;offer</title>
-<path fill="none" stroke="black" d="M120.053,-67.45C168.906,-60.4948 237.788,-50.6879 288.339,-43.4907"/>
-<ellipse fill="none" stroke="black" cx="292.329" cy="-42.9227" rx="4.00001" ry="4.00001"/>
-<text text-anchor="middle" x="287.912" y="-45.5203" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
-<text text-anchor="middle" x="128.43" y="-59.6886" font-family="Bitstream-Vera Sans" font-size="7.00">+ offer</text>
-</g>
-<!-- userright -->
-<g id="node2" class="node"><title>userright</title>
-<polygon fill="none" stroke="black" points="458,-49.5 458,-98.5 546,-98.5 546,-49.5 458,-49.5"/>
-<text text-anchor="start" x="485" y="-89.3667" font-family="Bitstream-Vera Sans" font-size="7.00">userright</text>
-<polygon fill="none" stroke="black" points="459,-83 459,-85 545,-85 545,-83 459,-83"/>
-<text text-anchor="start" x="461" y="-75.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; user : VARCHAR(100)</text>
-<text text-anchor="start" x="461" y="-64.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; offer : VARCHAR(100)</text>
-<text text-anchor="start" x="461" y="-53.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; default : INTEGER</text>
-</g>
-<!-- apiuser -->
-<g id="node4" class="node"><title>apiuser</title>
-<polygon fill="none" stroke="black" points="309,-89.5 309,-138.5 401,-138.5 401,-89.5 309,-89.5"/>
-<text text-anchor="start" x="341" y="-129.367" font-family="Bitstream-Vera Sans" font-size="7.00">apiuser</text>
-<polygon fill="none" stroke="black" points="310,-123 310,-125 400,-125 400,-123 310,-123"/>
-<text text-anchor="start" x="312" y="-115.867" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; name : VARCHAR(100)</text>
-<text text-anchor="start" x="312" y="-104.867" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; ng_kunde : INTEGER</text>
-<text text-anchor="start" x="312" y="-93.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; apikey : VARCHAR(50)</text>
-</g>
-<!-- job&#45;&gt;apiuser -->
-<g id="edge10" class="edge"><title>job&#45;&gt;apiuser</title>
-<path fill="none" stroke="black" d="M259.827,-110.763C270.366,-111.121 281.558,-111.502 292.424,-111.872"/>
-<ellipse fill="none" stroke="black" cx="296.657" cy="-112.015" rx="4" ry="4"/>
-<text text-anchor="middle" x="291.453" y="-113.767" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
-<text text-anchor="middle" x="269.028" y="-104.547" font-family="Bitstream-Vera Sans" font-size="7.00">+ user</text>
-</g>
-<!-- apiuser&#45;&gt;userright -->
-<g id="edge6" class="edge"><title>apiuser&#45;&gt;userright</title>
-<path fill="none" stroke="black" d="M409.32,-99.2191C422.569,-95.6138 436.713,-91.7653 449.858,-88.1883"/>
-<text text-anchor="middle" x="442.223" y="-92.3458" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
-<text text-anchor="middle" x="416.955" y="-90.4616" font-family="Bitstream-Vera Sans" font-size="7.00">+ user</text>
-</g>
-<!-- offer&#45;&gt;userright -->
-<g id="edge8" class="edge"><title>offer&#45;&gt;userright</title>
-<path fill="none" stroke="black" d="M413.521,-49.924C425.531,-53.192 438.098,-56.6116 449.865,-59.8135"/>
-<text text-anchor="middle" x="440.01" y="-59.2118" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
-<text text-anchor="middle" x="423.375" y="-45.9257" font-family="Bitstream-Vera Sans" font-size="7.00">+ offer</text>
-</g>
-</g>
-</svg>
Binary file doc/images/favicon.png has changed
Binary file doc/images/netzguerilla-3.png has changed
--- a/doc/index.html	Wed Apr 25 00:06:27 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-<!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="database.html" class="menu">Datenbase Schema</a></li><li><a href="about.html" class="menu">About us</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">
-			<h3>What it is all about?</h3>
-			<p>
-			Iro is a non blocking server for sending a message to a bunsh of recipient. It can handle diffrent types of message typs and can be extended easially.
-			It was initially written for sms backend of <a href="http://castorticker.de">castorticker.de</a>. Diffrent backends are supportes by Iro.
-			</p>
-		</div><div class="item">
-			<h3>Supported Backends</h3>
-			<p>
-			A backend is a provider, that actually sends the message.
-			<ul>
-				<li><b>smtp</b> with TLS and SSL</li>
-				<li><b><a href="http://smstrade.de">smstrade</a></b> all diffrent routes are selectable</li>
-				<li><b><a href="http://sipgate.de">sipgate</a></b> fax and sms</li>
-			</ul>
-			</p>
-		</div><div class="item">
-			<h3>Installation</h3>
-			<p>
-			You'll find the installtion instruction under <a href="dev/install.html">dev/install</a>.
-			</p>
-			<h3>Documentation</h3>
-			<p>
-				All documentation for extending iro see <a href="dev/index.html">dev</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
--- a/doc/install.rst	Wed Apr 25 00:06:27 2012 +0200
+++ b/doc/install.rst	Wed Apr 25 15:06:28 2012 +0200
@@ -1,7 +1,12 @@
 Installation of Iro
 ===================
 
-Start with downloading the source http://BLAFOO. Install the module via ``setup.py install`` und ran ``iro-install``  afterwards, that will create a sample configuration file named ``iro.conf``. Now update the Configuration file and run ``iro-install install``  afterwards, that will create the Database and Offers for you. After that you have to ref:`adding_user`. After that you can start Iro ``twisted -ny extras/iro.tac``.
+Start with downloading the `source <../index.html#files>`_.
+Afterwards install the module via ``setup.py install`` und ran ``iro-install``. That will create a sample configuration file named ``iro.conf``.
+Update the configuration file and run ``iro-install install``  afterwards. That will create the Database and Offers for you.
+After that you have to :ref:`adding_user`. 
+Now you are ready to start Iro ``twisted -ny extras/iro.tac``.
+
 
 .. _adding_user:
 
--- a/doc/tmpl/index.html	Wed Apr 25 00:06:27 2012 +0200
+++ b/doc/tmpl/index.html	Wed Apr 25 15:06:28 2012 +0200
@@ -16,7 +16,7 @@
 			It was initially written for sms backend of <a href="http://castorticker.de">castorticker.de</a>. Diffrent backends are supportes by Iro.
 			</p>
 		</div>
-		<div class="item">
+		<div class="item" id="backends">
 			<h3>Supported Backends</h3>
 			<p>
 			A backend is a provider, that actually sends the message. 
@@ -28,18 +28,38 @@
 			</p>
 
 		</div>
-		<div class="item">
+		<div class="item" id="installation">
 			<h3>Installation</h3>
 			<p>
-			You'll find the installtion instruction under <a href="dev/install.html">dev/install</a>.
+			Just download <a href="files/${code}">${code}</a> see also installtion instruction under <a href="dev/install.html">Installing Iro</a>.
 			</p>
 
 			<h3>Documentation</h3>
 			<p>
-				All documentation for extending iro see <a href="dev/index.html">dev</a>
+			If you want just use iro see <a href="current.html">API Documentation</a>.
+			For extending iro see the <a href="dev/index.html">developer documenation</a>.
+			</p>
+		</div>
+		<div class="item" id="files">
+			<h3>Files</h3>
+			<p>
+			<ul> 
+				<li py:for="f in files" value="${f.version}">${f.version} <a href="files/${f.name}">${f.name}</a></li>
+			</ul>
 			</p>
 		</div>
-	</body>
+		<div class="item">
+			<h3>Planned features for 1.0</h3>
+			<p>
+			<ul>   
+				<li>JSON Interface</li>
+				<li>admin interface for creating modifing users</li>
+				<li>heartbeat</li>
+			</ul>
+			For any further ideas, bugs or anything - send at <a href="mailto:iro@netzgerilla.net">iro@netzgerilla.net</a>.
+			</p>
+		</div>
+</body>
 </html>
 
 	
--- a/fabfile.py	Wed Apr 25 00:06:27 2012 +0200
+++ b/fabfile.py	Wed Apr 25 15:06:28 2012 +0200
@@ -15,6 +15,11 @@
     env.deploy_user = 'hefee'
 
 
+def hal():
+    env.hosts = ['sandy@hal.netzguerilla.net']
+    env.directory = "iro"
+
+
 def prepare_deploy():
     local("python setup.py sdist")
 
@@ -40,3 +45,26 @@
 def testserver():
    prepare_tests()
    virtualenv("python %s/tests/xmlrpc.py"%env.directory)
+
+def cleandoc():
+    local("rm -rf _build/* web/dev/* web/*.html")
+
+def sphinxdoc():
+    local("sphinx-build -b html -d _build/doctrees doc web/dev/")
+
+def createweb():
+    prepare_deploy()
+    cleandoc()
+    local("mv dist/iro-%s.tar.gz web/files/"%__version__)
+    local("python createdoc.py")
+    sphinxdoc()
+    local("tar -czf web.tar.gz web")
+
+def pushweb():
+    put("web.tar.gz","/tmp/")
+    run("tar -czf backup/iro.tar.gz iro/*")
+    run("tar -xzf /tmp/web.tar.gz")
+    run("rm -r iro/*")
+    run("mv web/* %s/"%env.directory)
+    run("rmdir web")
+    run("rm /tmp/web.tar.gz")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/css/960.css	Wed Apr 25 15:06:28 2012 +0200
@@ -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/web/css/reset.css	Wed Apr 25 15:06:28 2012 +0200
@@ -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/web/css/style-ie.css	Wed Apr 25 15:06:28 2012 +0200
@@ -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/web/css/style.css	Wed Apr 25 15:06:28 2012 +0200
@@ -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/web/images/db-schema.svg	Wed Apr 25 15:06:28 2012 +0200
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.26.3 (20100126.1600)
+ -->
+<!-- Title: G Pages: 1 -->
+<svg width="468pt" height="126pt"
+ viewBox="0.00 0.00 468.00 125.74" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph1" class="graph" transform="scale(0.83274 0.83274) rotate(0) translate(4 147)">
+<title>G</title>
+<polygon fill="white" stroke="white" points="-4,5 -4,-147 559,-147 559,5 -4,5"/>
+<!-- message -->
+<g id="node1" class="node"><title>message</title>
+<polygon fill="none" stroke="black" points="8,-18.5 8,-133.5 112,-133.5 112,-18.5 8,-18.5"/>
+<text text-anchor="start" x="43.5" y="-124.367" font-family="Bitstream-Vera Sans" font-size="7.00">message</text>
+<polygon fill="none" stroke="black" points="9,-118 9,-120 111,-120 111,-118 9,-118"/>
+<text text-anchor="start" x="11" y="-110.867" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; id : INTEGER</text>
+<text text-anchor="start" x="11" y="-99.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; recipient : VARCHAR(100)</text>
+<text text-anchor="start" x="11" y="-88.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; isBilled : BOOLEAN</text>
+<text text-anchor="start" x="11" y="-77.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; date : DATETIME</text>
+<text text-anchor="start" x="11" y="-66.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; price : NUMERIC(8, 4)</text>
+<text text-anchor="start" x="11" y="-55.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; count : INTEGER</text>
+<text text-anchor="start" x="11" y="-44.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; exID : VARCHAR(100)</text>
+<text text-anchor="start" x="11" y="-33.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; job : VARCHAR(40)</text>
+<text text-anchor="start" x="11" y="-22.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; offer : VARCHAR(100)</text>
+</g>
+<!-- job -->
+<g id="node3" class="node"><title>job</title>
+<polygon fill="none" stroke="black" points="164.5,-79 164.5,-139 251.5,-139 251.5,-79 164.5,-79"/>
+<text text-anchor="start" x="202.5" y="-130.367" font-family="Bitstream-Vera Sans" font-size="7.00">job</text>
+<polygon fill="none" stroke="black" points="166,-124 166,-126 251,-126 251,-124 166,-124"/>
+<text text-anchor="start" x="168" y="-116.867" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; id : INTEGER</text>
+<text text-anchor="start" x="168" y="-105.867" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; info : VARCHAR(100)</text>
+<text text-anchor="start" x="168" y="-94.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; status : VARCHAR(7)</text>
+<text text-anchor="start" x="168" y="-83.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; user : VARCHAR(100)</text>
+</g>
+<!-- message&#45;&gt;job -->
+<g id="edge2" class="edge"><title>message&#45;&gt;job</title>
+<path fill="none" stroke="black" d="M120.197,-89.4224C129.482,-91.4926 139.067,-93.6298 148.34,-95.6974"/>
+<ellipse fill="none" stroke="black" cx="152.488" cy="-96.6224" rx="4.00001" ry="4.00001"/>
+<text text-anchor="middle" x="146.627" y="-97.3455" font-family="Bitstream-Vera Sans" font-size="7.00">+ id</text>
+<text text-anchor="middle" x="129.963" y="-84.9699" font-family="Bitstream-Vera Sans" font-size="7.00">+ job</text>
+</g>
+<!-- offer -->
+<g id="node5" class="node"><title>offer</title>
+<polygon fill="none" stroke="black" points="304.5,-4 304.5,-64 405.5,-64 405.5,-4 304.5,-4"/>
+<text text-anchor="start" x="347" y="-55.3667" font-family="Bitstream-Vera Sans" font-size="7.00">offer</text>
+<polygon fill="none" stroke="black" points="306,-49 306,-51 405,-51 405,-49 306,-49"/>
+<text text-anchor="start" x="308" y="-41.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; name : VARCHAR(100)</text>
+<text text-anchor="start" x="308" y="-30.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; provider : VARCHAR(100)</text>
+<text text-anchor="start" x="308" y="-19.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; route : VARCHAR(100)</text>
+<text text-anchor="start" x="308" y="-8.86667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; typ : VARCHAR(100)</text>
+</g>
+<!-- message&#45;&gt;offer -->
+<g id="edge4" class="edge"><title>message&#45;&gt;offer</title>
+<path fill="none" stroke="black" d="M120.053,-67.45C168.906,-60.4948 237.788,-50.6879 288.339,-43.4907"/>
+<ellipse fill="none" stroke="black" cx="292.329" cy="-42.9227" rx="4.00001" ry="4.00001"/>
+<text text-anchor="middle" x="287.912" y="-45.5203" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
+<text text-anchor="middle" x="128.43" y="-59.6886" font-family="Bitstream-Vera Sans" font-size="7.00">+ offer</text>
+</g>
+<!-- userright -->
+<g id="node2" class="node"><title>userright</title>
+<polygon fill="none" stroke="black" points="458,-49.5 458,-98.5 546,-98.5 546,-49.5 458,-49.5"/>
+<text text-anchor="start" x="485" y="-89.3667" font-family="Bitstream-Vera Sans" font-size="7.00">userright</text>
+<polygon fill="none" stroke="black" points="459,-83 459,-85 545,-85 545,-83 459,-83"/>
+<text text-anchor="start" x="461" y="-75.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; user : VARCHAR(100)</text>
+<text text-anchor="start" x="461" y="-64.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; offer : VARCHAR(100)</text>
+<text text-anchor="start" x="461" y="-53.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; default : INTEGER</text>
+</g>
+<!-- apiuser -->
+<g id="node4" class="node"><title>apiuser</title>
+<polygon fill="none" stroke="black" points="309,-89.5 309,-138.5 401,-138.5 401,-89.5 309,-89.5"/>
+<text text-anchor="start" x="341" y="-129.367" font-family="Bitstream-Vera Sans" font-size="7.00">apiuser</text>
+<polygon fill="none" stroke="black" points="310,-123 310,-125 400,-125 400,-123 310,-123"/>
+<text text-anchor="start" x="312" y="-115.867" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; name : VARCHAR(100)</text>
+<text text-anchor="start" x="312" y="-104.867" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; ng_kunde : INTEGER</text>
+<text text-anchor="start" x="312" y="-93.8667" font-family="Bitstream-Vera Sans" font-size="7.00">&#45; apikey : VARCHAR(50)</text>
+</g>
+<!-- job&#45;&gt;apiuser -->
+<g id="edge10" class="edge"><title>job&#45;&gt;apiuser</title>
+<path fill="none" stroke="black" d="M259.827,-110.763C270.366,-111.121 281.558,-111.502 292.424,-111.872"/>
+<ellipse fill="none" stroke="black" cx="296.657" cy="-112.015" rx="4" ry="4"/>
+<text text-anchor="middle" x="291.453" y="-113.767" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
+<text text-anchor="middle" x="269.028" y="-104.547" font-family="Bitstream-Vera Sans" font-size="7.00">+ user</text>
+</g>
+<!-- apiuser&#45;&gt;userright -->
+<g id="edge8" class="edge"><title>apiuser&#45;&gt;userright</title>
+<path fill="none" stroke="black" d="M409.32,-99.2191C422.569,-95.6138 436.713,-91.7653 449.858,-88.1883"/>
+<text text-anchor="middle" x="442.223" y="-92.3458" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
+<text text-anchor="middle" x="416.955" y="-90.4616" font-family="Bitstream-Vera Sans" font-size="7.00">+ user</text>
+</g>
+<!-- offer&#45;&gt;userright -->
+<g id="edge6" class="edge"><title>offer&#45;&gt;userright</title>
+<path fill="none" stroke="black" d="M413.521,-49.924C425.531,-53.192 438.098,-56.6116 449.865,-59.8135"/>
+<text text-anchor="middle" x="440.01" y="-59.2118" font-family="Bitstream-Vera Sans" font-size="7.00">+ name</text>
+<text text-anchor="middle" x="423.375" y="-45.9257" font-family="Bitstream-Vera Sans" font-size="7.00">+ offer</text>
+</g>
+</g>
+</svg>
Binary file web/images/favicon.png has changed
Binary file web/images/netzguerilla-3.png has changed