deltacloud-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mfoj...@apache.org
Subject [2/51] [partial] Site: Complete site revamp using bootstrap and docs update
Date Mon, 25 Jun 2012 12:34:16 GMT
http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/content/Scripts/swfobject_modified.js
----------------------------------------------------------------------
diff --git a/site/content/Scripts/swfobject_modified.js b/site/content/Scripts/swfobject_modified.js
deleted file mode 100644
index 773f338..0000000
--- a/site/content/Scripts/swfobject_modified.js
+++ /dev/null
@@ -1,669 +0,0 @@
-/*!    SWFObject v2.0 <http://code.google.com/p/swfobject/>
-       Copyright (c) 2007 Geoff Stearns, Michael Williams, and Bobby van der Sluis
-       This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
-*/
-
-var swfobject = function() {
-
-       var UNDEF = "undefined",
-               OBJECT = "object",
-               SHOCKWAVE_FLASH = "Shockwave Flash",
-               SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
-               FLASH_MIME_TYPE = "application/x-shockwave-flash",
-               EXPRESS_INSTALL_ID = "SWFObjectExprInst",
-
-               win = window,
-               doc = document,
-               nav = navigator,
-
-               domLoadFnArr = [],
-               regObjArr = [],
-               timer = null,
-               storedAltContent = null,
-               storedAltContentId = null,
-               isDomLoaded = false,
-               isExpressInstallActive = false;
-
-       /* Centralized function for browser feature detection
-               - Proprietary feature detection (conditional compiling) is used to detect Internet Explorer's features
-               - User agent string detection is only used when no alternative is possible
-               - Is executed directly for optimal performance
-       */
-       var ua = function() {
-               var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF && typeof doc.appendChild != UNDEF && typeof doc.replaceChild != UNDEF && typeof doc.removeChild != UNDEF && typeof doc.cloneNode != UNDEF,
-                       playerVersion = [0,0,0],
-                       d = null;
-               if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
-                       d = nav.plugins[SHOCKWAVE_FLASH].description;
-                       if (d) {
-                               d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
-                               playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
-                               playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
-                               playerVersion[2] = /r/.test(d) ? parseInt(d.replace(/^.*r(.*)$/, "$1"), 10) : 0;
-                       }
-               }
-               else if (typeof win.ActiveXObject != UNDEF) {
-                       var a = null, fp6Crash = false;
-                       try {
-                               a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".7");
-                       }
-                       catch(e) {
-                               try {
-                                       a = new ActiveXObject(SHOCKWAVE_FLASH_AX + ".6");
-                                       playerVersion = [6,0,21];
-                                       a.AllowScriptAccess = "always";  // Introduced in fp6.0.47
-                               }
-                               catch(e) {
-                                       if (playerVersion[0] == 6) {
-                                               fp6Crash = true;
-                                       }
-                               }
-                               if (!fp6Crash) {
-                                       try {
-                                               a = new ActiveXObject(SHOCKWAVE_FLASH_AX);
-                                       }
-                                       catch(e) {}
-                               }
-                       }
-                       if (!fp6Crash && a) { // a will return null when ActiveX is disabled
-                               try {
-                                       d = a.GetVariable("$version");  // Will crash fp6.0.21/23/29
-                                       if (d) {
-                                               d = d.split(" ")[1].split(",");
-                                               playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
-                                       }
-                               }
-                               catch(e) {}
-                       }
-               }
-               var u = nav.userAgent.toLowerCase(),
-                       p = nav.platform.toLowerCase(),
-                       webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit
-                       ie = false,
-                       windows = p ? /win/.test(p) : /win/.test(u),
-                       mac = p ? /mac/.test(p) : /mac/.test(u);
-               /*@cc_on
-                       ie = true;
-                       @if (@_win32)
-                               windows = true;
-                       @elif (@_mac)
-                               mac = true;
-                       @end
-               @*/
-               return { w3cdom:w3cdom, pv:playerVersion, webkit:webkit, ie:ie, win:windows, mac:mac };
-       }();
-
-       /* Cross-browser onDomLoad
-               - Based on Dean Edwards' solution: http://dean.edwards.name/weblog/2006/06/again/
-               - Will fire an event as soon as the DOM of a page is loaded (supported by Gecko based browsers - like Firefox -, IE, Opera9+, Safari)
-       */
-       var onDomLoad = function() {
-               if (!ua.w3cdom) {
-                       return;
-               }
-               addDomLoadEvent(main);
-               if (ua.ie && ua.win) {
-                       try {  // Avoid a possible Operation Aborted error
-                               doc.write("<scr" + "ipt id=__ie_ondomload defer=true src=//:></scr" + "ipt>"); // String is split into pieces to avoid Norton AV to add code that can cause errors
-                               var s = getElementById("__ie_ondomload");
-                               if (s) {
-                                       s.onreadystatechange = function() {
-                                               if (this.readyState == "complete") {
-                                                       this.parentNode.removeChild(this);
-                                                       callDomLoadFunctions();
-                                               }
-                                       };
-                               }
-                       }
-                       catch(e) {}
-               }
-               if (ua.webkit && typeof doc.readyState != UNDEF) {
-                       timer = setInterval(function() { if (/loaded|complete/.test(doc.readyState)) { callDomLoadFunctions(); }}, 10);
-               }
-               if (typeof doc.addEventListener != UNDEF) {
-                       doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, null);
-               }
-               addLoadEvent(callDomLoadFunctions);
-       }();
-
-       function callDomLoadFunctions() {
-               if (isDomLoaded) {
-                       return;
-               }
-               if (ua.ie && ua.win) { // Test if we can really add elements to the DOM; we don't want to fire it too early
-                       var s = createElement("span");
-                       try { // Avoid a possible Operation Aborted error
-                               var t = doc.getElementsByTagName("body")[0].appendChild(s);
-                               t.parentNode.removeChild(t);
-                       }
-                       catch (e) {
-                               return;
-                       }
-               }
-               isDomLoaded = true;
-               if (timer) {
-                       clearInterval(timer);
-                       timer = null;
-               }
-               var dl = domLoadFnArr.length;
-               for (var i = 0; i < dl; i++) {
-                       domLoadFnArr[i]();
-               }
-       }
-
-       function addDomLoadEvent(fn) {
-               if (isDomLoaded) {
-                       fn();
-               }
-               else {
-                       domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+
-               }
-       }
-
-       /* Cross-browser onload
-               - Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/
-               - Will fire an event as soon as a web page including all of its assets are loaded
-        */
-       function addLoadEvent(fn) {
-               if (typeof win.addEventListener != UNDEF) {
-                       win.addEventListener("load", fn, false);
-               }
-               else if (typeof doc.addEventListener != UNDEF) {
-                       doc.addEventListener("load", fn, false);
-               }
-               else if (typeof win.attachEvent != UNDEF) {
-                       win.attachEvent("onload", fn);
-               }
-               else if (typeof win.onload == "function") {
-                       var fnOld = win.onload;
-                       win.onload = function() {
-                               fnOld();
-                               fn();
-                       };
-               }
-               else {
-                       win.onload = fn;
-               }
-       }
-
-       /* Main function
-               - Will preferably execute onDomLoad, otherwise onload (as a fallback)
-       */
-       function main() { // Static publishing only
-               var rl = regObjArr.length;
-               for (var i = 0; i < rl; i++) { // For each registered object element
-                       var id = regObjArr[i].id;
-                       if (ua.pv[0] > 0) {
-                               var obj = getElementById(id);
-                               if (obj) {
-                                       regObjArr[i].width = obj.getAttribute("width") ? obj.getAttribute("width") : "0";
-                                       regObjArr[i].height = obj.getAttribute("height") ? obj.getAttribute("height") : "0";
-                                       if (hasPlayerVersion(regObjArr[i].swfVersion)) { // Flash plug-in version >= Flash content version: Houston, we have a match!
-                                               if (ua.webkit && ua.webkit < 312) { // Older webkit engines ignore the object element's nested param elements
-                                                       fixParams(obj);
-                                               }
-                                               setVisibility(id, true);
-                                       }
-                                       else if (regObjArr[i].expressInstall && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) { // Show the Adobe Express Install dialog if set by the web page author and if supported (fp6.0.65+ on Win/Mac OS only)
-                                               showExpressInstall(regObjArr[i]);
-                                       }
-                                       else { // Flash plug-in and Flash content version mismatch: display alternative content instead of Flash content
-                                               displayAltContent(obj);
-                                       }
-                               }
-                       }
-                       else {  // If no fp is installed, we let the object element do its job (show alternative content)
-                               setVisibility(id, true);
-                       }
-               }
-       }
-
-       /* Fix nested param elements, which are ignored by older webkit engines
-               - This includes Safari up to and including version 1.2.2 on Mac OS 10.3
-               - Fall back to the proprietary embed element
-       */
-       function fixParams(obj) {
-               var nestedObj = obj.getElementsByTagName(OBJECT)[0];
-               if (nestedObj) {
-                       var e = createElement("embed"), a = nestedObj.attributes;
-                       if (a) {
-                               var al = a.length;
-                               for (var i = 0; i < al; i++) {
-                                       if (a[i].nodeName.toLowerCase() == "data") {
-                                               e.setAttribute("src", a[i].nodeValue);
-                                       }
-                                       else {
-                                               e.setAttribute(a[i].nodeName, a[i].nodeValue);
-                                       }
-                               }
-                       }
-                       var c = nestedObj.childNodes;
-                       if (c) {
-                               var cl = c.length;
-                               for (var j = 0; j < cl; j++) {
-                                       if (c[j].nodeType == 1 && c[j].nodeName.toLowerCase() == "param") {
-                                               e.setAttribute(c[j].getAttribute("name"), c[j].getAttribute("value"));
-                                       }
-                               }
-                       }
-                       obj.parentNode.replaceChild(e, obj);
-               }
-       }
-
-       /* Fix hanging audio/video threads and force open sockets and NetConnections to disconnect
-               - Occurs when unloading a web page in IE using fp8+ and innerHTML/outerHTML
-               - Dynamic publishing only
-       */
-       function fixObjectLeaks(id) {
-               if (ua.ie && ua.win && hasPlayerVersion("8.0.0")) {
-                       win.attachEvent("onunload", function () {
-                               var obj = getElementById(id);
-                               if (obj) {
-                                       for (var i in obj) {
-                                               if (typeof obj[i] == "function") {
-                                                       obj[i] = function() {};
-                                               }
-                                       }
-                                       obj.parentNode.removeChild(obj);
-                               }
-                       });
-               }
-       }
-
-       /* Show the Adobe Express Install dialog
-               - Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75
-       */
-       function showExpressInstall(regObj) {
-               isExpressInstallActive = true;
-               var obj = getElementById(regObj.id);
-               if (obj) {
-                       if (regObj.altContentId) {
-                               var ac = getElementById(regObj.altContentId);
-                               if (ac) {
-                                       storedAltContent = ac;
-                                       storedAltContentId = regObj.altContentId;
-                               }
-                       }
-                       else {
-                               storedAltContent = abstractAltContent(obj);
-                       }
-                       if (!(/%$/.test(regObj.width)) && parseInt(regObj.width, 10) < 310) {
-                               regObj.width = "310";
-                       }
-                       if (!(/%$/.test(regObj.height)) && parseInt(regObj.height, 10) < 137) {
-                               regObj.height = "137";
-                       }
-                       doc.title = doc.title.slice(0, 47) + " - Flash Player Installation";
-                       var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn",
-                               dt = doc.title,
-                               fv = "MMredirectURL=" + win.location + "&MMplayerType=" + pt + "&MMdoctitle=" + dt,
-                               replaceId = regObj.id;
-                       // For IE when a SWF is loading (AND: not available in cache) wait for the onload event to fire to remove the original object element
-                       // In IE you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
-                       if (ua.ie && ua.win && obj.readyState != 4) {
-                               var newObj = createElement("div");
-                               replaceId += "SWFObjectNew";
-                               newObj.setAttribute("id", replaceId);
-                               obj.parentNode.insertBefore(newObj, obj); // Insert placeholder div that will be replaced by the object element that loads expressinstall.swf
-                               obj.style.display = "none";
-                               win.attachEvent("onload", function() { obj.parentNode.removeChild(obj); });
-                       }
-                       createSWF({ data:regObj.expressInstall, id:EXPRESS_INSTALL_ID, width:regObj.width, height:regObj.height }, { flashvars:fv }, replaceId);
-               }
-       }
-
-       /* Functions to abstract and display alternative content
-       */
-       function displayAltContent(obj) {
-               if (ua.ie && ua.win && obj.readyState != 4) {
-                       // For IE when a SWF is loading (AND: not available in cache) wait for the onload event to fire to remove the original object element
-                       // In IE you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
-                       var el = createElement("div");
-                       obj.parentNode.insertBefore(el, obj); // Insert placeholder div that will be replaced by the alternative content
-                       el.parentNode.replaceChild(abstractAltContent(obj), el);
-                       obj.style.display = "none";
-                       win.attachEvent("onload", function() { obj.parentNode.removeChild(obj); });
-               }
-               else {
-                       obj.parentNode.replaceChild(abstractAltContent(obj), obj);
-               }
-       }
-
-       function abstractAltContent(obj) {
-               var ac = createElement("div");
-               if (ua.win && ua.ie) {
-                       ac.innerHTML = obj.innerHTML;
-               }
-               else {
-                       var nestedObj = obj.getElementsByTagName(OBJECT)[0];
-                       if (nestedObj) {
-                               var c = nestedObj.childNodes;
-                               if (c) {
-                                       var cl = c.length;
-                                       for (var i = 0; i < cl; i++) {
-                                               if (!(c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "param") && !(c[i].nodeType == 8)) {
-                                                       ac.appendChild(c[i].cloneNode(true));
-                                               }
-                                       }
-                               }
-                       }
-               }
-               return ac;
-       }
-
-       /* Cross-browser dynamic SWF creation
-       */
-       function createSWF(attObj, parObj, id) {
-               var r, el = getElementById(id);
-               if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content
-                       attObj.id = id;
-               }
-               if (ua.ie && ua.win) { // IE, the object element and W3C DOM methods do not combine: fall back to outerHTML
-                       var att = "";
-                       for (var i in attObj) {
-                               if (attObj[i] != Object.prototype[i]) { // Filter out prototype additions from other potential libraries, like Object.prototype.toJSONString = function() {}
-                                       if (i == "data") {
-                                               parObj.movie = attObj[i];
-                                       }
-                                       else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
-                                               att += ' class="' + attObj[i] + '"';
-                                       }
-                                       else if (i != "classid") {
-                                               att += ' ' + i + '="' + attObj[i] + '"';
-                                       }
-                               }
-                       }
-                       var par = "";
-                       for (var j in parObj) {
-                               if (parObj[j] != Object.prototype[j]) { // Filter out prototype additions from other potential libraries
-                                       par += '<param name="' + j + '" value="' + parObj[j] + '" />';
-                               }
-                       }
-                       el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
-                       fixObjectLeaks(attObj.id); // This bug affects dynamic publishing only
-                       r = getElementById(attObj.id);
-               }
-               else if (ua.webkit && ua.webkit < 312) { // Older webkit engines ignore the object element's nested param elements: fall back to the proprietary embed element
-                       var e = createElement("embed");
-                       e.setAttribute("type", FLASH_MIME_TYPE);
-                       for (var k in attObj) {
-                               if (attObj[k] != Object.prototype[k]) { // Filter out prototype additions from other potential libraries
-                                       if (k == "data") {
-                                               e.setAttribute("src", attObj[k]);
-                                       }
-                                       else if (k.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
-                                               e.setAttribute("class", attObj[k]);
-                                       }
-                                       else if (k != "classid") { // Filter out IE specific attribute
-                                               e.setAttribute(k, attObj[k]);
-                                       }
-                               }
-                       }
-                       for (var l in parObj) {
-                               if (parObj[l] != Object.prototype[l]) { // Filter out prototype additions from other potential libraries
-                                       if (l != "movie") { // Filter out IE specific param element
-                                               e.setAttribute(l, parObj[l]);
-                                       }
-                               }
-                       }
-                       el.parentNode.replaceChild(e, el);
-                       r = e;
-               }
-               else { // Well-behaving browsers
-                       var o = createElement(OBJECT);
-                       o.setAttribute("type", FLASH_MIME_TYPE);
-                       for (var m in attObj) {
-                               if (attObj[m] != Object.prototype[m]) { // Filter out prototype additions from other potential libraries
-                                       if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
-                                               o.setAttribute("class", attObj[m]);
-                                       }
-                                       else if (m != "classid") { // Filter out IE specific attribute
-                                               o.setAttribute(m, attObj[m]);
-                                       }
-                               }
-                       }
-                       for (var n in parObj) {
-                               if (parObj[n] != Object.prototype[n] && n != "movie") { // Filter out prototype additions from other potential libraries and IE specific param element
-                                       createObjParam(o, n, parObj[n]);
-                               }
-                       }
-                       el.parentNode.replaceChild(o, el);
-                       r = o;
-               }
-               return r;
-       }
-
-       function createObjParam(el, pName, pValue) {
-               var p = createElement("param");
-               p.setAttribute("name", pName);
-               p.setAttribute("value", pValue);
-               el.appendChild(p);
-       }
-
-       function getElementById(id) {
-               return doc.getElementById(id);
-       }
-
-       function createElement(el) {
-               return doc.createElement(el);
-       }
-
-       function hasPlayerVersion(rv) {
-               var pv = ua.pv, v = rv.split(".");
-               v[0] = parseInt(v[0], 10);
-               v[1] = parseInt(v[1], 10);
-               v[2] = parseInt(v[2], 10);
-               return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false;
-       }
-
-       /* Cross-browser dynamic CSS creation
-               - Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php
-       */
-       function createCSS(sel, decl) {
-               if (ua.ie && ua.mac) {
-                       return;
-               }
-               var h = doc.getElementsByTagName("head")[0], s = createElement("style");
-               s.setAttribute("type", "text/css");
-               s.setAttribute("media", "screen");
-               if (!(ua.ie && ua.win) && typeof doc.createTextNode != UNDEF) {
-                       s.appendChild(doc.createTextNode(sel + " {" + decl + "}"));
-               }
-               h.appendChild(s);
-               if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {
-                       var ls = doc.styleSheets[doc.styleSheets.length - 1];
-                       if (typeof ls.addRule == OBJECT) {
-                               ls.addRule(sel, decl);
-                       }
-               }
-       }
-
-       function setVisibility(id, isVisible) {
-               var v = isVisible ? "visible" : "hidden";
-               if (isDomLoaded) {
-                       getElementById(id).style.visibility = v;
-               }
-               else {
-                       createCSS("#" + id, "visibility:" + v);
-               }
-       }
-
-       function getTargetVersion(obj) {
-           if (!obj)
-               return 0;
-               var c = obj.childNodes;
-               var cl = c.length;
-               for (var i = 0; i < cl; i++) {
-                       if (c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "object") {
-                           c = c[i].childNodes;
-                           cl = c.length;
-                           i = 0;
-                       }
-                       if (c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "param" && c[i].getAttribute("name") == "swfversion") {
-                          return c[i].getAttribute("value");
-                       }
-               }
-               return 0;
-       }
-
-       function getExpressInstall(obj) {
-           if (!obj)
-               return "";
-               var c = obj.childNodes;
-               var cl = c.length;
-               for (var i = 0; i < cl; i++) {
-                       if (c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "object") {
-                           c = c[i].childNodes;
-                           cl = c.length;
-                           i = 0;
-                       }
-                       if (c[i].nodeType == 1 && c[i].nodeName.toLowerCase() == "param" && c[i].getAttribute("name") == "expressinstall") {
-                           return c[i].getAttribute("value");
-                       }
-               }
-               return "";
-       }
-
-       return {
-               /* Public API
-                       - Reference: http://code.google.com/p/swfobject/wiki/SWFObject_2_0_documentation
-               */
-               registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr) {
-                       if (!ua.w3cdom || !objectIdStr) {
-                               return;
-                       }
-                       var obj = document.getElementById(objectIdStr);
-                       var xi = getExpressInstall(obj);
-                       var regObj = {};
-                       regObj.id = objectIdStr;
-                       regObj.swfVersion = swfVersionStr ? swfVersionStr : getTargetVersion(obj);
-                       regObj.expressInstall = xiSwfUrlStr ? xiSwfUrlStr : ((xi != "") ? xi : false);
-                       regObjArr[regObjArr.length] = regObj;
-                       setVisibility(objectIdStr, false);
-               },
-
-               getObjectById: function(objectIdStr) {
-                       var r = null;
-                       if (ua.w3cdom && isDomLoaded) {
-                               var o = getElementById(objectIdStr);
-                               if (o) {
-                                       var n = o.getElementsByTagName(OBJECT)[0];
-                                       if (!n || (n && typeof o.SetVariable != UNDEF)) {
-                                       r = o;
-                                       }
-                                       else if (typeof n.SetVariable != UNDEF) {
-                                               r = n;
-                                       }
-                               }
-                       }
-                       return r;
-               },
-
-               embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj) {
-                       if (!ua.w3cdom || !swfUrlStr || !replaceElemIdStr || !widthStr || !heightStr || !swfVersionStr) {
-                               return;
-                       }
-                       widthStr += ""; // Auto-convert to string to make it idiot proof
-                       heightStr += "";
-                       if (hasPlayerVersion(swfVersionStr)) {
-                               setVisibility(replaceElemIdStr, false);
-                               var att = (typeof attObj == OBJECT) ? attObj : {};
-                               att.data = swfUrlStr;
-                               att.width = widthStr;
-                               att.height = heightStr;
-                               var par = (typeof parObj == OBJECT) ? parObj : {};
-                               if (typeof flashvarsObj == OBJECT) {
-                                       for (var i in flashvarsObj) {
-                                               if (flashvarsObj[i] != Object.prototype[i]) { // Filter out prototype additions from other potential libraries
-                                                       if (typeof par.flashvars != UNDEF) {
-                                                               par.flashvars += "&" + i + "=" + flashvarsObj[i];
-                                                       }
-                                                       else {
-                                                               par.flashvars = i + "=" + flashvarsObj[i];
-                                                       }
-                                               }
-                                       }
-                               }
-                               addDomLoadEvent(function() {
-                                       createSWF(att, par, replaceElemIdStr);
-                                       if (att.id == replaceElemIdStr) {
-                                               setVisibility(replaceElemIdStr, true);
-                                       }
-                               });
-                       }
-                       else if (xiSwfUrlStr && !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) {
-                               setVisibility(replaceElemIdStr, false);
-                               addDomLoadEvent(function() {
-                                       var regObj = {};
-                                       regObj.id = regObj.altContentId = replaceElemIdStr;
-                                       regObj.width = widthStr;
-                                       regObj.height = heightStr;
-                                       regObj.expressInstall = xiSwfUrlStr;
-                                       showExpressInstall(regObj);
-                               });
-                       }
-               },
-
-               getFlashPlayerVersion: function() {
-                       return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };
-               },
-
-               hasFlashPlayerVersion:hasPlayerVersion,
-
-               createSWF: function(attObj, parObj, replaceElemIdStr) {
-                       if (ua.w3cdom && isDomLoaded) {
-                               return createSWF(attObj, parObj, replaceElemIdStr);
-                       }
-                       else {
-                               return undefined;
-                       }
-               },
-
-               createCSS: function(sel, decl) {
-                       if (ua.w3cdom) {
-                               createCSS(sel, decl);
-                       }
-               },
-
-               addDomLoadEvent:addDomLoadEvent,
-
-               addLoadEvent:addLoadEvent,
-
-               getQueryParamValue: function(param) {
-                       var q = doc.location.search || doc.location.hash;
-                       if (param == null) {
-                               return q;
-                       }
-                       if(q) {
-                               var pairs = q.substring(1).split("&");
-                               for (var i = 0; i < pairs.length; i++) {
-                                       if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
-                                               return pairs[i].substring((pairs[i].indexOf("=") + 1));
-                                       }
-                               }
-                       }
-                       return "";
-               },
-
-               // For internal usage only
-               expressInstallCallback: function() {
-                       if (isExpressInstallActive && storedAltContent) {
-                               var obj = getElementById(EXPRESS_INSTALL_ID);
-                               if (obj) {
-                                       obj.parentNode.replaceChild(storedAltContent, obj);
-                                       if (storedAltContentId) {
-                                               setVisibility(storedAltContentId, true);
-                                               if (ua.ie && ua.win) {
-                                                       storedAltContent.style.display = "block";
-                                               }
-                                       }
-                                       storedAltContent = null;
-                                       storedAltContentId = null;
-                                       isExpressInstallActive = false;
-                               }
-                       }
-               }
-
-       };
-
-}();

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/content/_credentials.haml
----------------------------------------------------------------------
diff --git a/site/content/_credentials.haml b/site/content/_credentials.haml
deleted file mode 100644
index 3f2b887..0000000
--- a/site/content/_credentials.haml
+++ /dev/null
@@ -1,190 +0,0 @@
----
-filter:
-  - haml
----
-%p
-  Deltacloud uses basic HTTP
-  %a{:href=>"api.html#h1_3"}
-    authentication
-  to receive credentials from the
-  client and passes them through to the backend cloud it is talking to. The
-  credentials always consist of a username and password, and are never
-  stored on the server.  The exact credentials for logging into the server,
-  and where you find them, depends on the backend cloud that the server is
-  talking to.
-%a(name="credentials")
-%p
-  The following table gives details about the credentials that must be
-  provided for each of the supported clouds. The entry from
-  the Driver column needs to be passed as the
-  %tt
-    \-i
-  option to the
-  %tt
-    deltacloudd
-  server daemon. Note that some of the drivers require additional information, e.g.,
-  API endpoint URL's, be passed through environment variables, as addressed in the
-  %a{:href=>"drivers.html#specific_driver_notes"}
-    Notes
-  for Specific Drivers section below.
-
-%h3 Cloud provider credentials
-%table#providers
-  %tr
-    %th
-      %strong Cloud
-    %th
-      %strong Driver
-    %th
-      %strong Username
-    %th
-      %strong Password
-    %th
-      %strong Notes
-  %tr
-    %td
-      %strong mock
-    %td
-      %tt mock
-    %td
-      %tt
-        mockuser
-    %td
-      %tt
-        mockpassword
-    %td
-      The mock driver doesn't talk to any cloud; it just pretends to be a cloud
-  %tr
-    %td
-      %strong Amazon EC2/S3
-    %td
-      %tt ec2
-    %td
-      Access Key ID
-    %td
-      Secret Access Key
-    %td
-      This information can be found on the
-      %a{ :href => "http://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key"} Security Credentials
-      page in your AWS account
-  %tr
-    %td
-      %strong Eucalyptus
-    %td
-      %tt eucalyptus
-    %td
-      Access Key ID
-    %td
-      Secret Access Key
-    %td
-  %tr
-    %td
-      %strong GoGrid
-    %td
-      %tt gogrid
-    %td
-      API Key
-    %td
-      Shared Secret
-    %td
-      Go to
-      %tt My Account &gt; API Keys
-      for
-      %a{ :href => "https://my.gogrid.com/gogrid/com.servepath.gogrid.GoGrid/index.html" } your account
-      and click on the key you want to use to find the shared secret.
-  %tr
-    %td
-      %strong IBM SBC
-    %td
-      %tt sbc
-    %td
-      Username
-    %td
-      Password
-    %td
-  %tr
-    %td
-      %strong Microsoft Azure (Storage Account only)
-    %td
-      %tt azure
-    %td
-      Public Storage Account Name
-    %td
-      Primary Access Key
-    %td
-      The Storage Account Name is chosen when you create the service (e.g. name in http://name.blob.core.windows.net/). This and the access key are available from the service control panel.
-  %tr
-    %td
-      %strong OpenNebula
-    %td
-      %tt opennebula
-    %td
-      OpenNebula user
-    %td
-      OpenNebula password
-    %td
-      Set the environment variable
-      %tt OCCI_URL
-      to the address on which OpenNebula's OCCI server is listening.
-  %tr
-    %td
-      %strong Rackspace Cloud Servers/Cloud Files
-    %td
-      %tt rackspace
-    %td
-      Rackspace user name
-    %td
-      API Key
-    %td
-      Obtain the key from the
-      %a{ :href => "https://manage.rackspacecloud.com/APIAccess.do"} API Access
-      page in your control panel
-  %tr
-    %td
-      %strong RHEV-M
-    %td
-      %tt rhevm
-    %td
-      %a{ :href => "http://markmc.fedorapeople.org/rhevm-api/en-US/html/chap-REST_API_Guide-Authentication.html" } RHEV-M user name plus Windows domain
-      , e.g.,
-      %tt admin@rhevm.example.com
-    %td
-      RHEV-M password
-    %td
-      Set environment variable
-      %tt API_PROVIDER
-      to the URL of the RHEV-M REST API endpoint.
-  %tr
-    %td
-      %strong Rimuhosting
-    %td
-      %tt rimuhosting
-    %td not used (?)
-    %td API Key
-    %td
-  %tr
-    %td
-      %strong Terremark
-    %td
-      %tt terremark
-    %td
-      Username
-    %td
-      Password
-    %td
-  %tr
-    %td
-      %strong VMware vSphere
-    %td
-      %tt vsphere
-    %td vSphere user
-    %td vSphere user password
-    %td Set environment variable API_PROVIDER to the hostname of the vSphere server
-  %tr
-    %td
-      %strong OpenStack
-    %td
-      %tt openstack
-    %td OpenStack user
-    %td OpenStack user password
-    %td Set environment variable API_PROVIDER to the URL of OpenStack API entrypoint

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/content/_drivers.mdown
----------------------------------------------------------------------
diff --git a/site/content/_drivers.mdown b/site/content/_drivers.mdown
deleted file mode 100644
index cf78b33..0000000
--- a/site/content/_drivers.mdown
+++ /dev/null
@@ -1,170 +0,0 @@
-# Deltacloud Drivers
-
-Deltacloud provides drivers for a [growing number](drivers.html#providers) of popular
-IaaS cloud providers. This page contains notes pertinent to specific cloud provider drivers, such
-as the [credentials](drivers.html#credentials) that should be used for a given cloud provider.
-Furthermore the information here outlines the mechanism through which any API call sent by a
-given client to a Deltacloud server instance may be routed to a specific driver, regardless
-of the 'default' driver that the Deltacloud server was invoked for.
-
-------------------------------------------------
-
-## Dynamic driver switching
-
-When the Deltacloud server is started it is passed a parameter
-that specifies the **default** driver to be used for API operations:
-
-    $ deltacloudd -i ec2
-
-The above for example starts the Detlacloud server with the Amazon EC2 driver. Whilst
-it is possible to start a number of Deltacloud server instances for each cloud provider
-that you wish to connect to (e.g., on different ports), a mechanism is provided with which
-to instruct the server to use a specific driver, regardless of the current default. The
-Deltacloud API **drivers** colletion (e.g. GET /api/drivers) provides a list of all currently
-supported cloud provider drivers.
-
-Some drivers also support the notion of a *provider*. Changing the provider
-makes it possible to use the same driver against different instances of a
-cloud, for example different regions in EC2 or different installations of
-RHEV-M. The possible range of values for the provider is driver-specific,
-and listed in the notes for each driver below.
-
-The driver and provider can be selected in one of two ways:
-
-1. Through the request headers `X-Deltacloud-Driver` and
-   `X-Deltacloud-Provider`. For example, including the headers
-   `X-Deltacloud-Driver: ec2` and `X-Deltacloud-Provider: eu-west-1`
-   ensures that a request will be serviced by the EC2 driver, and that the
-   driver will use the eu-west-1 region in EC2.
-2. Through the matrix request parameters `driver` and `provider` in the
-   `api` component of the server's URL. For example, requesting
-   `http://localhost:3001/api;driver=ec2;provider=eu-west-1` has the same
-   effect as using the two request headers in the example above.
-
-------------------------------------------------
-
-## Driver functionality and Credentials
-<table providers></table>
-<a name=providers>.
-
-
-
-------------------------------------------------
-
-<a name=specific_driver_notes> .
-
-## Notes on specific drivers
-
-### EC2 Driver
-
-The providers for the EC2 driver correspond to AWS's regions, and currently
-are `us-east-1`, `us-east-1`, `eu-west-1`, `ap-southeast-1`.
-
-------------------------------------------------
-
-### Eucalyptus Driver
-
-The Eucalyptus driver is based on the EC2 driver.
-
-The driver allows selecting the Eucalyptus installation by setting a
-provider in the format
-
-    ec2=IP[:PORT];s3=IP[:PORT]
-
-For example, for the Eucalyptus installation at `192.168.1.1:8773` and a
-Walrus installation at `192.168.1.2:8773`, the driver can be pointed at
-that installation by passing the request headers
-
-    X-Deltacloud-Driver: eucalyptus
-    X-Deltacloud-Provider: ec2=192.168.1.1:8773;s3=192.168.1.2:8773
-
-------------------------------------------------
-
-### RHEV-M Driver
-
-The RHEV-M driver supports latest release of <a href="http://www.redhat.com/virtualization/rhev/server/"
-target="_blank">Red Hat Enterprise Virtualization Manager</a> (3.0 currently).
-In order to make the driver work with this provider, you need to set an/the
-API_PROVIDER environment variable or use the 'X-Deltacloud-Provider' request
-header to the URL of the RHEV-M REST API entry point. The usual URL looks like:
-
-    API_PROVIDER="https://rhevm.hostname.com:8443/rhevm-api;645e425e-66fe-4ac9-8874-537bd10ef08d" 
-
-Note: To make sure that you have right credentials, you can try to access 
-<a href="">https://rhevm.hostname.com:8443/rhevm-api</a> in your browser.
-If you're able to authenticate within the browser, then the crendentials you used
-are valid Deltacloud credentials.
-
-Note: In order to make RHEV-M driver work properly, you need to set the RHEV-M
-<a href="http://markmc.fedorapeople.org/rhevm-api/en-US/html-single/index.html#chap-REST_API_Guide-Data_Centers"
-target="_blank">Data Center</a> UUID you want to speak with in API_PROVIDER url (see the example
-above). To obtain a list of all Data Centers you can choose from, start Deltacloud API without
-specifying a datacenter in the API_PROVIDER URL and do this request:
-
-    GET /api/drivers/rhevm?format=xml
-
-The list of possible datacenters will appear in the 'providers' section.
-
-------------------------------------------------
-
-### VMware vSphere Driver
-
-For details on how to make the VMware vSphere driver work with Deltacloud API,
-please refer to <a href="https://www.aeolusproject.org/redmine/projects/aeolus/wiki/VSphere_Setup"
-target="_blank">vSphere Setup</a> in Aeolus project wiki.
-
-In order to connect to vSphere, you need to set the API_PROVIDER environment
-variable or use the 'X-Deltacloud-Provider' HTTP header in the request to the vSphere
-host you want to use. Example:
-
-    API_PROVIDER="vsphere.hostname.com"
-
-The username and password in 401 challenge should be the same as those used in the vSphere Control
-Center.
-
-------------------------------------------------
-
-### OpenStack Driver
-
-To connect to OpenStack API, you will need to set the API_provider environment
-variable or the 'X-Deltacloud-Provider' HTTP header to a valid OpenStack API
-entrypoint. 
-
-------------------------------------------------
-
-### Rackspace Driver
-
-When using the Rackspace-cloud driver (Rackspace cloud used to be called
-"Mosso") - the password in a HTTP 401 challenge should be your API key, NOT
-your rackspace account password.  You can get the API-key, or generate a
-new one, from the rackspace console.
-
-------------------------------------------------
-
-### RimuHosting
-
-Further details coming soon.
-
-------------------------------------------------
-
-### OpenNebula
-
-When using the [OpenNebula](http://www.opennebula.org/) driver, the
-credentials passed in response to the HTTP 401 authentication challenge
-should be your OpenNebula user and password.
-
-The address, on which the OCCI server is listening, needs to be defined in
-an environment variable called OCCI_URL.
-
-The OpenNebula driver has been updated to support v3.x of the OpenNebula API.
-The driver is contributed by Daniel Molina who has also put together a 'how to'
-for using OpenNebula through Deltacloud which is available
-[here](http://wiki.opennebula.org/deltacloud).
-
-------------------------------------------------
-
-### IBM Smartcloud Driver
-
-When using the IBM SmartCloud driver, the credentials passed in response to
-the HTTP 401 authentication challenge should be your IBM SmartCloud
-username and password.

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/content/_external.haml
----------------------------------------------------------------------
diff --git a/site/content/_external.haml b/site/content/_external.haml
deleted file mode 100644
index ec5f141..0000000
--- a/site/content/_external.haml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-filter:
-  - haml
-  - outline
----
-- page = render(:partial => "markdown", :locals => {:path => path} )
-- doc = Hpricot(page)
-- header = (doc/"h1").remove
-= header.first
-/- title, rest = page.split("</h1>")
-
-/= title + '</h1>'
-<toc class="toc" numbering="off" toc_style="ul" toc_range="h2-h3" />
-
-/= rest
-= doc.to_html

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/content/_markdown.haml
----------------------------------------------------------------------
diff --git a/site/content/_markdown.haml b/site/content/_markdown.haml
deleted file mode 100644
index 845f5c0..0000000
--- a/site/content/_markdown.haml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-filter:
-  - haml
-  - markdown
----
-= File.open(path).read

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/content/_navigation.haml
----------------------------------------------------------------------
diff --git a/site/content/_navigation.haml b/site/content/_navigation.haml
deleted file mode 100644
index 0ad7e81..0000000
--- a/site/content/_navigation.haml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-filter: haml
----
-- menu = [ { :href => "index.html", :title => "Deltacloud Home", :text => "Home" }, |
-  { :href => "download.html", :title => "Get the latest releases", :text => "Download" }, |
-  { :href => "developers.html", :title => "Information for developers", :text => "Developers" }, |
-  { :href => "documentation.html", :title => "Project documentation", :text => "Documentation" }, |
-  { :href => "contact.html", :title => "Contact us!", :text => "Contact"} ] |
-
-#navigation
-  #menu.container
-    %ul.l0
-      - menu.each do |link|
-        %li
-          - current_page = "#{area}.html" unless area.nil? or area.empty? or (link[:href].index(area) != 0)
-          - state = (link[:href] == current_page) ? 'active' : 'inactive'
-          %a{ :class => state, :href => "./#{link[:href]}", :title => link[:title] }<
-            = link[:text]

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/content/_providers.haml
----------------------------------------------------------------------
diff --git a/site/content/_providers.haml b/site/content/_providers.haml
deleted file mode 100644
index 93e6f3d..0000000
--- a/site/content/_providers.haml
+++ /dev/null
@@ -1,85 +0,0 @@
----
-filter:
-  - haml
----
-%h3 Compute Driver Functionality
-%table#providers
-  %tr
-    %th.emptycell &nbsp;
-    %th
-      %strong Create
-      new instances
-    %th
-      %strong Start
-      stopped instances
-    %th
-      %strong Stop
-      running instances
-    %th
-      %strong Reboot
-      running instances
-    %th
-      %strong Destroy
-      instances
-    %th
-      List all/get details about
-      %strong hardware profiles
-    %th
-      List all/get details about
-      %strong realms
-    %th
-      List all/get details about
-      %strong images
-    %th
-      List all/get details about
-      %strong instances
-  - compute_support.each do |provider|
-    %tr
-      %td.provider
-        = provider[:name]
-        - if not provider[:driver]
-          %span coming soon
-      = support_indicator(provider[:instance][:create])
-      = support_indicator(provider[:instance][:start])
-      = support_indicator(provider[:instance][:stop])
-      = support_indicator(provider[:instance][:reboot])
-      = support_indicator(provider[:instance][:destroy])
-      = support_indicator(provider[:list][:hardware_profiles])
-      = support_indicator(provider[:list][:realms])
-      = support_indicator(provider[:list][:images])
-      = support_indicator(provider[:list][:instances])
-
-%h3 Storage Driver Functionality
-%table#providers
-  %tr
-    %th.emptycell &nbsp;
-    %th
-      %strong Create
-      new buckets
-    %th
-      %strong Update/delete
-      buckets
-    %th
-      %strong Create
-      new blobs
-    %th
-      %strong Update/delete
-      blobs
-    %th
-      %strong Read/write
-      blob attributes
-    %th
-      %strong Read/write
-      individual blob attributes
-  - storage_support.each do |provider|
-    %tr
-      %td.provider
-        = provider[:name]
-        - if not provider[:driver]
-          %span coming soon
-      = support_indicator(provider[:container][:create])
-      = support_indicator(provider[:container][:update])
-      = support_indicator(provider[:blob][:create])
-      = support_indicator(provider[:blob][:update])
-      = support_indicator(provider[:blob][:rw])
-      = support_indicator(provider[:blob][:rw_attr])

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/content/_submenu-documentation.haml
----------------------------------------------------------------------
diff --git a/site/content/_submenu-documentation.haml b/site/content/_submenu-documentation.haml
deleted file mode 100644
index e9c9534..0000000
--- a/site/content/_submenu-documentation.haml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-filter: haml
----
-#subnavigation
-  #submenu.container
-    %ul.l1
-      - documentation_pages.each do |link|
-        %li
-          - state = (link[:href] == current_page) ? 'active' : 'inactive'
-          %a{:class => state, :href => link[:href]}
-            = link[:menu]

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/content/about.md
----------------------------------------------------------------------
diff --git a/site/content/about.md b/site/content/about.md
new file mode 100644
index 0000000..5b7dc88
--- /dev/null
+++ b/site/content/about.md
@@ -0,0 +1,46 @@
+---
+site_name: Deltacloud API
+title: About
+---
+<div class="row">
+
+<div class="span4">
+
+<br/>
+
+<h3>About Deltacloud</h3>
+<br/>
+<p>Deltacloud provides the API server and drivers necessary for connecting to cloud providers.</p> 
+
+<p>Deltacloud maintains <strong>long-term stability</strong> for scripts, tools and applications and <strong>backward compatibility</strong> across different versions.</p>
+
+<p>Using single API Deltacloud enables management of resources in different clouds.</p>
+
+<p>Start an instance on an internal cloud, then with the same code start another on EC2 or RHEV-M.</p>
+</div>
+
+<br/>
+
+<div class="span8">
+  <img src="/assets/img/diagram-soa.png" alt="Deltacloud API SOA diagram" align="center"/>
+</div>
+
+<div class="span12">
+
+<br/>
+<br/>
+<h3>How does Deltacloud work?</h3>
+<br/>
+<p>Deltacloud contains a cloud abstraction API. The API works as a wrapper around a large number of clouds, abstracting their differences. For every <a href="/supported-providers.html" rel="tooltip" title="currently supported providers">provider</a> there is a driver "speaking" cloud provider's native API. It frees you from dealing with the particulars of each cloud's API.</p>
+
+<p>Install Deltacloud and start the <strong>deltacloudd</strong> daemon server. You can use your favourite HTTP client to talk to the server using the <a href="/rest-api.html">Deltacloud REST API</a>. Deltacloud even comes with a HTML interface so you can simply use your web browser to control your cloud infrastructure straight out of the box. The HTML interface is written with the <a href="http://jquerymobile.com/">jQuery mobile</a> framework, so it is compatible with your mobile or tablet devices.</p>
+<br/>
+
+<img src="/assets/img/deltacloud_concept.gif" alt="Deltacloud concept scheme"/>
+
+<br/>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/install-deltacloud.html">Get Deltacloud</a>
+
+</div>
+</div>

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/content/addresses.md
----------------------------------------------------------------------
diff --git a/site/content/addresses.md b/site/content/addresses.md
new file mode 100644
index 0000000..d752120
--- /dev/null
+++ b/site/content/addresses.md
@@ -0,0 +1,283 @@
+---
+site_name: Deltacloud API
+title: Addresses
+---
+
+<br/>
+
+<div class="row">
+  <div class="span9">
+
+<h3 id="addresses">Addresses</h3>
+
+<p>
+The addresses collection represents IP addresses and allows <strong>IP address management</strong>. 
+</p>
+
+<p>
+This collection is currently implemented for the Amazon EC2 cloud driver. For EC2, IP address management corresponds to Amazon's 'Elastic IP' feature. 
+</p>
+
+<br/>
+
+<p>
+The addresses collection supports these operations:
+</p>
+
+<ul>
+  <li>creating an address</li>
+  <li>destroying an address</li>
+  <li>association an address with a running instance</li>
+  <li>dissociating an address from a running instance</li>
+</ul>
+
+<br/>
+<br/>
+
+<ul class="nav nav-pills">
+  <li class="active"><a href="#tab1" data-toggle="tab">Get a list of all addresses</a></li>
+  <li><a href="#tab2" data-toggle="tab">Get the details of an address</a></li>
+  <li><a href="#tab3" data-toggle="tab">Create/delete an address</a></li>
+  <li><a href="#tab4" data-toggle="tab">Associate/disassociate an address</a></li>
+</ul>
+
+<hr>
+
+  </div>
+  <div class="span3">
+
+<ul class="nav nav-list well">
+  <li class="nav-header">
+    REST API
+  </li>
+  <li><a href="/rest-api.html">Introduction</a></li>
+  <li><a href="/api-entry-point.html">API entry point</a></li>
+  <li><a href="/compute-resources.html">Compute resources</a></li>
+  <ul class="nav nav-list">
+    <li><a href="/compute-resources.html">Realms</a></li>
+    <li><a href="/hardware-profiles.html">Hardware profiles</a></li>
+    <li><a href="/images.html">Images</a></li>
+    <li><a href="/instance-states.html">Instance states</a></li>
+    <li><a href="/instances.html">Instances</a></li>
+    <li><a href="/keys.html">Keys</a></li>
+    <li><a href="/firewalls.html">Firewalls</a></li>
+    <li class="active"><a href="#addresses">Addresses</a></li>
+    <li><a href="/load-balancers.html">Load balancers</a></li>
+  </ul>
+  <li><a href="/storage-resources.html">Storage resources</a></li>
+</ul>
+
+  </div>
+</div>
+
+<div class="tab-content">
+  <div class="tab-pane active" id="tab1">
+  
+<h4>Get a list of all addresses</h4>
+
+<p>
+To retrieve a list of all addresses use call <strong>GET /api/addresses</strong>.
+</p>
+
+<p>
+Example request:
+</p>
+
+<pre>
+GET /api/addresses?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>
+Server response:
+</p>
+
+
+<pre style="margin-top:0px">
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Date: Wed, 27 Jul 2011 12:55:16 GMT
+Content-Length: 817
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;addresses&gt;
+  &lt;address href='http://localhost:3001/api/addresses/107.20.232.251' id='107.20.232.251'&gt;
+    &lt;ip&gt;107.20.232.251&lt;/ip&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/addresses/107.20.232.251' method='delete' rel='destroy' /&gt;
+      &lt;link href='http://localhost:3001/api/addresses/107.20.232.251/associate' method='post' rel='associate' /&gt;
+    &lt;/actions&gt;
+  &lt;/address&gt;
+  &lt;address href='http://localhost:3001/api/addresses/107.20.234.161' id='107.20.234.161'&gt;
+    &lt;ip&gt;107.20.234.161&lt;/ip&gt;
+    &lt;actions&gt;
+      &lt;link href='http://localhost:3001/api/addresses/107.20.234.161' method='delete' rel='destroy' /&gt;
+      &lt;link href='http://localhost:3001/api/addresses/107.20.234.161/associate' method='post' rel='associate' /&gt;
+    &lt;/actions&gt;
+  &lt;/address&gt;
+&lt;/addresses&gt;
+</pre>
+
+  </div>
+  <div class="tab-pane" id="tab2">
+
+<h4>Get the details of an address</h4>
+
+<p>
+To retrieve details for a specific address use call <strong>GET /api/addresses/:id</strong>.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+GET /api/addresses/107.20.232.251?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Date: Wed, 27 Jul 2011 12:57:27 GMT
+Content-Length: 402
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;address href='http://localhost:3001/api/addresses/107.20.232.251' id='107.20.232.251'&gt;
+  &lt;ip&gt;107.20.232.251&lt;/ip&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/addresses/107.20.232.251' method='delete' rel='destroy' /&gt;
+    &lt;link href='http://localhost:3001/api/addresses/107.20.232.251/associate' method='post' rel='associate' /&gt;
+  &lt;/actions&gt;
+&lt;/address&gt;
+</pre>
+
+  </div>
+  <div class="tab-pane" id="tab3">
+
+<h4>Create an address</h4>
+
+<p>
+To create a new address use call <strong>POST /api/addresses</strong>. The Deltacloud server will respond with <strong>HTTP 201 Created</strong> and provide the details of the new address after a succesful operation:
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/addresses?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 201 Created
+Content-Type: application/xml
+Content-Length: 388
+
+&lt;?xml version='1.0' encoding='utf-8' ?&gt;
+&lt;address href='http://localhost:3001/api/addresses/107.20.232.251' id='107.20.232.251'&gt;
+  &lt;ip&gt;107.20.232.251&lt;/ip&gt;
+  &lt;actions&gt;
+    &lt;link href='http://localhost:3001/api/addresses/107.20.232.251' method='delete' rel='destroy' /&gt;
+    &lt;link href='http://localhost:3001/api/addresses/107.20.232.251/associate' method='post' rel='associate' /&gt;
+  &lt;/actions&gt;
+&lt;/address&gt;
+</pre>
+
+<h4>Delete an address</h4>
+
+<p>
+To delete a specified address use call <strong>DELETE /api/addresses/:id</strong>. The Deltacloud server responds with a <strong>HTTP 204 No Content</strong> after a succesful operation.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+DELETE /api/addresses/107.20.232.251?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 204 No Content
+Date: Wed, 27 Jul 2011 13:29:00 GMT
+</pre>
+
+  </div>
+  <div class="tab-pane" id="tab4">
+
+<h4>Associate an adress with an instance</h4>
+
+<p>
+To associate a given address with a running instance use call <strong>POST /api/addresses/:id/associate</strong>. The client must specify the <strong>instance_id</strong> as a parameter to this call. For Amazon EC2, the specified address will replace the currently assigned public_address of the instance. A succesful operation results in a <strong>HTTP 202 Accepted</strong> response. The example client request below specifies the required instance_id parameter using the application/x-www-form-urlencoded content-type, however client can also use multipart/form-data.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/addresses/107.20.232.251/associate?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+Content-Length: 22
+Content-Type: application/x-www-form-urlencoded
+
+instance_id=i-9d8a3dfc
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 202 Accepted
+Content-Type: application/xml
+Date: Wed, 27 Jul 2011 13:01:11 GMT
+Content-Length: 0
+</pre>
+
+<h4>Disassociate an address from an instance</h4>
+
+<p>
+To disassociate a given address from the instance to which it is currently assigned use call <strong>POST /api/addresses/:id/disassociate</strong>.
+</p>
+
+<p>Example request:</p>
+
+<pre>
+POST /api/addresses/107.20.232.251/disassociate?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 202 Accepted
+Content-Type: application/xml
+Date: Wed, 27 Jul 2011 13:05:38 GMT
+Content-Length: 0
+</pre>
+
+  </div>
+</div>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/load-balancers.html">Load Balancers  <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a>
+
+<br/>
+

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/content/api-docs.md
----------------------------------------------------------------------
diff --git a/site/content/api-docs.md b/site/content/api-docs.md
new file mode 100644
index 0000000..74f2306
--- /dev/null
+++ b/site/content/api-docs.md
@@ -0,0 +1,4 @@
+--- 
+site_name: Deltacloud API
+title: API Documentation
+---

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/d3232da0/site/content/api-entry-point.md
----------------------------------------------------------------------
diff --git a/site/content/api-entry-point.md b/site/content/api-entry-point.md
new file mode 100644
index 0000000..68f2c50
--- /dev/null
+++ b/site/content/api-entry-point.md
@@ -0,0 +1,227 @@
+---
+site_name: Deltacloud API
+title: API entry point
+---
+<br/>
+
+<div class="row">
+  <div class="span9">
+
+<h3 id="api-entry">The API entry point</h3>
+
+<p>
+Any part of the official API can be reached through the main entry point, by default <a href="http://localhost:3001/api">http://localhost:3001/api</a>. The entry point lists the resources for the current cloud provider, which the server knows about. For example, for the Amazon EC2 driver these are:
+</p>
+
+<ul style="margin-bottom:0px">
+<li>instances</li>
+<li>instance states</li>
+<li>images</li>
+<li>realms</li>
+</ul>
+
+  </div>
+  <div class="span3">
+
+<ul class="nav nav-list well">
+  <li class="nav-header">
+    REST API
+  </li>
+  <li><a href="/rest-api.html">Introduction</a></li>
+  <li class="active"><a href="#api-entry">API entry point</a></li>
+    <ul class="nav nav-list">
+      <li><a href="#feature">Features</a></li>
+    </ul>
+  <li><a href="/compute-resources.html">Compute resources</a></li>
+  <li><a href="/storage-resources.html">Storage resources</a></li>
+</ul>
+
+  </div>
+</div>
+
+<ul style="margin-top:0px">
+<li>hardware profiles</li>
+<li>keys</li>
+<li>buckets</li>
+<li>storage volumes</li>
+<li>storage snapshots</li>
+<li>load balancers</li>
+<li>addresses</li>
+<li>firewalls</li>
+</ul>
+
+<p>Example request:</p>
+
+<pre>
+GET /api?format=xml HTTP/1.1
+Authorization: Basic AU1J3UB2121Afd1DdyQWxLaTYTmJMNF4zTXBoRGdhMDh2RUw5ZDAN9zVXVa==
+User-Agent: curl/7.20.1 (i386-redhat-linux-gnu)
+Host: localhost:3001
+Accept: */*
+</pre>
+
+<p>Server response:</p>
+
+<pre>
+HTTP/1.1 200 OK
+Content-Type: application/xml
+Content-Length: 1439
+
+&lt;api driver='ec2' version='0.3.0'&gt;
+  &lt;link href='http://localhost:3001/api/instance_states' rel='instance_states'&gt;
+  &lt;/link&gt;
+  &lt;link href='http://localhost:3001/api/drivers' rel='drivers'&gt;
+  &lt;/link&gt;
+  &lt;link href='http://localhost:3001/api/addresses' rel='addresses'&gt;
+  &lt;/link&gt;
+  &lt;link href='http://localhost:3001/api/hardware_profiles' rel='hardware_profiles'&gt;
+  &lt;/link&gt;
+  &lt;link href='http://localhost:3001/api/firewalls' rel='firewalls'&gt;
+  &lt;/link&gt;
+  &lt;link href='http://localhost:3001/api/storage_volumes' rel='storage_volumes'&gt;
+  &lt;/link&gt;
+  &lt;link href='http://localhost:3001/api/images' rel='images'&gt;
+    &lt;feature name='owner_id'&gt;
+    &lt;/feature&gt;
+  &lt;/link&gt;
+  &lt;link href='http://localhost:3001/api/realms' rel='realms'&gt;
+  &lt;/link&gt;
+  &lt;link href='http://localhost:3001/api/buckets' rel='buckets'&gt;
+    &lt;feature name='bucket_location'&gt;
+    &lt;/feature&gt;
+  &lt;/link&gt;
+  &lt;link href='http://localhost:3001/api/instances' rel='instances'&gt;
+    &lt;feature name='user_data'&gt;
+    &lt;/feature&gt;
+    &lt;feature name='authentication_key'&gt;
+    &lt;/feature&gt;
+    &lt;feature name='firewalls'&gt;
+    &lt;/feature&gt;
+    &lt;feature name='instance_count'&gt;
+    &lt;/feature&gt;
+    &lt;feature name='attach_snapshot'&gt;
+    &lt;/feature&gt;
+  &lt;/link&gt;
+  &lt;link href='http://localhost:3001/api/storage_snapshots' rel='storage_snapshots'&gt;
+  &lt;/link&gt;
+  &lt;link href='http://localhost:3001/api/keys' rel='keys'&gt;
+  &lt;/link&gt;
+  &lt;link href='http://localhost:3001/api/load_balancers' rel='load_balancers'&gt;
+  &lt;/link&gt;
+&lt;/api&gt;
+</pre>
+
+<p>
+Some implementations for the Apache Deltacloud API may not support all resource types defined by API. For example, a Deltacloud instance pointing at a storage-only service will not expose compute resources like instances and hardware profiles.
+</p>
+
+<h3 id="feature">Features</h3>
+
+<p>
+The Apache Deltacloud API defines the standard behavior and semantics for each of the resource types as a baseline for any API implementation. It is often desirable to enhance standard API behavior with specific features. The API also defines all features that can be supported by the API implementation - each of them has a fixed predefined meaning. For example, the feature user_name indicates that a user-specified name can be assigned to an instance when it is created. Features are advertised in the top-level entry point as illustrated below:
+</p>
+
+<pre>
+&lt;api driver='mock' version='0.3.0'&gt;
+  ...
+  &lt;link href='http://localhost:3001/api/instances' rel='instances'&gt;
+    &lt;feature name='hardware_profiles'&gt;&lt;/feature&gt;
+    &lt;feature name='user_name'&gt;&lt;/feature&gt;
+    &lt;feature name='authentication_key'&gt;&lt;/feature&gt;
+  &lt;/link&gt;
+  ...
+&lt;/api&gt;
+</pre>
+
+<p>
+These features are available to each collection in the Deltacloud API:
+</p>
+
+<table class="table table-striped table-condensed">
+  <thead>
+    <tr>
+      <th>Feature</th>
+      <th>Collection</th>
+      <th>Operation</th>
+      <th>Description</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>owner_id</td>
+      <td>Images</td>
+      <td>GET /api/images</td>
+      <td>allows filtering of the image list by owner_id</td>
+    </tr>
+    <tr>
+      <td>user_name</td>
+      <td>Instances</td>
+      <td>POST /api/instances</td>
+      <td>accepts a user-defined name on instance creation</td>
+    </tr>
+    <tr>
+      <td>user_data</td>
+      <td>Instances</td>
+      <td>POST /api/instances</td>
+      <td>provide user-defined data that is accessible by the running instance</td>
+    </tr>
+    <tr>
+      <td>user_iso</td>
+      <td>Instances</td>
+      <td>POST /api/instances</td>
+      <td>provides a base64 encoded gzipped ISO file accessible as CD-ROM drive by the running instnace</td>
+    </tr>
+    <tr>
+      <td>user_files</td>
+      <td>Instances</td>
+      <td>POST /api/instances</td>
+      <td>accept files that will be placed into the launched instance</td>
+    </tr>
+    <tr>
+      <td>firewalls</td>
+      <td>Instances</td>
+      <td>POST /api/instances</td>
+      <td>put the instance into one or more firewalls on launch</td>
+    </tr>
+    <tr>
+      <td>authentication_key</td>
+      <td>Instances</td>
+      <td>POST /api/instances</td>
+      <td>provides the authentication key to access the instance</td>
+    </tr>
+    <tr>
+      <td>authentication_password</td>
+      <td>Instances</td>
+      <td>POST /api/instances</td>
+      <td>provides the password to access the running instance</td>
+    </tr>
+    <tr>
+      <td>instance_count</td>
+      <td>Instances</td>
+      <td>POST /api/instances</td>
+      <td>specifies the number of instances to launch in one operation</td>
+    </tr>
+    <tr>
+      <td>attach_snapshot</td>
+      <td>Instances</td>
+      <td>POST /api/instances</td>
+      <td>attaches a storage snapshot to an instance as a storage volume</td>
+    </tr>
+    <tr>
+      <td>sandboxing</td>
+      <td>Instances</td>
+      <td>POST /api/instances</td>
+      <td>launches an instance from a sandbox image (Gogrid specific)</td>
+    </tr>
+    <tr>
+      <td>bucket_location</td>
+      <td>Buckets</td>
+      <td>POST /api/buckets</td>
+      <td>specifies a location that the bucket should be created in (e.g. specific cloud-provider datacenter)</td>
+    </tr>
+  </tbody>
+</table>
+
+<a class="btn btn-inverse btn-large" style="float: right" href="/compute-resources.html">Compute resources <i class="icon-arrow-right icon-white" style="vertical-align:baseline"> </i></a>
+
+<br/>


Mime
View raw message