diff --git a/modules/gwtorganise/.settings/com.google.gwt.eclipse.core.prefs b/modules/gwtorganise/.settings/com.google.gwt.eclipse.core.prefs
index 661aaef1..7d6a4d40 100644
--- a/modules/gwtorganise/.settings/com.google.gwt.eclipse.core.prefs
+++ b/modules/gwtorganise/.settings/com.google.gwt.eclipse.core.prefs
@@ -1,4 +1,4 @@
-#Tue Jan 26 16:51:26 NZDT 2010
+#Thu Feb 11 15:27:06 NZDT 2010
eclipse.preferences.version=1
entryPointModules=
filesCopiedToWebInfLib=gwt-servlet.jar
diff --git a/modules/gwtorganise/controllers/admin_upload_configure.php b/modules/gwtorganise/controllers/admin_upload_configure.php
index 0e50f52b..907290e7 100644
--- a/modules/gwtorganise/controllers/admin_upload_configure.php
+++ b/modules/gwtorganise/controllers/admin_upload_configure.php
@@ -33,6 +33,13 @@ class Admin_Upload_Configure_Controller extends Controller
upload_configuration::extractForm($form);
message::success(t("GWTOrganise Module Configured!"));
+ print json_encode(array("result" => "success"));
+ return;
+ }
+ else
+ {
+ print json_encode(array("result" => "error", "form" => (string) $form));
+ return;
}
}
else
diff --git a/modules/gwtorganise/controllers/json_album.php b/modules/gwtorganise/controllers/json_album.php
index 178698c1..7afa9807 100644
--- a/modules/gwtorganise/controllers/json_album.php
+++ b/modules/gwtorganise/controllers/json_album.php
@@ -147,6 +147,7 @@ class Json_Album_Controller extends Controller {
}
public function add_photo($id) {
+
access::verify_csrf();
$album = ORM::factory("item", $id);
access::required("view", $album);
@@ -180,40 +181,32 @@ class Json_Album_Controller extends Controller {
fclose($file);
+ $item = ORM::factory("item");
+ $item->name = basename($temp_filename); // Skip unique identifier Kohana adds
+ $item->title = item::convert_filename_to_title($item->name);
+ $item->parent_id = $album->id;
+ $item->set_data_file($temp_filename);
-
- $title = item::convert_filename_to_title($name);
$path_info = @pathinfo($temp_filename);
if (array_key_exists("extension", $path_info) &&
in_array(strtolower($path_info["extension"]), array("flv", "mp4"))) {
- $item = ORM::factory("item");
$item->type = "movie";
- $item->parent_id = $album->id;
- $item->set_data_file($temp_filename);
- $item->name = $name;
- $item->title = $title;
$item->save();
log::success("content", t("Added a movie"),
html::anchor("movies/$item->id", t("view movie")));
} else {
- $item = ORM::factory("item");
$item->type = "photo";
- $item->parent_id = $album->id;
- $item->set_data_file($temp_filename);
- $item->name = $name;
- $item->title = $title;
$item->save();
log::success("content", t("Added a photo"),
html::anchor("photos/$item->id", t("view photo")));
}
- } catch (Exception $e) {
+
+ } catch (Exception $e) {
Kohana::log("alert", $e->__toString());
if (file_exists($temp_filename)) {
unlink($temp_filename);
}
- header("HTTP/1.1 500 Internal Server Error");
- print "ERROR: " . $e->getMessage();
- return;
+ throw new Kohana_Exception('Problem creating file.'. $e->__toString());
}
unlink($temp_filename);
diff --git a/modules/gwtorganise/helpers/gwtorganise_event.php b/modules/gwtorganise/helpers/gwtorganise_event.php
index cecaf708..d22a8478 100644
--- a/modules/gwtorganise/helpers/gwtorganise_event.php
+++ b/modules/gwtorganise/helpers/gwtorganise_event.php
@@ -19,16 +19,13 @@
*/
class gwtorganise_event_Core{
- /**
- * adds the shopping basket administration controls to the admin menu
- */
- static function admin_menu($menu, $theme){
-
- $menu->add_after("users_groups",
- Menu::factory("link")
+ static function admin_menu($menu, $theme) {
+ $menu->add_after("dashboard",
+ Menu::factory("link")
->id("gwtorganise")
->label(t("GWT Organise"))
->url(url::site("admin/gwtorganise")));
}
+
}
diff --git a/modules/gwtorganise/src/com/gloopics/g3viewer/G3viewer.gwt.xml b/modules/gwtorganise/src/com/gloopics/g3viewer/G3viewer.gwt.xml
index 389a35ef..ef16872b 100644
--- a/modules/gwtorganise/src/com/gloopics/g3viewer/G3viewer.gwt.xml
+++ b/modules/gwtorganise/src/com/gloopics/g3viewer/G3viewer.gwt.xml
@@ -29,5 +29,5 @@
-
+
diff --git a/modules/gwtorganise/src/com/gloopics/g3viewer/client/Album.java b/modules/gwtorganise/src/com/gloopics/g3viewer/client/Album.java
index cb0be367..a3df5ac4 100644
--- a/modules/gwtorganise/src/com/gloopics/g3viewer/client/Album.java
+++ b/modules/gwtorganise/src/com/gloopics/g3viewer/client/Album.java
@@ -54,14 +54,15 @@ public class Album extends TreeItem {
private final Map m_IDtoAlbum = new HashMap();
- private final LinkedList m_UploadQueue = new LinkedList();
-
- private boolean m_Running = false;
+ private final Set m_AllUploads = new HashSet();
private final AlbumTreeDropController m_DropController;
+ private final UploadControl m_UploadControl;
+
public Album(JSONObject jsonObject, G3Viewer a_Container)
{
+ m_UploadControl = a_Container.getUploadControl();
m_ID = Utils.extractId(jsonObject.get("id"));
m_Title = ((JSONString)jsonObject.get("title")).stringValue();
m_Sort = ((JSONString)jsonObject.get("sort")).stringValue();
@@ -75,6 +76,7 @@ public class Album extends TreeItem {
public Album(G3Viewer a_Container)
{
+ m_UploadControl = a_Container.getUploadControl();
m_ID = 1;
m_Title = "Root";
m_Container = a_Container;
@@ -109,7 +111,7 @@ public class Album extends TreeItem {
public void success(JSONValue aValue) {
updateValues(aValue);
}
- },false);
+ },false,true);
}
@@ -281,7 +283,7 @@ public class Album extends TreeItem {
m_View.getCurrentAlbum().expand();
m_View.getCurrentAlbum().select();
}
- },true);
+ },true,true);
}
/**
@@ -300,7 +302,7 @@ public class Album extends TreeItem {
public void success(JSONValue aValue) {
m_View.getCurrentAlbum().select();
}
- },true);
+ },true,true);
}
@@ -331,7 +333,7 @@ public class Album extends TreeItem {
public void success(JSONValue aValue) {
addAlbums(aValue);
}
- },false);
+ },false,true);
}
@@ -344,7 +346,7 @@ public class Album extends TreeItem {
public void success(JSONValue aValue) {
viewAlbum(aValue);
}
- },false);
+ },false,true);
}
@@ -433,68 +435,53 @@ public class Album extends TreeItem {
ResizeOptions ro = new ResizeOptions(jso);
UploadFile uf;
for (File file : files){
- uf = new UploadFile(Album.this, file, ro);
+ uf = m_UploadControl.createUploadFile(Album.this, file, ro);
+ m_AllUploads.add(uf);
m_View.addToView(uf);
- m_UploadQueue.addLast(uf);
- m_Container.addUpload(uf);
- }
-
- if (!m_Running){
- m_Running = true;
- next();
}
+ m_Container.updateInformation();
}
}
- },false);
+ },false,true);
}
- public void addPendingDownloads()
+ public void removeUpload(UploadFile a_Uf)
{
- for (UploadFile uf: m_UploadQueue)
- {
- m_View.addToView(uf);
- }
+ m_AllUploads.remove(a_Uf);
}
-
- public void finishedUpload(UploadFile uf, JSONValue a_Return)
- {
- m_UploadQueue.remove(uf);
- m_Container.removeUpload(uf);
- next();
+ public void replaceUpload(UploadFile a_Uf, JSONValue a_Return)
+ {
+ m_AllUploads.remove(a_Uf);
+
JSONObject jo = a_Return.isObject();
if (jo != null){
Item item = new Item(this,jo,m_Container);
m_IDtoItem.put(item.getID(), item);
m_Items.add(item);
-
+
if (m_View.getCurrentAlbum() == this){
- m_View.replaceInView(uf, item);
+ m_View.replaceInView(a_Uf, item);
}
}
else
{
if (m_View.getCurrentAlbum() == this){
- m_View.removeFromView(uf);
+ m_View.removeFromView(a_Uf);
}
}
-
-
}
- private void next()
+ public void addPendingDownloads()
{
- if (m_UploadQueue.size() > 0)
+ for (UploadFile uf: m_AllUploads)
{
- UploadFile uf = m_UploadQueue.getFirst();
- uf.startUpload();
- }
- else
- {
- m_Running = false;
+ m_View.addToView(uf);
}
}
+
+
}
diff --git a/modules/gwtorganise/src/com/gloopics/g3viewer/client/AsyncResizer.java b/modules/gwtorganise/src/com/gloopics/g3viewer/client/AsyncResizer.java
index 03a7aaaf..3f02df0d 100644
--- a/modules/gwtorganise/src/com/gloopics/g3viewer/client/AsyncResizer.java
+++ b/modules/gwtorganise/src/com/gloopics/g3viewer/client/AsyncResizer.java
@@ -30,29 +30,28 @@ public class AsyncResizer implements RunAsyncCallback{
Canvas upThumb = com.gloopics.g3viewer.client.canvas.Factory.getInstance().createCanvas();
upThumb.decode(m_Blob);
+ float imageWidth = (float)upThumb.getWidth();
+ float imageHeight = (float)upThumb.getHeight();
- int imageWidth = upThumb.getWidth();
- int imageHeight = upThumb.getHeight();
-
- int widthRatio = imageWidth/m_ResizeOptions.getMaxWidth();
- int heightRatio = imageHeight/m_ResizeOptions.getMaxHeight();
+ float widthRatio = imageWidth/((float)m_ResizeOptions.getMaxWidth());
+ float heightRatio = imageHeight/((float)m_ResizeOptions.getMaxHeight());
if (widthRatio > heightRatio){
if (widthRatio > 1) {
- upThumb.resize(m_ResizeOptions.getMaxWidth(), imageHeight / widthRatio );
+ upThumb.resize(m_ResizeOptions.getMaxWidth(), (int)(imageHeight / widthRatio) );
m_UploadFile.uploadBlob(upThumb.encode());
+ return;
}
+ m_UploadFile.uploadBlob(m_Blob);
}
else
{
if (heightRatio > 1){
- upThumb.resize(imageWidth / heightRatio, m_ResizeOptions.getMaxHeight());
+ upThumb.resize((int)(imageWidth / heightRatio), m_ResizeOptions.getMaxHeight());
m_UploadFile.uploadBlob(upThumb.encode());
+ return;
}
+ m_UploadFile.uploadBlob(m_Blob);
}
-
-
}
-
-
}
diff --git a/modules/gwtorganise/src/com/gloopics/g3viewer/client/AsyncRunner.java b/modules/gwtorganise/src/com/gloopics/g3viewer/client/AsyncRunner.java
new file mode 100644
index 00000000..15224353
--- /dev/null
+++ b/modules/gwtorganise/src/com/gloopics/g3viewer/client/AsyncRunner.java
@@ -0,0 +1,23 @@
+package com.gloopics.g3viewer.client;
+
+import com.google.gwt.core.client.RunAsyncCallback;
+
+public class AsyncRunner implements RunAsyncCallback{
+
+ private final Runnable m_Runnable;
+
+ public AsyncRunner(Runnable a_Runnable){
+ m_Runnable = a_Runnable;
+ }
+
+ @Override
+ public void onFailure(Throwable reason) {
+ G3Viewer.displayError("Error Running Async", reason.toString());
+ }
+
+
+ @Override
+ public void onSuccess() {
+ m_Runnable.run();
+ }
+}
diff --git a/modules/gwtorganise/src/com/gloopics/g3viewer/client/G3Viewer.java b/modules/gwtorganise/src/com/gloopics/g3viewer/client/G3Viewer.java
index d520319b..daac1220 100644
--- a/modules/gwtorganise/src/com/gloopics/g3viewer/client/G3Viewer.java
+++ b/modules/gwtorganise/src/com/gloopics/g3viewer/client/G3Viewer.java
@@ -61,7 +61,9 @@ public class G3Viewer {
DockPanel dp = new DockPanel();
dp.addStyleName("error");
- dp.add(new HTML(error), DockPanel.CENTER);
+
+ error = error.replaceAll("<", "<").replaceAll(">", ">");
+ dp.add(new HTML("" + error + "
"), DockPanel.CENTER);
// DialogBox is a SimplePanel, so you have to set its widget property to
@@ -154,7 +156,7 @@ public class G3Viewer {
/**
* the only dialog box
*/
- private final HttpDialogBox m_HttpDialogBox= new HttpDialogBox();
+ private final HttpDialogBox m_HttpDialogBox= new HttpDialogBox(this);
private class SimplePanelEx extends SimplePanel
{
@@ -223,6 +225,11 @@ public class G3Viewer {
*/
private final PickupDragController m_DragController;
+ /**
+ * the upload control
+ */
+ private final UploadControl m_UploadControl;
+
/**
* constructor
*/
@@ -232,14 +239,19 @@ public class G3Viewer {
m_DragController.setBehaviorMultipleSelection(true);
m_DragController.setBehaviorDragStartSensitivity(5);
m_DragController.setBehaviorDragProxy(true);
-
- m_InfoBar = new InformationBar(this);
+ m_UploadControl = new UploadControl(this);
+ m_InfoBar = new InformationBar(this, m_UploadControl);
m_Tree = new AlbumTree(this);
checkAdmin();
}
+ public UploadControl getUploadControl()
+ {
+ return m_UploadControl;
+ }
+
public static String getCSRF()
{
return m_CSRF;
@@ -275,7 +287,7 @@ public class G3Viewer {
}
});
}
- },false);
+ },false,true);
}
@@ -307,15 +319,10 @@ public class G3Viewer {
return m_View;
}
- public void addUpload(UploadFile a_UF){
- m_InfoBar.addUpload(a_UF);
+ public void updateInformation(){
+ m_InfoBar.updateInformation();
}
- public void removeUpload(UploadFile a_UF){
- m_InfoBar.removeUpload(a_UF);
- }
-
-
public void doDialog(String a_Url, HttpDialogHandler a_Handler)
{
m_HttpDialogBox.doDialog(BASE_URL + a_Url, a_Handler);
@@ -326,10 +333,16 @@ public class G3Viewer {
m_ImageDialogBox.doDialog( a_Url);
}
- public void doJSONRequest(final String a_URL, final HttpSuccessHandler a_Handler, final boolean a_hasParams){
+ public void doJSONRequest(final String a_URL, final HttpSuccessHandler a_Handler, final boolean a_hasParams, final boolean a_IncludeCSRF){
+ doJSONRequest(a_URL, a_Handler, a_hasParams, a_IncludeCSRF, "");
+ }
+
+
+ public void doJSONRequest(final String a_URL, final HttpSuccessHandler a_Handler, final boolean a_hasParams, final boolean a_IncludeCSRF,
+ String a_Data ){
try {
String url;
- if (m_CSRF != null)
+ if (m_CSRF != null && a_IncludeCSRF)
{
url = a_URL + (a_hasParams?"&csrf=":"?csrf=") + m_CSRF;
}
@@ -338,7 +351,9 @@ public class G3Viewer {
url = a_URL;
}
RequestBuilder requestBuilder = new RequestBuilder(
- RequestBuilder.GET, url);
+ RequestBuilder.POST, url);
+ requestBuilder.setHeader("Content-Type", "application/x-www-form-urlencoded");
+ requestBuilder.setHeader("X-Requested-With", "XMLHttpRequest");
requestBuilder.setCallback(new JSONResponseTextHandler(
new JSONResponseCallback() {
@@ -370,6 +385,7 @@ public class G3Viewer {
}}
));
+ requestBuilder.setRequestData(a_Data);
requestBuilder.send();
} catch (RequestException ex) {
displayError("Request Exception", ex.toString() + " - " + a_URL);
diff --git a/modules/gwtorganise/src/com/gloopics/g3viewer/client/HttpDialogBox.java b/modules/gwtorganise/src/com/gloopics/g3viewer/client/HttpDialogBox.java
index b40cfc34..cba7ba37 100644
--- a/modules/gwtorganise/src/com/gloopics/g3viewer/client/HttpDialogBox.java
+++ b/modules/gwtorganise/src/com/gloopics/g3viewer/client/HttpDialogBox.java
@@ -8,8 +8,11 @@ import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
-import com.google.gwt.http.client.RequestTimeoutException;
import com.google.gwt.http.client.Response;
+import com.google.gwt.json.client.JSONObject;
+import com.google.gwt.json.client.JSONValue;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
@@ -17,8 +20,6 @@ import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.HTML;
-import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
-import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteHandler;
public class HttpDialogBox extends DialogBox{
@@ -27,8 +28,10 @@ public class HttpDialogBox extends DialogBox{
private HttpDialogHandler m_Callback;
private final HTML m_Dialog;
+ private final G3Viewer m_Parent;
- public HttpDialogBox(){
+ public HttpDialogBox(G3Viewer a_Parent){
+ m_Parent = a_Parent;
m_Dialog = new HTML("Empty");
initComponents();
}
@@ -54,12 +57,9 @@ public class HttpDialogBox extends DialogBox{
public void onClick(ClickEvent event) {
if (m_FormPanel!=null)
{
- m_FormPanel.submit();
- }
- else
- {
-
+ submitForm();
}
+
HttpDialogBox.this.hide();
Loading.getInstance().loading("Please Wait..");
}
@@ -88,11 +88,6 @@ public class HttpDialogBox extends DialogBox{
}
public void onError(Request request, Throwable exception) {
- if (exception instanceof RequestTimeoutException) {
- // handle a request timeout
- } else {
- // handle other request errors
- }
showDialog("Could not get " + m_URL + " Exception thrown " + exception.toString());
}
@@ -101,11 +96,113 @@ public class HttpDialogBox extends DialogBox{
showDialog(response.getText());
} else {
showDialog(m_URL + response.getText());
- // handle non-OK response from the server
}
}
}
+
+ public native static String createData(Element form) /*-{
+
+ var fieldValue = function(el, successful) {
+ var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+ if (typeof successful == 'undefined') successful = true;
+ if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+ (t == 'checkbox' || t == 'radio') && !el.checked ||
+ (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+ tag == 'select' && el.selectedIndex == -1))
+ return null;
+
+ if (tag == 'select') {
+ var index = el.selectedIndex;
+ if (index < 0) return null;
+ var a = [], ops = el.options;
+ var one = (t == 'select-one');
+ var max = (one ? index+1 : ops.length);
+ for(var i=(one ? index : 0); i < max; i++) {
+ var op = ops[i];
+ if (op.selected) {
+ var v = op.value;
+ if (!v) // extra pain for IE...
+ v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
+ if (one) return v;
+ a.push(v);
+ }
+ }
+ return a;
+ }
+ return el.value;
+ };
+
+
+ var a = "";
+ var added = false;
+ var appendA = function(str)
+ {
+ if(added)
+ {
+ a = a+"&"+str;
+ }
+ else
+ {
+ a = a+str;
+ added = true;
+ }
+ }
+
+ var els = form.getElementsByTagName('*'); //: form.elements;
+ if (!els) return a;
+ for(var i=0, max=els.length; i < max; i++) {
+ var el = els[i];
+ var n = el.name;
+ if (!n) continue;
+
+ var v = fieldValue(el, true);
+ if (v && v.constructor == Array) {
+ for(var j=0, jmax=v.length; j < jmax; j++)
+ appendA(n+"="+escape(v[j]));
+ }
+ else if (v !== null && typeof v != 'undefined')
+ appendA(n+"="+escape(v));
+ }
+
+ return a;
+
+ }-*/;
+
+ private void submitForm(){
+ String url = m_FormPanel.getAction();
+
+ String data = createData(m_FormPanel.getElement());
+
+ m_Parent.doJSONRequest(url, new HttpSuccessHandler() {
+
+ @Override
+ public void success(JSONValue aValue) {
+ JSONObject object = aValue.isObject();
+ if (object != null){
+ JSONValue result = object.get("result");
+ if (result != null)
+ {
+ if (result.isString().stringValue().equals("success")){
+ m_Callback.success(aValue.toString());
+ Loading.getInstance().endLoading();
+ }
+ else{
+ JSONValue resul = object.get("form");
+ showDialog(resul.isString().stringValue());
+ }
+ }
+ else
+ {
+ G3Viewer.displayError("result was null ", aValue.toString() );
+ }
+ } else {
+ G3Viewer.displayError("Only JSON Value Returned ", aValue.toString() );
+ }
+ }
+ }, false ,false, data);
+ }
+
private void showDialog(String a_Text){
m_Dialog.setHTML(a_Text);
@@ -132,27 +229,49 @@ public class HttpDialogBox extends DialogBox{
Element element = this.getElement().getElementsByTagName("form").getItem(0);
setText(element.getElementsByTagName("legend").getItem(0).getInnerText());
-
m_FormPanel = FormPanel.wrap(element, true);
- m_FormPanel.addSubmitCompleteHandler(new SubmitCompleteHandler() {
-
- @Override
- public void onSubmitComplete(SubmitCompleteEvent event) {
- m_Callback.success(event.getResults());
- Loading.getInstance().endLoading();
- }
- });
-
}
else
{
setText(this.getElement().getElementsByTagName("legend").getItem(0).getInnerText());
+ m_FormPanel = null;
}
-
+
setPopupPosition(Window.getClientWidth() / 2 - this.getOffsetWidth() / 2,
Window.getClientHeight() / 2 - this.getOffsetHeight() / 2);
+
+ Timer t = new Timer(){
+ public void run(){
+
+ // find any scripts if they exist
+ NodeList scripts = HttpDialogBox.this.getElement().getElementsByTagName("script");
+ for (int i = 0; i < scripts.getLength(); i++ )
+ {
+ Element script = scripts.getItem(i);
+ script.removeFromParent();
+ Element nscript = DOM.createElement("script");
+ nscript.setAttribute("type", script.getAttribute("type"));
+ nscript.setAttribute("src", script.getAttribute("src"));
+
+ getElementByTagName("head").appendChild(nscript);
+ }
+
+ }
+ };
+ t.schedule(10);
}
+ /**
+ * Gets an element by its tag name; handy for single elements like HTML,
+ * HEAD, BODY.
+ * @param tagName The name of the tag.
+ * @return The element with that tag name.
+ */
+ public native static Element getElementByTagName(String tagName) /*-{
+ var elem = $doc.getElementsByTagName(tagName);
+ return elem ? elem[0] : null;
+ }-*/;
+
public void doDialog(String url, HttpDialogHandler a_Callback){
m_Callback = a_Callback;
Loading.getInstance().loading("Please Wait");
diff --git a/modules/gwtorganise/src/com/gloopics/g3viewer/client/InformationBar.java b/modules/gwtorganise/src/com/gloopics/g3viewer/client/InformationBar.java
index 1e26df5d..172c8d7f 100644
--- a/modules/gwtorganise/src/com/gloopics/g3viewer/client/InformationBar.java
+++ b/modules/gwtorganise/src/com/gloopics/g3viewer/client/InformationBar.java
@@ -16,9 +16,11 @@ public class InformationBar extends FlowPanel{
private final Label m_Label = new Label();
- private final Set m_Uploads = new HashSet();
+ private final UploadControl m_UploadControl;
+
- public InformationBar(G3Viewer a_Container){
+ public InformationBar(G3Viewer a_Container, UploadControl a_UploadControl){
+ m_UploadControl = a_UploadControl;
m_Container = a_Container;
setStylePrimaryName("infobar");
}
@@ -45,9 +47,9 @@ public class InformationBar extends FlowPanel{
add(m_Label);
}
- private void updateInformation()
+ public void updateInformation()
{
- int size = m_Uploads.size();
+ int size = m_UploadControl.size();
if (size == 0){
m_Label.setText("");
}
@@ -62,16 +64,4 @@ public class InformationBar extends FlowPanel{
}
}
-
- public void addUpload(UploadFile a_Upload)
- {
- m_Uploads.add(a_Upload);
- updateInformation();
- }
-
- public void removeUpload(UploadFile a_Upload)
- {
- m_Uploads.remove(a_Upload);
- updateInformation();
- }
}
diff --git a/modules/gwtorganise/src/com/gloopics/g3viewer/client/Item.java b/modules/gwtorganise/src/com/gloopics/g3viewer/client/Item.java
index 46119aa9..7584d5cf 100644
--- a/modules/gwtorganise/src/com/gloopics/g3viewer/client/Item.java
+++ b/modules/gwtorganise/src/com/gloopics/g3viewer/client/Item.java
@@ -181,7 +181,7 @@ public class Item extends Composite implements HasAllMouseHandlers, DesktopDropp
public void success(JSONValue aValue) {
updateValues(aValue);
}
- },false);
+ },false,true);
}
@@ -255,7 +255,7 @@ public class Item extends Composite implements HasAllMouseHandlers, DesktopDropp
public void success(JSONValue aValue) {
// nothing to do
}
- },false);
+ },false,true);
popupPanel.hide();
}
});
@@ -273,7 +273,7 @@ public class Item extends Composite implements HasAllMouseHandlers, DesktopDropp
public void success(JSONValue aValue) {
updateImages(aValue);
}
- },false);
+ },false,true);
popupPanel.hide();
}
});
@@ -289,7 +289,7 @@ public class Item extends Composite implements HasAllMouseHandlers, DesktopDropp
public void success(JSONValue aValue) {
updateImages(aValue);
}
- },false);
+ },false,true);
popupPanel.hide();
}
});
diff --git a/modules/gwtorganise/src/com/gloopics/g3viewer/client/UploadControl.java b/modules/gwtorganise/src/com/gloopics/g3viewer/client/UploadControl.java
new file mode 100644
index 00000000..c63a6595
--- /dev/null
+++ b/modules/gwtorganise/src/com/gloopics/g3viewer/client/UploadControl.java
@@ -0,0 +1,107 @@
+package com.gloopics.g3viewer.client;
+
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Set;
+
+import com.google.gwt.gears.client.desktop.File;
+import com.google.gwt.json.client.JSONObject;
+import com.google.gwt.json.client.JSONValue;
+
+public class UploadControl {
+
+ private final LinkedList m_PrepareUploadQueue = new LinkedList();
+ private final LinkedList m_UploadQueue = new LinkedList();
+ private final Set m_Uploads = new HashSet();
+
+ private boolean m_Running = false;
+ private boolean m_PrepareRunning = false;
+
+ private final G3Viewer m_Container;
+
+ public UploadControl(G3Viewer a_Container){
+ m_Container = a_Container;
+ }
+
+ public UploadFile createUploadFile(Album a_Album, File a_File, ResizeOptions a_ResizeOptions)
+ {
+
+ UploadFile uf = new UploadFile(this, a_Album, a_File, a_ResizeOptions);
+
+ m_Uploads.add(uf);
+ m_PrepareUploadQueue.addLast(uf);
+ prepareNext();
+
+ return uf;
+ }
+
+ private void cleanupUpload(UploadFile uf)
+ {
+ m_Uploads.remove(uf);
+ prepareNext();
+ next();
+ m_Container.updateInformation();
+
+ }
+
+ public int size()
+ {
+ return m_Uploads.size();
+ }
+
+ public void finishedUploadWithError(UploadFile uf)
+ {
+ cleanupUpload(uf);
+ }
+
+ public void finishedUpload(UploadFile uf)
+ {
+ cleanupUpload(uf);
+ }
+
+ private void next()
+ {
+ if (m_UploadQueue.size() > 0)
+ {
+ UploadFile uf = m_UploadQueue.removeFirst();
+ uf.startUpload();
+ }
+ else
+ {
+ m_Running = false;
+ }
+ }
+
+ private void prepareNext()
+ {
+ if (!m_PrepareRunning)
+ {
+ if ((m_PrepareUploadQueue.size() > 0) && (m_UploadQueue.size() < 10))
+ {
+ UploadFile uf = m_PrepareUploadQueue.removeFirst();
+ m_PrepareRunning = true;
+ uf.prepareUpload();
+ }
+ else
+ {
+ m_PrepareRunning = false;
+ }
+ }
+ }
+
+ public void finishedPrepare(UploadFile a_UploadFile)
+ {
+ m_UploadQueue.addLast(a_UploadFile);
+
+ if (!m_Running)
+ {
+ m_Running = true;
+ next();
+ }
+
+ m_PrepareRunning = false;
+ prepareNext();
+
+ }
+
+}
diff --git a/modules/gwtorganise/src/com/gloopics/g3viewer/client/UploadFile.java b/modules/gwtorganise/src/com/gloopics/g3viewer/client/UploadFile.java
index ef234ab4..c084eefb 100644
--- a/modules/gwtorganise/src/com/gloopics/g3viewer/client/UploadFile.java
+++ b/modules/gwtorganise/src/com/gloopics/g3viewer/client/UploadFile.java
@@ -44,13 +44,19 @@ public class UploadFile extends Composite{
private final Album m_Parent;
- private final Blob m_Blob;
+ private Blob m_Blob;
//private final Canvas m_UpThumb;
private final Label m_Label = new Label("Pending..");
private final ProgressBar m_ProgressBar = new ProgressBar();
+ //private final Image m_Image;
+ private final File m_File;
+
+ private final SimplePanel m_ImageContainer;
+
+ private final UploadControl m_UploadControl;
/**
* Loads an image into this Canvas, replacing the Canvas' current dimensions
@@ -72,17 +78,19 @@ public class UploadFile extends Composite{
rs.remove(a_Url);
}-*/;
- public UploadFile(Album a_Parent, File a_File, ResizeOptions a_ResizeOptions){
+ public UploadFile(UploadControl a_UploadControl, Album a_Parent, File a_File, ResizeOptions a_ResizeOptions){
+ m_UploadControl = a_UploadControl;
+ m_File = a_File;
m_ResizeOptions = a_ResizeOptions;
m_Parent = a_Parent;
m_Name = a_File.getName();
- m_Blob = a_File.getBlob();
- captureBlob(RS, m_Blob , m_Name);
-
- Image img = new Image(m_Name);
+
FlowPanel dp = new FlowPanel();
- dp.add(img);
+
+ m_ImageContainer = new SimplePanel();
+ m_ImageContainer.setWidget(new Label(m_Name));
+ dp.add(m_ImageContainer);
dp.add(m_ProgressBar);
dp.add(m_Label);
@@ -116,18 +124,25 @@ public class UploadFile extends Composite{
if (request.getStatus() != 200)
{
- G3Viewer.displayError("Upload Error", request.getResponseText() + request.getStatus() + request.getStatusText());
+ m_Label.setText("Upload Error");
+ addStyleName("upload-error");
}
removeCapture(RS, m_Name);
- try{
- JSONValue jv = JSONParser.parse(request.getResponseText());
- m_Parent.finishedUpload(UploadFile.this, jv);
- }
- catch (Exception e){
- G3Viewer.displayError("Exception on Upload", e.toString() + " " + request.getResponseText());
+ if (request.getStatus() == 200)
+ {
+ try{
+ JSONValue jv = JSONParser.parse(request.getResponseText());
+ m_UploadControl.finishedUpload(UploadFile.this);
+ m_Parent.replaceUpload(UploadFile.this, jv);
+ return;
+ }
+ catch (Exception e){
+ G3Viewer.displayError("Exception on Upload", e.toString() + " " + request.getResponseText());
+ }
}
-
+ m_Parent.removeUpload(UploadFile.this);
+ m_UploadControl.finishedUploadWithError(UploadFile.this);
}
});
@@ -140,6 +155,22 @@ public class UploadFile extends Composite{
return m_ResizeOptions;
}
+ public void prepareUpload(){
+ GWT.runAsync(new AsyncRunner(new Runnable() {
+
+ @Override
+ public void run() {
+ m_Blob = m_File.getBlob();
+ captureBlob(RS, m_Blob , m_Name);
+ Image img = new Image(m_Name);
+
+ m_ImageContainer.setWidget(img);
+ m_UploadControl.finishedPrepare(UploadFile.this);
+ }
+ }));
+
+ }
+
public void startUpload(){
if (m_ResizeOptions.isResize())
diff --git a/modules/gwtorganise/src/com/gloopics/g3viewer/public/G3viewer.css b/modules/gwtorganise/src/com/gloopics/g3viewer/public/G3viewer.css
index e9b7d304..6e2c79a6 100644
--- a/modules/gwtorganise/src/com/gloopics/g3viewer/public/G3viewer.css
+++ b/modules/gwtorganise/src/com/gloopics/g3viewer/public/G3viewer.css
@@ -4,6 +4,7 @@
.error {width:300px; height:200px;}
+.upload-error {background-color: #FFAAAA;}
.item {width:100px; height: 130px; padding:3px; border: 2px solid #FFF; overflow: hidden; float:left; text-align:center; position:relative;margin:3px;}
.item img{max-width:96px; max-height:76px; *width:96px; *height:76px; border:2px solid #AAA;}
.item h3{font-size:10px; font-weight:normal; position:absolute; bottom:5px; left:0px; width:100%; text-align:center; padding:0; margin:0;}
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/G3viewer.gwt.xml b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/G3viewer.gwt.xml
index 389a35ef..ef16872b 100644
--- a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/G3viewer.gwt.xml
+++ b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/G3viewer.gwt.xml
@@ -29,5 +29,5 @@
-
+
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$1.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$1.class
index 03e8d371..9cc2ceb8 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$1.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$1.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$10.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$10.class
index 75765a5c..176ef699 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$10.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$10.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$11.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$11.class
index 91129746..3aa1acc1 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$11.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$11.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$12.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$12.class
index 8e6d5234..b4d40423 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$12.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$12.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$2$1.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$2$1.class
index ab033485..38bf3e71 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$2$1.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$2$1.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$2.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$2.class
index fbc37486..78d47954 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$2.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$2.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$3.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$3.class
index 7a0a2b59..f23a270a 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$3.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$3.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$4$1.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$4$1.class
index cf455ca2..baf9e20c 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$4$1.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$4$1.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$4.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$4.class
index 66118607..494ccd73 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$4.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$4.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$5$1.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$5$1.class
index 33365323..97fdef67 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$5$1.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$5$1.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$5.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$5.class
index 6db9d264..78fe0c5d 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$5.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$5.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$6.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$6.class
index a4ac7459..37f4efde 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$6.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$6.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$7.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$7.class
index 25eddc4f..65fa0d71 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$7.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$7.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$8.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$8.class
index 35d138d2..7b82342f 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$8.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$8.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$9.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$9.class
index 4260f422..4e8d8896 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$9.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album$9.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album.class
index ee9e0a6e..1aca3154 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Album.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/AsyncResizer.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/AsyncResizer.class
index 392ed4f2..bd77f116 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/AsyncResizer.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/AsyncResizer.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/AsyncRunner.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/AsyncRunner.class
new file mode 100644
index 00000000..c449a0f2
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/AsyncRunner.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$1$1.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$1$1.class
index 28ec08b1..e171ea21 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$1$1.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$1$1.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$1.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$1.class
index 3b9c4601..8c47dad0 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$1.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$1.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$2.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$2.class
index b7fe6c19..5725fda8 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$2.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$2.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$ErrorDialog$1.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$ErrorDialog$1.class
index 7075faa5..0f5543f3 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$ErrorDialog$1.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$ErrorDialog$1.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$ErrorDialog.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$ErrorDialog.class
index f2b3519f..53229a4b 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$ErrorDialog.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$ErrorDialog.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$SimplePanelEx.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$SimplePanelEx.class
index d54caa33..28e561c5 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$SimplePanelEx.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer$SimplePanelEx.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer.class
index a7ce7a58..abd21e21 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/G3Viewer.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$1.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$1.class
index a872cfc3..4ed4f519 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$1.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$1.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$2.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$2.class
index 620a5286..8c3e64a4 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$2.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$2.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$3.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$3.class
index 454e2fe2..ceeea965 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$3.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$3.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$4.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$4.class
new file mode 100644
index 00000000..f95b24c9
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$4.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$RequestCallbackImpl.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$RequestCallbackImpl.class
index 7d9a5c74..7d13cf22 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$RequestCallbackImpl.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox$RequestCallbackImpl.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox.class
index 18bd62d6..7d9c98ed 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/HttpDialogBox.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/InformationBar$1$1.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/InformationBar$1$1.class
index 6ffb0d5b..7e875af8 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/InformationBar$1$1.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/InformationBar$1$1.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/InformationBar$1.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/InformationBar$1.class
index e09159d3..944225cc 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/InformationBar$1.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/InformationBar$1.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/InformationBar.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/InformationBar.class
index bebe68d3..e4562f3a 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/InformationBar.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/InformationBar.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item$6.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item$6.class
index 5d43e6be..1c12b2b5 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item$6.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item$6.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item$7.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item$7.class
index c02cd8b3..91d252ba 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item$7.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item$7.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item$8.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item$8.class
index 9a4a1041..874ac3ea 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item$8.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item$8.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item.class
index 3d90297b..6eadd6ca 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/Item.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadControl.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadControl.class
new file mode 100644
index 00000000..474e5cf1
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadControl.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile$1.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile$1.class
index bc8f7ecb..0fd63556 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile$1.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile$1.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile$2.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile$2.class
index 4b915dda..7770d351 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile$2.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile$2.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile$3.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile$3.class
new file mode 100644
index 00000000..a2e0b87f
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile$3.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile.class b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile.class
index 9d888857..93b9e709 100644
Binary files a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile.class and b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/client/UploadFile.class differ
diff --git a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/public/G3viewer.css b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/public/G3viewer.css
index e9b7d304..6e2c79a6 100644
--- a/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/public/G3viewer.css
+++ b/modules/gwtorganise/war/WEB-INF/classes/com/gloopics/g3viewer/public/G3viewer.css
@@ -4,6 +4,7 @@
.error {width:300px; height:200px;}
+.upload-error {background-color: #FFAAAA;}
.item {width:100px; height: 130px; padding:3px; border: 2px solid #FFF; overflow: hidden; float:left; text-align:center; position:relative;margin:3px;}
.item img{max-width:96px; max-height:76px; *width:96px; *height:76px; border:2px solid #AAA;}
.item h3{font-size:10px; font-weight:normal; position:absolute; bottom:5px; left:0px; width:100%; text-align:center; padding:0; margin:0;}
diff --git a/modules/gwtorganise/war/WEB-INF/lib/appengine-api-1.0-sdk-1.2.5.jar b/modules/gwtorganise/war/WEB-INF/lib/appengine-api-1.0-sdk-1.2.5.jar
new file mode 100644
index 00000000..5e461a1b
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/lib/appengine-api-1.0-sdk-1.2.5.jar differ
diff --git a/modules/gwtorganise/war/WEB-INF/lib/appengine-api-labs-1.2.5.jar b/modules/gwtorganise/war/WEB-INF/lib/appengine-api-labs-1.2.5.jar
new file mode 100644
index 00000000..5325404d
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/lib/appengine-api-labs-1.2.5.jar differ
diff --git a/modules/gwtorganise/war/WEB-INF/lib/datanucleus-appengine-1.0.3.jar b/modules/gwtorganise/war/WEB-INF/lib/datanucleus-appengine-1.0.3.jar
new file mode 100644
index 00000000..fa0773db
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/lib/datanucleus-appengine-1.0.3.jar differ
diff --git a/modules/gwtorganise/war/WEB-INF/lib/datanucleus-core-1.1.5.jar b/modules/gwtorganise/war/WEB-INF/lib/datanucleus-core-1.1.5.jar
new file mode 100644
index 00000000..c450ab94
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/lib/datanucleus-core-1.1.5.jar differ
diff --git a/modules/gwtorganise/war/WEB-INF/lib/datanucleus-jpa-1.1.5.jar b/modules/gwtorganise/war/WEB-INF/lib/datanucleus-jpa-1.1.5.jar
new file mode 100644
index 00000000..c326e0bc
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/lib/datanucleus-jpa-1.1.5.jar differ
diff --git a/modules/gwtorganise/war/WEB-INF/lib/geronimo-jpa_3.0_spec-1.1.1.jar b/modules/gwtorganise/war/WEB-INF/lib/geronimo-jpa_3.0_spec-1.1.1.jar
new file mode 100644
index 00000000..12d4ab0d
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/lib/geronimo-jpa_3.0_spec-1.1.1.jar differ
diff --git a/modules/gwtorganise/war/WEB-INF/lib/geronimo-jta_1.1_spec-1.1.1.jar b/modules/gwtorganise/war/WEB-INF/lib/geronimo-jta_1.1_spec-1.1.1.jar
new file mode 100644
index 00000000..ee9963df
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/lib/geronimo-jta_1.1_spec-1.1.1.jar differ
diff --git a/modules/gwtorganise/war/WEB-INF/lib/gwt-servlet.jar b/modules/gwtorganise/war/WEB-INF/lib/gwt-servlet.jar
new file mode 100644
index 00000000..50e2a81c
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/lib/gwt-servlet.jar differ
diff --git a/modules/gwtorganise/war/WEB-INF/lib/jdo2-api-2.3-eb.jar b/modules/gwtorganise/war/WEB-INF/lib/jdo2-api-2.3-eb.jar
new file mode 100644
index 00000000..2547a0b0
Binary files /dev/null and b/modules/gwtorganise/war/WEB-INF/lib/jdo2-api-2.3-eb.jar differ
diff --git a/modules/gwtorganise/war/g3viewer/0031994593072F3F8665BB367C2904F3.cache.html b/modules/gwtorganise/war/g3viewer/0031994593072F3F8665BB367C2904F3.cache.html
deleted file mode 100644
index 198faab1..00000000
--- a/modules/gwtorganise/war/g3viewer/0031994593072F3F8665BB367C2904F3.cache.html
+++ /dev/null
@@ -1,1839 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/015D751F4204508258E3AD3E74E19E72.cache.html b/modules/gwtorganise/war/g3viewer/015D751F4204508258E3AD3E74E19E72.cache.html
new file mode 100644
index 00000000..c72e9ec4
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/015D751F4204508258E3AD3E74E19E72.cache.html
@@ -0,0 +1,313 @@
+
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/063AB00068E7F94442F89D1B4262AD00.cache.html b/modules/gwtorganise/war/g3viewer/063AB00068E7F94442F89D1B4262AD00.cache.html
deleted file mode 100644
index f19e7d27..00000000
--- a/modules/gwtorganise/war/g3viewer/063AB00068E7F94442F89D1B4262AD00.cache.html
+++ /dev/null
@@ -1,313 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/0A21C4AA9FA3F1812B8077A68729DA52.cache.html b/modules/gwtorganise/war/g3viewer/0A21C4AA9FA3F1812B8077A68729DA52.cache.html
new file mode 100644
index 00000000..135a2b8c
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/0A21C4AA9FA3F1812B8077A68729DA52.cache.html
@@ -0,0 +1,314 @@
+
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/0AB3C6DF30C08F43EAA999A9F920C30B.cache.html b/modules/gwtorganise/war/g3viewer/0AB3C6DF30C08F43EAA999A9F920C30B.cache.html
new file mode 100644
index 00000000..f3c8cee2
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/0AB3C6DF30C08F43EAA999A9F920C30B.cache.html
@@ -0,0 +1,1818 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/2625E6CD0659684104018A069A188996.cache.html b/modules/gwtorganise/war/g3viewer/2625E6CD0659684104018A069A188996.cache.html
deleted file mode 100644
index 319f475f..00000000
--- a/modules/gwtorganise/war/g3viewer/2625E6CD0659684104018A069A188996.cache.html
+++ /dev/null
@@ -1,1811 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/3295227D4A416F64C8B3061D11DFABA0.cache.html b/modules/gwtorganise/war/g3viewer/3295227D4A416F64C8B3061D11DFABA0.cache.html
new file mode 100644
index 00000000..a1710d65
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/3295227D4A416F64C8B3061D11DFABA0.cache.html
@@ -0,0 +1,1777 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/36CF5446615AAE9D0FDDA0B123643155.cache.html b/modules/gwtorganise/war/g3viewer/36CF5446615AAE9D0FDDA0B123643155.cache.html
deleted file mode 100644
index e46fe353..00000000
--- a/modules/gwtorganise/war/g3viewer/36CF5446615AAE9D0FDDA0B123643155.cache.html
+++ /dev/null
@@ -1,308 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/371B2293E0881C8A53FDA41CA333A843.cache.html b/modules/gwtorganise/war/g3viewer/371B2293E0881C8A53FDA41CA333A843.cache.html
new file mode 100644
index 00000000..a8754f7a
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/371B2293E0881C8A53FDA41CA333A843.cache.html
@@ -0,0 +1,1795 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/373CE923F09A0C2270E1B0F2D934E253.cache.html b/modules/gwtorganise/war/g3viewer/373CE923F09A0C2270E1B0F2D934E253.cache.html
deleted file mode 100644
index e1f106b9..00000000
--- a/modules/gwtorganise/war/g3viewer/373CE923F09A0C2270E1B0F2D934E253.cache.html
+++ /dev/null
@@ -1,326 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/46E36699DD51342BCC1877A718D3B6D5.cache.html b/modules/gwtorganise/war/g3viewer/46E36699DD51342BCC1877A718D3B6D5.cache.html
new file mode 100644
index 00000000..08cf6363
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/46E36699DD51342BCC1877A718D3B6D5.cache.html
@@ -0,0 +1,326 @@
+
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/4FEE434A493BF0E4969DA18CF936A5FD.cache.html b/modules/gwtorganise/war/g3viewer/4FEE434A493BF0E4969DA18CF936A5FD.cache.html
deleted file mode 100644
index e24602d9..00000000
--- a/modules/gwtorganise/war/g3viewer/4FEE434A493BF0E4969DA18CF936A5FD.cache.html
+++ /dev/null
@@ -1,1807 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/5DDD50A96AC2DC41C6BF0EB870994C49.cache.html b/modules/gwtorganise/war/g3viewer/5DDD50A96AC2DC41C6BF0EB870994C49.cache.html
deleted file mode 100644
index 1f4fd91f..00000000
--- a/modules/gwtorganise/war/g3viewer/5DDD50A96AC2DC41C6BF0EB870994C49.cache.html
+++ /dev/null
@@ -1,1793 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/6B11280F72B8881FCDF44A0B47F1E96A.cache.html b/modules/gwtorganise/war/g3viewer/6B11280F72B8881FCDF44A0B47F1E96A.cache.html
deleted file mode 100644
index 073bb0dc..00000000
--- a/modules/gwtorganise/war/g3viewer/6B11280F72B8881FCDF44A0B47F1E96A.cache.html
+++ /dev/null
@@ -1,314 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/826A0FAD0C07BC304C641864F5274BFC.cache.html b/modules/gwtorganise/war/g3viewer/826A0FAD0C07BC304C641864F5274BFC.cache.html
new file mode 100644
index 00000000..57c4200d
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/826A0FAD0C07BC304C641864F5274BFC.cache.html
@@ -0,0 +1,1819 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/8E9AF58E0E2BDFC35328028FC368ECD2.cache.html b/modules/gwtorganise/war/g3viewer/8E9AF58E0E2BDFC35328028FC368ECD2.cache.html
deleted file mode 100644
index dbce1394..00000000
--- a/modules/gwtorganise/war/g3viewer/8E9AF58E0E2BDFC35328028FC368ECD2.cache.html
+++ /dev/null
@@ -1,1834 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/AE48EA5D8ECD3E90C23EBF393DC6958A.cache.html b/modules/gwtorganise/war/g3viewer/AE48EA5D8ECD3E90C23EBF393DC6958A.cache.html
new file mode 100644
index 00000000..4b77477f
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/AE48EA5D8ECD3E90C23EBF393DC6958A.cache.html
@@ -0,0 +1,1823 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/B71911CF996F6E89D496C872F18EA45B.cache.html b/modules/gwtorganise/war/g3viewer/B71911CF996F6E89D496C872F18EA45B.cache.html
new file mode 100644
index 00000000..952fbc55
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/B71911CF996F6E89D496C872F18EA45B.cache.html
@@ -0,0 +1,311 @@
+
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/C0A3E821CD3689650D1DF0CEF5C506A9.cache.html b/modules/gwtorganise/war/g3viewer/C0A3E821CD3689650D1DF0CEF5C506A9.cache.html
new file mode 100644
index 00000000..296597ca
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/C0A3E821CD3689650D1DF0CEF5C506A9.cache.html
@@ -0,0 +1,1791 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/DB10FC871F1917C3CF43B2E1A192D050.cache.html b/modules/gwtorganise/war/g3viewer/DB10FC871F1917C3CF43B2E1A192D050.cache.html
new file mode 100644
index 00000000..c32b9730
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/DB10FC871F1917C3CF43B2E1A192D050.cache.html
@@ -0,0 +1,308 @@
+
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/F0ACC41901D1A45069B29563B600C0E1.cache.html b/modules/gwtorganise/war/g3viewer/F0ACC41901D1A45069B29563B600C0E1.cache.html
deleted file mode 100644
index 9cf0edc6..00000000
--- a/modules/gwtorganise/war/g3viewer/F0ACC41901D1A45069B29563B600C0E1.cache.html
+++ /dev/null
@@ -1,1835 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/FFDD2B79ACD26336C36A836612DAEC0A.cache.html b/modules/gwtorganise/war/g3viewer/FFDD2B79ACD26336C36A836612DAEC0A.cache.html
deleted file mode 100644
index 6380f246..00000000
--- a/modules/gwtorganise/war/g3viewer/FFDD2B79ACD26336C36A836612DAEC0A.cache.html
+++ /dev/null
@@ -1,311 +0,0 @@
-
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/G3viewer.css b/modules/gwtorganise/war/g3viewer/G3viewer.css
index e9b7d304..6e2c79a6 100644
--- a/modules/gwtorganise/war/g3viewer/G3viewer.css
+++ b/modules/gwtorganise/war/g3viewer/G3viewer.css
@@ -4,6 +4,7 @@
.error {width:300px; height:200px;}
+.upload-error {background-color: #FFAAAA;}
.item {width:100px; height: 130px; padding:3px; border: 2px solid #FFF; overflow: hidden; float:left; text-align:center; position:relative;margin:3px;}
.item img{max-width:96px; max-height:76px; *width:96px; *height:76px; border:2px solid #AAA;}
.item h3{font-size:10px; font-weight:normal; position:absolute; bottom:5px; left:0px; width:100%; text-align:center; padding:0; margin:0;}
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/0031994593072F3F8665BB367C2904F3/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/0031994593072F3F8665BB367C2904F3/1.cache.js
deleted file mode 100644
index 28aba6f0..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/0031994593072F3F8665BB367C2904F3/1.cache.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function sS(){}
-function ES(){return dP}
-function IS(){var a;while(xS){a=xS;xS=xS.c;!xS&&(yS=null);qo(a.b)}}
-function FS(){AS=true;zS=(CS(),new sS);jy((gy(),fy),1);!!$stats&&$stats(Py(irb,kib,null,null));zS.ac();!!$stats&&$stats(Py(irb,jrb,null,null))}
-function qo(a){var b,c,d,e,f;e=($wnd.google&&$wnd.google.gears&&$wnd.google.gears.factory).create(hrb);e.decode(a.b);d=e.width;c=e.height;f=~~(d/a.c.c);b=~~(c/a.c.b);if(f>b){if(f>1){e.resize(a.c.c,~~(c/f));fv(a.d,e.encode())}}else{if(b>1){e.resize(~~(d/b),a.c.b);fv(a.d,e.encode())}}}
-var krb='AsyncLoader1',hrb='beta.canvas',irb='runCallbacks1';_=sS.prototype=new tS;_.gC=ES;_.ac=IS;_.tI=0;var dP=P3(Xob,krb);FS();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/0031994593072F3F8665BB367C2904F3/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/0031994593072F3F8665BB367C2904F3/2.cache.js
deleted file mode 100644
index f801762e..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/0031994593072F3F8665BB367C2904F3/2.cache.js
+++ /dev/null
@@ -1,4 +0,0 @@
-function ry(){my(fy)}
-function my(a){jy(a,a.e)}
-function jy(a,b){var c;c=b==a.e?iib:jib+b;oy(c,jrb,O4(b),null);if(ly(a,b)){Ay(a.f);Y6(a.b,O4(b));qy(a)}}
-var jrb='end';ry();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/015D751F4204508258E3AD3E74E19E72/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/015D751F4204508258E3AD3E74E19E72/1.cache.js
new file mode 100644
index 00000000..4c902a9c
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/015D751F4204508258E3AD3E74E19E72/1.cache.js
@@ -0,0 +1,7 @@
+function _g(){}
+function Zg(){}
+function eh(){}
+function Yg(){}
+function bh(){bh=wp;ah=new Zg}
+function dh(){ah=(bh(),new Yg);dc((ac(),_b),1);!!$stats&&$stats(Fc(Qr,Rr,null,null));ah.m();!!$stats&&$stats(Fc(Qr,Sr,null,null))}
+var Qr='runCallbacks1';_=Zg.prototype=new O;_.m=_g;_.tI=0;_=Yg.prototype=new Zg;_.m=eh;_.tI=0;var ah;dh();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/015D751F4204508258E3AD3E74E19E72/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/015D751F4204508258E3AD3E74E19E72/2.cache.js
new file mode 100644
index 00000000..af900388
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/015D751F4204508258E3AD3E74E19E72/2.cache.js
@@ -0,0 +1,7 @@
+function ih(){}
+function gh(){}
+function nh(){}
+function fh(){}
+function kh(){kh=wp;jh=new gh}
+function mh(){jh=(kh(),new fh);dc((ac(),_b),2);!!$stats&&$stats(Fc(Tr,Rr,null,null));jh.m();!!$stats&&$stats(Fc(Tr,Sr,null,null))}
+var Tr='runCallbacks2';_=gh.prototype=new O;_.m=ih;_.tI=0;_=fh.prototype=new gh;_.m=nh;_.tI=0;var jh;mh();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/015D751F4204508258E3AD3E74E19E72/3.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/015D751F4204508258E3AD3E74E19E72/3.cache.js
new file mode 100644
index 00000000..e6b2d526
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/015D751F4204508258E3AD3E74E19E72/3.cache.js
@@ -0,0 +1,75 @@
+function $b(){}
+function lc(){}
+function uc(){}
+function xc(){}
+function Nc(){}
+function Qk(){}
+function Pk(){}
+function Cn(){}
+function Jn(){}
+function On(){}
+function Eo(){}
+function Po(){}
+function Yo(){}
+function kc(){fc(_b)}
+function fc(a){dc(a,a.c)}
+function Bc(a){Ac(this,a)}
+function qc(a){a.b=0;a.c=0}
+function tc(a){return a.c-a.b}
+function Vk(){return this.a}
+function Wk(){return this.a}
+function Oo(){return this.b}
+function Xo(){return Vo(this)}
+function rc(a){return a.a[a.b]}
+function pc(a,b){a.a[a.c++]=b}
+function wc(a,b){Hd();return a}
+function zc(a,b){a.a=b;return a}
+function Tk(a,b){a.a=b;return a}
+function Ln(a,b){a.a=b;return a}
+function Sn(){return Jo(this,0)}
+function In(){return this.b.a.d}
+function sc(a){return a.a[a.b++]}
+function Mn(){return jn(this.a.a)}
+function Gn(a){return Yl(this.a,a)}
+function Wo(){return this.b!=this.d.a}
+function $o(a){a.a=a.b=a;return a}
+function Pc(a,b,c){a.b=b;a.a=c;return a}
+function En(a,b,c){a.a=b;a.b=c;return a}
+function No(a){return _o(new Yo,a,this.a),++this.b,true}
+function Mo(a){if(a.b==0){throw pp(new np)}}
+function Go(a){a.a=$o(new Yo);a.b=0;return a}
+function Io(a,b,c){_o(new Yo,b,c);++a.b}
+function So(a,b,c,d){a.d=d;a.b=c;a.a=b;return a}
+function _o(a,b,c){a.c=b;a.a=c;a.b=c.b;c.b.a=a;c.b=a;return a}
+function oc(a,b){a.a=_f(Cg,0,-1,b,1);return a}
+function $k(){$k=wp;Zk=_f(Eg,0,12,256,0)}
+function ac(){ac=wp;_b=cc(new $b,3,ag(Cg,0,-1,[]))}
+function Ol(a){var b;b=rm(new lm,a);return En(new Cn,a,b)}
+function Nn(){var a;a=pg(kn(this.a.a),20).D();return a}
+function Hn(){var a;a=Am(new ym,this.b.a);return Ln(new Jn,a)}
+function Qn(a,b){var c;c=Jo(this,a);Io(c.d,b,c.b);++c.a;c.c=null}
+function Ko(a){var b;Mo(a);--a.b;b=a.a.a;b.a.b=b.b;b.b.a=b.a;b.a=b.b=b;return b.c}
+function Uk(a){return a!=null&&ng(a.tI,12)&&pg(a,12).a==this.a}
+function nk(b){var a=b;$wnd.setTimeout(function(){a.onreadystatechange=new Function},0)}
+function tk(c,a){var b=c;c.onreadystatechange=$entry(function(){a.i(b)})}
+function Xl(e,a){var b=e.e;for(var c in b){if(c.charCodeAt(0)==58){var d=b[c];if(e.B(a,d)){return true}}}return false}
+function Lc(b,c){function d(a){c.h(a)}
+return __gwtStartLoadingFragment(b,d)}
+function Yl(a,b){if(a.c&&qo(a.b,b)){return true}else if(Xl(a,b)){return true}else if(Vl(a,b)){return true}return false}
+function Vo(a){if(a.b==a.d.a){throw pp(new np)}a.c=a.b;a.b=a.b.a;++a.a;return a.c.c}
+function cc(a,b,c){ac();a.a=po(new no);a.f=Go(new Eo);a.c=b;a.b=c;a.e=oc(new lc,b+1);return a}
+function Mc(a,b){var c,d;c=Lc(a,b);if(c==null){return}d=uk();d.open(Xr,c,true);tk(d,Pc(new Nc,d,b));d.send(null)}
+function dc(a,b){var c;c=b==a.c?Ur:Vr+b;hc(c,Sr,Xk(b),null);if(ec(a,b)){sc(a.d);gm(a.a,Xk(b));jc(a)}}
+function Jo(a,b){var c,d;(b<0||b>a.b)&&cn(b,a.b);if(b>=a.b>>1){d=a.a;for(c=a.b;c>b;--c){d=d.b}}else{d=a.a.a;for(c=0;c-129&&a<128){b=a+128;c=($k(),Zk)[b];!c&&(c=Zk[b]=Tk(new Pk,a));return c}return Tk(new Pk,a)}
+function Vl(i,a){var b=i.a;for(var c in b){if(c==parseInt(c)){var d=b[c];for(var e=0,f=d.length;e0){Xn(h,pg(Ko(b.a.f),2));sc(b.a.e)}qc(b.a.e);Zn(h,Ol(b.a.a));Ul(b.a.a);i=null;for(g=hn(new en,h);g.a1){return}if(tc(a.d)>0){c=rc(a.d);hc(c==a.c?Ur:Vr+c,Rr,Xk(c),null);Mc(c,zc(new xc,a));return}while(tc(a.e)>0){c=sc(a.e);b=pg(Ko(a.f),2);hc(c==a.c?Ur:Vr+c,Rr,Xk(c),null);Mc(c,b)}}
+var $r="Can't get element ",Xr='GET',Yr='MSXML2.XMLHTTP.3.0',Zr='Microsoft.XMLHTTP',Rr='begin',Vr='download',Sr='end',Ur='leftoversDownload',Wr='runAsync';_=$b.prototype=new O;_.tI=0;_.b=null;_.c=0;_.d=null;_.e=null;var _b;_=lc.prototype=new O;_.tI=0;_.a=null;_.b=0;_.c=0;_=uc.prototype=new mb;_.tI=7;_=xc.prototype=new O;_.h=Bc;_.tI=8;_.a=null;_=Nc.prototype=new O;_.i=Qc;_.tI=0;_.a=null;_.b=null;_=Qk.prototype=new O;_.tI=27;_=Pk.prototype=new Qk;_.eQ=Uk;_.hC=Vk;_.w=Wk;_.tI=30;_.a=0;var Zk;_=Cn.prototype=new Dl;_.y=Gn;_.s=Hn;_.z=In;_.tI=0;_.a=null;_.b=null;_=Jn.prototype=new O;_.u=Mn;_.v=Nn;_.tI=0;_.a=null;_=On.prototype=new Wm;_.F=Qn;_.G=Rn;_.s=Sn;_.tI=41;_=Eo.prototype=new On;_.x=No;_.z=Oo;_.tI=45;_.a=null;_.b=0;_=Po.prototype=new O;_.u=Wo;_.v=Xo;_.tI=0;_.a=0;_.b=null;_.c=null;_.d=null;_=Yo.prototype=new O;_.tI=0;_.a=null;_.b=null;_.c=null;var Cg=new Ak,Eg=new Ak;kc();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/063AB00068E7F94442F89D1B4262AD00/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/063AB00068E7F94442F89D1B4262AD00/1.cache.js
deleted file mode 100644
index 51ec2fbc..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/063AB00068E7F94442F89D1B4262AD00/1.cache.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function _g(){}
-function Zg(){}
-function eh(){}
-function Yg(){}
-function bh(){bh=op;ah=new Zg}
-function dh(){ah=(bh(),new Yg);dc((ac(),_b),1);!!$stats&&$stats(Fc(Ir,Jr,null,null));ah.m();!!$stats&&$stats(Fc(Ir,Kr,null,null))}
-var Ir='runCallbacks1';_=Zg.prototype=new O;_.m=_g;_.tI=0;_=Yg.prototype=new Zg;_.m=eh;_.tI=0;var ah;dh();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/063AB00068E7F94442F89D1B4262AD00/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/063AB00068E7F94442F89D1B4262AD00/2.cache.js
deleted file mode 100644
index e32edc87..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/063AB00068E7F94442F89D1B4262AD00/2.cache.js
+++ /dev/null
@@ -1,75 +0,0 @@
-function $b(){}
-function lc(){}
-function uc(){}
-function xc(){}
-function Nc(){}
-function Hk(){}
-function Gk(){}
-function tn(){}
-function An(){}
-function Fn(){}
-function wo(){}
-function Ho(){}
-function Qo(){}
-function kc(){fc(_b)}
-function fc(a){dc(a,a.c)}
-function Bc(a){Ac(this,a)}
-function qc(a){a.b=0;a.c=0}
-function tc(a){return a.c-a.b}
-function Mk(){return this.a}
-function Nk(){return this.a}
-function Go(){return this.b}
-function Po(){return No(this)}
-function rc(a){return a.a[a.b]}
-function pc(a,b){a.a[a.c++]=b}
-function wc(a,b){Hd();return a}
-function zc(a,b){a.a=b;return a}
-function Kk(a,b){a.a=b;return a}
-function Cn(a,b){a.a=b;return a}
-function sc(a){return a.a[a.b++]}
-function zn(){return this.b.a.d}
-function Dn(){return _m(this.a.a)}
-function xn(a){return Pl(this.a,a)}
-function Oo(){return this.b!=this.d.a}
-function Kn(){return Bo(pg(this,24),0)}
-function So(a){a.a=a.b=a;return a}
-function Pc(a,b,c){a.b=b;a.a=c;return a}
-function vn(a,b,c){a.a=b;a.b=c;return a}
-function Fo(a){return To(new Qo,a,this.a),++this.b,true}
-function Eo(a){if(a.b==0){throw hp(new fp)}}
-function yo(a){a.a=So(new Qo);a.b=0;return a}
-function Ao(a,b,c){To(new Qo,b,c);++a.b}
-function Ko(a,b,c,d){a.d=d;a.b=c;a.a=b;return a}
-function To(a,b,c){a.c=b;a.a=c;a.b=c.b;c.b.a=a;c.b=a;return a}
-function oc(a,b){a.a=_f(Cg,0,-1,b,1);return a}
-function Rk(){Rk=op;Qk=_f(Eg,0,12,256,0)}
-function ac(){ac=op;_b=cc(new $b,2,ag(Cg,0,-1,[]))}
-function Fl(a){var b;b=im(new cm,a);return vn(new tn,a,b)}
-function En(){var a;a=pg(an(this.a.a),20).D();return a}
-function yn(){var a;a=rm(new pm,this.b.a);return Cn(new An,a)}
-function In(a,b){var c;c=Bo(this,a);Ao(c.d,b,c.b);++c.a;c.c=null}
-function Co(a){var b;Eo(a);--a.b;b=a.a.a;b.a.b=b.b;b.b.a=b.a;b.a=b.b=b;return b.c}
-function Lk(a){return a!=null&&ng(a.tI,12)&&pg(a,12).a==this.a}
-function Lc(b,c){function d(a){c.h(a)}
-return __gwtStartLoadingFragment(b,d)}
-function Pl(a,b){if(a.c&&io(a.b,b)){return true}else if(Ol(a,b)){return true}else if(Ml(a,b)){return true}return false}
-function kk(c,a){var b=c;c.onreadystatechange=$entry(function(){a.i(b)})}
-function ek(b){var a=b;$wnd.setTimeout(function(){a.onreadystatechange=new Function},0)}
-function lk(){if($wnd.XMLHttpRequest){return new XMLHttpRequest}else{try{return new ActiveXObject(Pr)}catch(a){return new ActiveXObject(Qr)}}}
-function No(a){if(a.b==a.d.a){throw hp(new fp)}a.c=a.b;a.b=a.b.a;++a.a;return a.c.c}
-function cc(a,b,c){ac();a.a=ho(new fo);a.f=yo(new wo);a.c=b;a.b=c;a.e=oc(new lc,b+1);return a}
-function Mc(a,b){var c,d;c=Lc(a,b);if(c==null){return}d=lk();d.open(Or,c,true);kk(d,Pc(new Nc,d,b));d.send(null)}
-function dc(a,b){var c;c=b==a.c?Lr:Mr+b;hc(c,Kr,Ok(b),null);if(ec(a,b)){sc(a.d);Zl(a.a,Ok(b));jc(a)}}
-function Bo(a,b){var c,d;(b<0||b>a.b)&&Vm(b,a.b);if(b>=a.b>>1){d=a.a;for(c=a.b;c>b;--c){d=d.b}}else{d=a.a.a;for(c=0;c-129&&a<128){b=a+128;c=(Rk(),Qk)[b];!c&&(c=Qk[b]=Kk(new Gk,a));return c}return Kk(new Gk,a)}
-function Jn(b){var a,d;d=Bo(this,b);try{return No(d)}catch(a){a=Og(a);if(sg(a,23)){throw Fk(new Ck,Rr+b)}else throw a}}
-function Rn(a,b){if(b.b.a.d==0){return false}Array.prototype.splice.apply(a.a,[a.b,0].concat(xl(b,_f(Fg,0,0,b.b.a.d,0))));a.b+=b.b.a.d;return true}
-function Ac(b,c){var a,e,f,g,h,i;h=On(new Ln);while(tc(b.a.e)>0){Pn(h,pg(Co(b.a.f),2));sc(b.a.e)}qc(b.a.e);Rn(h,Fl(b.a.a));Ll(b.a.a);i=null;for(g=$m(new Xm,h);g.a1){return}if(tc(a.d)>0){c=rc(a.d);hc(c==a.c?Lr:Mr+c,Jr,Ok(c),null);Mc(c,zc(new xc,a));return}while(tc(a.e)>0){c=sc(a.e);b=pg(Co(a.f),2);hc(c==a.c?Lr:Mr+c,Jr,Ok(c),null);Mc(c,b)}}
-var Rr="Can't get element ",Or='GET',Pr='MSXML2.XMLHTTP.3.0',Qr='Microsoft.XMLHTTP',Jr='begin',Mr='download',Kr='end',Lr='leftoversDownload',Nr='runAsync';_=$b.prototype=new O;_.tI=0;_.b=null;_.c=0;_.d=null;_.e=null;var _b;_=lc.prototype=new O;_.tI=0;_.a=null;_.b=0;_.c=0;_=uc.prototype=new mb;_.tI=7;_=xc.prototype=new O;_.h=Bc;_.tI=8;_.a=null;_=Nc.prototype=new O;_.i=Qc;_.tI=0;_.a=null;_.b=null;_=Hk.prototype=new O;_.tI=27;_=Gk.prototype=new Hk;_.eQ=Lk;_.hC=Mk;_.w=Nk;_.tI=30;_.a=0;var Qk;_=tn.prototype=new ul;_.y=xn;_.s=yn;_.z=zn;_.tI=0;_.a=null;_.b=null;_=An.prototype=new O;_.u=Dn;_.v=En;_.tI=0;_.a=null;_=Fn.prototype=new Nm;_.F=In;_.G=Jn;_.s=Kn;_.tI=41;_=wo.prototype=new Fn;_.x=Fo;_.z=Go;_.tI=45;_.a=null;_.b=0;_=Ho.prototype=new O;_.u=Oo;_.v=Po;_.tI=0;_.a=0;_.b=null;_.c=null;_.d=null;_=Qo.prototype=new O;_.tI=0;_.a=null;_.b=null;_.c=null;var Cg=new rk,Eg=new rk;kc();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/0A21C4AA9FA3F1812B8077A68729DA52/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/0A21C4AA9FA3F1812B8077A68729DA52/1.cache.js
new file mode 100644
index 00000000..5b08821d
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/0A21C4AA9FA3F1812B8077A68729DA52/1.cache.js
@@ -0,0 +1,7 @@
+function Xg(){}
+function Vg(){}
+function ah(){}
+function Ug(){}
+function Zg(){Zg=np;Yg=new Vg}
+function _g(){Yg=(Zg(),new Ug);ac((Zb(),Yb),1);!!$stats&&$stats(Cc(yr,zr,null,null));Yg.m();!!$stats&&$stats(Cc(yr,Ar,null,null))}
+var yr='runCallbacks1';_=Vg.prototype=new O;_.m=Xg;_.tI=0;_=Ug.prototype=new Vg;_.m=ah;_.tI=0;var Yg;_g();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/0A21C4AA9FA3F1812B8077A68729DA52/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/0A21C4AA9FA3F1812B8077A68729DA52/2.cache.js
new file mode 100644
index 00000000..eb494981
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/0A21C4AA9FA3F1812B8077A68729DA52/2.cache.js
@@ -0,0 +1,7 @@
+function eh(){}
+function ch(){}
+function jh(){}
+function bh(){}
+function gh(){gh=np;fh=new ch}
+function ih(){fh=(gh(),new bh);ac((Zb(),Yb),2);!!$stats&&$stats(Cc(Br,zr,null,null));fh.m();!!$stats&&$stats(Cc(Br,Ar,null,null))}
+var Br='runCallbacks2';_=ch.prototype=new O;_.m=eh;_.tI=0;_=bh.prototype=new ch;_.m=jh;_.tI=0;var fh;ih();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/0A21C4AA9FA3F1812B8077A68729DA52/3.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/0A21C4AA9FA3F1812B8077A68729DA52/3.cache.js
new file mode 100644
index 00000000..f4471a59
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/0A21C4AA9FA3F1812B8077A68729DA52/3.cache.js
@@ -0,0 +1,75 @@
+function Xb(){}
+function ic(){}
+function rc(){}
+function uc(){}
+function Kc(){}
+function Hk(){}
+function Gk(){}
+function tn(){}
+function An(){}
+function Fn(){}
+function vo(){}
+function Go(){}
+function Po(){}
+function hc(){cc(Yb)}
+function cc(a){ac(a,a.d)}
+function yc(a){xc(this,a)}
+function nc(a){a.c=0;a.d=0}
+function qc(a){return a.d-a.c}
+function Mk(){return this.b}
+function Nk(){return this.b}
+function Fo(){return this.c}
+function Oo(){return Mo(this)}
+function oc(a){return a.b[a.c]}
+function mc(a,b){a.b[a.d++]=b}
+function tc(a,b){Ed();return a}
+function wc(a,b){a.b=b;return a}
+function Kk(a,b){a.b=b;return a}
+function Cn(a,b){a.b=b;return a}
+function Jn(){return Ao(this,0)}
+function zn(){return this.c.b.e}
+function pc(a){return a.b[a.c++]}
+function Dn(){return _m(this.b.b)}
+function xn(a){return Pl(this.b,a)}
+function No(){return this.c!=this.e.b}
+function Ro(a){a.b=a.c=a;return a}
+function Mc(a,b,c){a.c=b;a.b=c;return a}
+function vn(a,b,c){a.b=b;a.c=c;return a}
+function Eo(a){return So(new Po,a,this.b),++this.c,true}
+function Do(a){if(a.c==0){throw gp(new ep)}}
+function xo(a){a.b=Ro(new Po);a.c=0;return a}
+function zo(a,b,c){So(new Po,b,c);++a.c}
+function Jo(a,b,c,d){a.e=d;a.c=c;a.b=b;return a}
+function So(a,b,c){a.d=b;a.b=c;a.c=c.c;c.c.b=a;c.c=a;return a}
+function lc(a,b){a.b=Xf(yg,0,-1,b,1);return a}
+function Rk(){Rk=np;Qk=Xf(Ag,0,12,256,0)}
+function Zb(){Zb=np;Yb=_b(new Xb,3,Yf(yg,0,-1,[]))}
+function Fl(a){var b;b=im(new cm,a);return vn(new tn,a,b)}
+function En(){var a;a=lg(an(this.b.b),20).D();return a}
+function yn(){var a;a=rm(new pm,this.c.b);return Cn(new An,a)}
+function Hn(a,b){var c;c=Ao(this,a);zo(c.e,b,c.c);++c.b;c.d=null}
+function Bo(a){var b;Do(a);--a.c;b=a.b.b;b.b.c=b.c;b.c.b=b.b;b.b=b.c=b;return b.d}
+function Lk(a){return a!=null&&jg(a.tI,12)&&lg(a,12).b==this.b}
+function ec(a,b,c,d){!!$stats&&$stats(Cc(a,b,c,d))}
+function Ic(b,c){function d(a){c.i(a)}
+return __gwtStartLoadingFragment(b,d)}
+function Pl(a,b){if(a.d&&ho(a.c,b)){return true}else if(Ol(a,b)){return true}else if(Ml(a,b)){return true}return false}
+function Mo(a){if(a.c==a.e.b){throw gp(new ep)}a.d=a.c;a.c=a.c.b;++a.b;return a.d.d}
+function _b(a,b,c){Zb();a.b=go(new eo);a.g=xo(new vo);a.d=b;a.c=c;a.f=lc(new ic,b+1);return a}
+function ek(b){var a=b;$wnd.setTimeout(function(){a.onreadystatechange=new Function},0)}
+function kk(c,a){var b=c;c.onreadystatechange=$entry(function(){a.j(b)})}
+function Ol(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=b[c];if(e.B(a,d)){return true}}}return false}
+function Ml(i,a){var b=i.b;for(var c in b){if(c==parseInt(c)){var d=b[c];for(var e=0,f=d.length;ea.c)&&Vm(b,a.c);if(b>=a.c>>1){d=a.b;for(c=a.c;c>b;--c){d=d.c}}else{d=a.b.b;for(c=0;c-129&&a<128){b=a+128;c=(Rk(),Qk)[b];!c&&(c=Qk[b]=Kk(new Gk,a));return c}return Kk(new Gk,a)}
+function lk(){if($wnd.XMLHttpRequest){return new XMLHttpRequest}else{try{return new ActiveXObject(Gr)}catch(a){return new ActiveXObject(Hr)}}}
+function xc(b,c){var a,e,f,g,h,i;h=Nn(new Kn);while(qc(b.b.f)>0){On(h,lg(Bo(b.b.g),2));pc(b.b.f)}nc(b.b.f);Qn(h,Fl(b.b.b));Ll(b.b.b);i=null;for(g=$m(new Xm,h);g.b1){return}if(qc(a.e)>0){c=oc(a.e);ec(c==a.d?Cr:Dr+c,zr,Ok(c),null);Jc(c,wc(new uc,a));return}while(qc(a.f)>0){c=pc(a.f);b=lg(Bo(a.g),2);ec(c==a.d?Cr:Dr+c,zr,Ok(c),null);Jc(c,b)}}
+var Ir="Can't get element ",Fr='GET',Gr='MSXML2.XMLHTTP.3.0',Hr='Microsoft.XMLHTTP',zr='begin',Dr='download',Ar='end',Cr='leftoversDownload',Er='runAsync';_=Xb.prototype=new O;_.tI=0;_.c=null;_.d=0;_.e=null;_.f=null;var Yb;_=ic.prototype=new O;_.tI=0;_.b=null;_.c=0;_.d=0;_=rc.prototype=new mb;_.tI=7;_=uc.prototype=new O;_.i=yc;_.tI=8;_.b=null;_=Kc.prototype=new O;_.j=Nc;_.tI=0;_.b=null;_.c=null;_=Hk.prototype=new O;_.tI=27;_=Gk.prototype=new Hk;_.eQ=Lk;_.hC=Mk;_.w=Nk;_.tI=30;_.b=0;var Qk;_=tn.prototype=new ul;_.y=xn;_.s=yn;_.z=zn;_.tI=0;_.b=null;_.c=null;_=An.prototype=new O;_.u=Dn;_.v=En;_.tI=0;_.b=null;_=Fn.prototype=new Nm;_.F=Hn;_.G=In;_.s=Jn;_.tI=41;_=vo.prototype=new Fn;_.x=Eo;_.z=Fo;_.tI=45;_.b=null;_.c=0;_=Go.prototype=new O;_.u=No;_.v=Oo;_.tI=0;_.b=0;_.c=null;_.d=null;_.e=null;_=Po.prototype=new O;_.tI=0;_.b=null;_.c=null;_.d=null;var yg=new rk,Ag=new rk;hc();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/0AB3C6DF30C08F43EAA999A9F920C30B/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/0AB3C6DF30C08F43EAA999A9F920C30B/1.cache.js
new file mode 100644
index 00000000..6ce711bd
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/0AB3C6DF30C08F43EAA999A9F920C30B/1.cache.js
@@ -0,0 +1,7 @@
+function qT(){}
+function CT(){return UP}
+function GT(){var a;while(vT){a=vT;vT=vT.b;!vT&&(wT=null);Yv(a.a.a)}}
+function xv(a,b){bcb(a.e,b);if(!a.d){a.d=true;yv(a)}a.b=false;zv(a)}
+function Yv(a){var b;a.a.a=a.a.b.blob;(Dv(),Cv).captureBlob(a.a.a,a.a.e,Mtb);b=__(new Y_,a.a.e);a.a.c.rb(b);xv(a.a.i,a.a)}
+function DT(){yT=true;xT=(AT(),new qT);My((Jy(),Iy),1);!!$stats&&$stats(qz(Ntb,akb,null,null));xT.Zb();!!$stats&&$stats(qz(Ntb,Otb,null,null))}
+var Ptb='AsyncLoader1',Mtb='image/JPEG',Ntb='runCallbacks1';_=qT.prototype=new rT;_.gC=CT;_.Zb=GT;_.tI=0;var UP=B5(urb,Ptb);DT();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/0AB3C6DF30C08F43EAA999A9F920C30B/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/0AB3C6DF30C08F43EAA999A9F920C30B/2.cache.js
new file mode 100644
index 00000000..1278fc96
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/0AB3C6DF30C08F43EAA999A9F920C30B/2.cache.js
@@ -0,0 +1,6 @@
+function OT(){}
+function $T(){return YP}
+function cU(){var a;while(TT){a=TT;TT=TT.b;!TT&&(UT=null);so(a.a)}}
+function _T(){WT=true;VT=(YT(),new OT);My((Jy(),Iy),2);!!$stats&&$stats(qz(Rtb,akb,null,null));VT.Zb();!!$stats&&$stats(qz(Rtb,Otb,null,null))}
+function so(a){var b,c,d,e,f;e=($wnd.google&&$wnd.google.gears&&$wnd.google.gears.factory).create(Qtb);e.decode(a.a);d=e.width;c=e.height;f=d/a.b.b;b=c/a.b.a;if(f>b){if(f>1){e.resize(a.b.b,~~Math.max(Math.min(c/f,2147483647),-2147483648));Jv(a.c,e.encode());return}Jv(a.c,a.a)}else{if(b>1){e.resize(~~Math.max(Math.min(d/b,2147483647),-2147483648),a.b.a);Jv(a.c,e.encode());return}Jv(a.c,a.a)}}
+var Stb='AsyncLoader2',Qtb='beta.canvas',Rtb='runCallbacks2';_=OT.prototype=new PT;_.gC=$T;_.Zb=cU;_.tI=0;var YP=B5(urb,Stb);_T();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/0AB3C6DF30C08F43EAA999A9F920C30B/3.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/0AB3C6DF30C08F43EAA999A9F920C30B/3.cache.js
new file mode 100644
index 00000000..ba08400e
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/0AB3C6DF30C08F43EAA999A9F920C30B/3.cache.js
@@ -0,0 +1,35 @@
+function po(){}
+function Lv(){}
+function Qv(){}
+function ST(){}
+function PT(){}
+function dU(){}
+function hU(){}
+function Uy(){Py(Iy)}
+function to(){return ON}
+function Pv(){return CO}
+function Uv(){return DO}
+function RT(){return XP}
+function fU(){return VP}
+function jU(){return WP}
+function Py(a){My(a,a.d)}
+function Nv(a,b){a.a=b;return a}
+function Sv(a,b){a.a=b;return a}
+function YT(){YT=Ycb;VT=new PT}
+function gU(a){YT();XT=false;bU(a)}
+function $I(a,b){if(!a){return}Tv(a,b)}
+function vv(a,b){L8(a.f.a,b)!=null;zv(a);yv(a);dt(a.a.d)}
+function Iv(a){if(a.h.c){(DB(),a.d.H).innerText=Ttb;aU(ro(new po,a.a,a))}else{Jv(a,a.a)}}
+function mw(a,b,c){var d;d=g3(a.f,b);Os(a,c,a.H,d,true);Ps(a,b)}
+function bJ(c,b){c.onprogress=function(a){cJ(b,a)}}
+function yv(a){var b;if(a.e.b>0){b=JM(dcb(a.e),37);Iv(b)}else{a.d=false}}
+function cJ(a,b){var c;if(!a){return}c=b.loaded/b.total;a.a.g.a.ab(WM(Math.floor(c*100))+$tb)}
+function bU(a){YT();while(TT){Vo();Uq(br(new sp,_tb+Fh(a)));TT=TT.b}UT=null}
+function ro(a,b,c){a.a=b;a.c=c;a.b=c.h;return a}
+function My(a,b){var c;c=b==a.d?$jb:_jb+b;Ry(c,Otb,A6(b),null);if(Oy(a,b)){bz(a.e);L8(a.a,A6(b));Ty(a)}}
+function Yk(a,b,c){var d,e;L8(a.a.a,b)!=null;e=c.Xb();if(e){d=zt(new ot,a,e,a.b);H8(a.f,A6(d.c),d);Rab(a.g,d);a.l.a==a&&mw(a.l,b,d)}else{a.l.a==a&&Ps(a.l,b)}}
+function aU(a){YT();var b;b=new hU;b.a=a;!!UT&&(UT.b=b);UT=b;!TT&&(TT=b);if(WT){VT.Zb();return}if(!XT){XT=true;Ny((Jy(),Iy),2,new dU)}}
+function Jv(a,b){var c;(DB(),a.d.H).innerText=Utb;c=AI().create(Vtb);c.open(zkb,(Vo(),Qo)+a.f.d+Wtb+a.e+Vgb+Uo);bJ(c.upload,Nv(new Lv,a));ZI(c,Sv(new Qv,a));c.send(b)}
+function Tv(b,c){var a,e,f;if(c.status!=200){(DB(),b.a.d.H).innerText=Xtb;jk(b.a.$(),Ytb,true)}(Dv(),Cv).remove(b.a.e);if(c.status==200){try{f=XL(c.responseText);vv(b.a.i,b.a);Yk(b.a.f,b.a,f);return}catch(a){a=PS(a);if(MM(a,23)){e=a;Vo();Uq(br(new sp,Ztb+Fh(e)+hfb+c.responseText))}else throw a}}L8(b.a.f.a.a,b.a)!=null;vv(b.a.i,b.a)}
+function ZI(c,a){var b=c;c.onreadystatechange=function(){if(b.readyState==4){$I(a,b);b.onreadystatechange=null;b.onprogress=null;b.upload.onprogress=null}}}
+var $tb='%',Wtb='?filename=',eub='AsyncLoader2$1',fub='AsyncLoader2__Callback',dub='AsyncLoader2__Super',aub='AsyncResizer',_tb='Error Resizing image\n',Ztb='Exception on Upload\n',Ttb='Resizing..',Xtb='Upload Error',bub='UploadFile$1',cub='UploadFile$2',Utb='Uploading..',Vtb='beta.httprequest',Otb='end',Ytb='upload-error';_=po.prototype=new Pf;_.gC=to;_.tI=0;_.a=null;_.b=null;_.c=null;_=Lv.prototype=new Pf;_.gC=Pv;_.tI=0;_.a=null;_=Qv.prototype=new Pf;_.gC=Uv;_.tI=0;_.a=null;_=PT.prototype=new Pf;_.gC=RT;_.Zb=ST;_.tI=0;var TT=null,UT=null,VT,WT=false,XT=false;_=dU.prototype=new Pf;_.gC=fU;_.Mb=gU;_.tI=89;_=hU.prototype=new Pf;_.gC=jU;_.tI=0;_.a=null;_.b=null;var ON=B5(yob,aub),CO=B5(yob,bub),DO=B5(yob,cub),XP=B5(urb,dub),VP=B5(urb,eub),WP=B5(urb,fub);Uy();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/2625E6CD0659684104018A069A188996/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/2625E6CD0659684104018A069A188996/1.cache.js
deleted file mode 100644
index a0015130..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/2625E6CD0659684104018A069A188996/1.cache.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function _R(){}
-function lS(){return OO}
-function pS(){var a;while(eS){a=eS;eS=eS.c;!eS&&(fS=null);jo(a.b)}}
-function mS(){hS=true;gS=(jS(),new _R);cy((_x(),$x),1);!!$stats&&$stats(Iy(uqb,Bhb,null,null));gS.Zb();!!$stats&&$stats(Iy(uqb,vqb,null,null))}
-function jo(a){var b,c,d,e,f;e=($wnd.google&&$wnd.google.gears&&$wnd.google.gears.factory).create(tqb);e.decode(a.b);d=e.width;c=e.height;f=~~(d/a.c.c);b=~~(c/a.c.b);if(f>b){if(f>1){e.resize(a.c.c,~~(c/f));$u(a.d,e.encode())}}else{if(b>1){e.resize(~~(d/b),a.c.b);$u(a.d,e.encode())}}}
-var wqb='AsyncLoader1',tqb='beta.canvas',uqb='runCallbacks1';_=_R.prototype=new aS;_.gC=lS;_.Zb=pS;_.tI=0;var OO=e3(job,wqb);mS();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/2625E6CD0659684104018A069A188996/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/2625E6CD0659684104018A069A188996/2.cache.js
deleted file mode 100644
index 4b86a30d..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/2625E6CD0659684104018A069A188996/2.cache.js
+++ /dev/null
@@ -1,4 +0,0 @@
-function ky(){fy($x)}
-function fy(a){cy(a,a.e)}
-function cy(a,b){var c;c=b==a.e?zhb:Ahb+b;hy(c,vqb,d4(b),null);if(ey(a,b)){ty(a.f);n6(a.b,d4(b));jy(a)}}
-var vqb='end';ky();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/3295227D4A416F64C8B3061D11DFABA0/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/3295227D4A416F64C8B3061D11DFABA0/1.cache.js
new file mode 100644
index 00000000..c43d88a0
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/3295227D4A416F64C8B3061D11DFABA0/1.cache.js
@@ -0,0 +1,7 @@
+function PS(){}
+function _S(){return zP}
+function dT(){var a;while(US){a=US;US=US.c;!US&&(VS=null);Wv(a.b.b)}}
+function vv(a,b){vab(a.f,b);if(!a.e){a.e=true;wv(a)}a.c=false;xv(a)}
+function Wv(a){var b;a.b.b=a.b.c.blob;(Bv(),Av).captureBlob(a.b.b,a.b.f,prb);b=R$(new O$,a.b.f);a.b.d.sb(b);vv(a.b.j,a.b)}
+function aT(){XS=true;WS=(ZS(),new PS);Gy((Dy(),Cy),1);!!$stats&&$stats(kz(qrb,Bib,null,null));WS.$b();!!$stats&&$stats(kz(qrb,rrb,null,null))}
+var srb='AsyncLoader1',prb='image/JPEG',qrb='runCallbacks1';_=PS.prototype=new QS;_.gC=_S;_.$b=dT;_.tI=0;var zP=T3(gpb,srb);aT();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/3295227D4A416F64C8B3061D11DFABA0/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/3295227D4A416F64C8B3061D11DFABA0/2.cache.js
new file mode 100644
index 00000000..18c074c4
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/3295227D4A416F64C8B3061D11DFABA0/2.cache.js
@@ -0,0 +1,6 @@
+function lT(){}
+function xT(){return DP}
+function BT(){var a;while(qT){a=qT;qT=qT.c;!qT&&(rT=null);qo(a.b)}}
+function yT(){tT=true;sT=(vT(),new lT);Gy((Dy(),Cy),2);!!$stats&&$stats(kz(urb,Bib,null,null));sT.$b();!!$stats&&$stats(kz(urb,rrb,null,null))}
+function qo(a){var b,c,d,e,f;e=($wnd.google&&$wnd.google.gears&&$wnd.google.gears.factory).create(trb);e.decode(a.b);d=e.width;c=e.height;f=d/a.c.c;b=c/a.c.b;if(f>b){if(f>1){e.resize(a.c.c,~~Math.max(Math.min(c/f,2147483647),-2147483648));Hv(a.d,e.encode());return}Hv(a.d,a.b)}else{if(b>1){e.resize(~~Math.max(Math.min(d/b,2147483647),-2147483648),a.c.b);Hv(a.d,e.encode());return}Hv(a.d,a.b)}}
+var vrb='AsyncLoader2',trb='beta.canvas',urb='runCallbacks2';_=lT.prototype=new mT;_.gC=xT;_.$b=BT;_.tI=0;var DP=T3(gpb,vrb);yT();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/3295227D4A416F64C8B3061D11DFABA0/3.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/3295227D4A416F64C8B3061D11DFABA0/3.cache.js
new file mode 100644
index 00000000..bd1e277b
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/3295227D4A416F64C8B3061D11DFABA0/3.cache.js
@@ -0,0 +1,35 @@
+function no(){}
+function Jv(){}
+function Ov(){}
+function pT(){}
+function mT(){}
+function CT(){}
+function GT(){}
+function Oy(){Jy(Cy)}
+function ro(){return rN}
+function Nv(){return fO}
+function Sv(){return gO}
+function oT(){return CP}
+function ET(){return AP}
+function IT(){return BP}
+function Jy(a){Gy(a,a.e)}
+function Lv(a,b){a.b=b;return a}
+function Qv(a,b){a.b=b;return a}
+function vT(){vT=qbb;sT=new mT}
+function FT(a){vT();uT=false;AT(a)}
+function CI(a,b){if(!a){return}Rv(a,b)}
+function FI(c,b){c.onprogress=function(a){GI(b,a)}}
+function po(a,b,c){a.b=b;a.d=c;a.c=c.i;return a}
+function kw(a,b,c){var d;d=W1(a.g,b);Ms(a,c,a.I,d,true);Ns(a,b)}
+function tv(a,b){d7(a.g.b,b)!=null;xv(a);wv(a);bt(a.b.e)}
+function Gv(a){if(a.i.d){bC((GB(),a.e.I),wrb);zT(po(new no,a.b,a))}else{Hv(a,a.b)}}
+function wv(a){var b;if(a.f.c>0){b=lM(xab(a.f),37);Gv(b)}else{a.e=false}}
+function GI(a,b){var c;if(!a){return}c=b.loaded/b.total;a.b.h.b.bb(yM(Math.floor(c*100))+Drb)}
+function Gy(a,b){var c;c=b==a.e?zib:Aib+b;Ly(c,rrb,S4(b),null);if(Iy(a,b)){Xy(a.f);d7(a.b,S4(b));Ny(a)}}
+function Hv(a,b){var c;bC((GB(),a.e.I),xrb);c=cI().create(yrb);c.open(bjb,(To(),Oo)+a.g.e+zrb+a.f+sfb+So);FI(c.upload,Lv(new Jv,a));BI(c,Qv(new Ov,a));c.send(b)}
+function AT(a){vT();while(qT){To();Sq(_q(new qp,Erb+Ah(a)));qT=qT.c}rT=null}
+function zT(a){vT();var b;b=new GT;b.b=a;!!rT&&(rT.c=b);rT=b;!qT&&(qT=b);if(tT){sT.$b();return}if(!uT){uT=true;Hy((Dy(),Cy),2,new CT)}}
+function Wk(a,b,c){var d,e;d7(a.b.b,b)!=null;e=c.Yb();if(e){d=xt(new mt,a,e,a.c);_6(a.g,S4(d.d),d);j9(a.h,d);a.m.b==a&&kw(a.m,b,d)}else{a.m.b==a&&Ns(a.m,b)}}
+function Rv(b,c){var a,e,f;if(c.status!=200){bC((GB(),b.b.e.I),Arb);hk(b.b._(),Brb,true)}(Bv(),Av).remove(b.b.f);if(c.status==200){try{f=zL(c.responseText);tv(b.b.j,b.b);Wk(b.b.g,b.b,f);return}catch(a){a=mS(a);if(oM(a,23)){e=a;To();Sq(_q(new qp,Crb+Ah(e)+Idb+c.responseText))}else throw a}}d7(b.b.g.b.b,b.b)!=null;tv(b.b.j,b.b)}
+function BI(c,a){var b=c;c.onreadystatechange=function(){if(b.readyState==4){CI(a,b);b.onreadystatechange=null;b.onprogress=null;b.upload.onprogress=null}}}
+var Drb='%',zrb='?filename=',Jrb='AsyncLoader2$1',Krb='AsyncLoader2__Callback',Irb='AsyncLoader2__Super',Frb='AsyncResizer',Erb='Error Resizing image\n',Crb='Exception on Upload\n',wrb='Resizing..',Arb='Upload Error',Grb='UploadFile$1',Hrb='UploadFile$2',xrb='Uploading..',yrb='beta.httprequest',rrb='end',Brb='upload-error';_=no.prototype=new Kf;_.gC=ro;_.tI=0;_.b=null;_.c=null;_.d=null;_=Jv.prototype=new Kf;_.gC=Nv;_.tI=0;_.b=null;_=Ov.prototype=new Kf;_.gC=Sv;_.tI=0;_.b=null;_=mT.prototype=new Kf;_.gC=oT;_.$b=pT;_.tI=0;var qT=null,rT=null,sT,tT=false,uT=false;_=CT.prototype=new Kf;_.gC=ET;_.Nb=FT;_.tI=89;_=GT.prototype=new Kf;_.gC=IT;_.tI=0;_.b=null;_.c=null;var rN=T3(imb,Frb),fO=T3(imb,Grb),gO=T3(imb,Hrb),CP=T3(gpb,Irb),AP=T3(gpb,Jrb),BP=T3(gpb,Krb);Oy();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/36CF5446615AAE9D0FDDA0B123643155/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/36CF5446615AAE9D0FDDA0B123643155/1.cache.js
deleted file mode 100644
index 8ac56017..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/36CF5446615AAE9D0FDDA0B123643155/1.cache.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function Yg(){}
-function Wg(){}
-function bh(){}
-function Vg(){}
-function $g(){$g=ep;Zg=new Wg}
-function ah(){Zg=($g(),new Vg);ac((Zb(),Yb),1);!!$stats&&$stats(Cc(mr,nr,null,null));Zg.m();!!$stats&&$stats(Cc(mr,or,null,null))}
-var mr='runCallbacks1';_=Wg.prototype=new O;_.m=Yg;_.tI=0;_=Vg.prototype=new Wg;_.m=bh;_.tI=0;var Zg;ah();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/36CF5446615AAE9D0FDDA0B123643155/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/36CF5446615AAE9D0FDDA0B123643155/2.cache.js
deleted file mode 100644
index 26150e15..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/36CF5446615AAE9D0FDDA0B123643155/2.cache.js
+++ /dev/null
@@ -1,75 +0,0 @@
-function Xb(){}
-function ic(){}
-function rc(){}
-function uc(){}
-function Kc(){}
-function xk(){}
-function wk(){}
-function jn(){}
-function qn(){}
-function vn(){}
-function mo(){}
-function xo(){}
-function Go(){}
-function hc(){cc(Yb)}
-function cc(a){ac(a,a.d)}
-function yc(a){xc(this,a)}
-function nc(a){a.c=0;a.d=0}
-function qc(a){return a.d-a.c}
-function Ck(){return this.b}
-function Dk(){return this.b}
-function wo(){return this.c}
-function Fo(){return Do(this)}
-function oc(a){return a.b[a.c]}
-function mc(a,b){a.b[a.d++]=b}
-function tc(a,b){Dd();return a}
-function wc(a,b){a.b=b;return a}
-function Ak(a,b){a.b=b;return a}
-function sn(a,b){a.b=b;return a}
-function pc(a){return a.b[a.c++]}
-function pn(){return this.c.b.e}
-function tn(){return Rm(this.b.b)}
-function nn(a){return Fl(this.b,a)}
-function Eo(){return this.c!=this.e.b}
-function An(){return ro(mg(this,24),0)}
-function Io(a){a.b=a.c=a;return a}
-function Mc(a,b,c){a.c=b;a.b=c;return a}
-function ln(a,b,c){a.b=b;a.c=c;return a}
-function lc(a,b){a.b=Yf(zg,0,-1,b,1);return a}
-function qo(a,b,c){Jo(new Go,b,c);++a.c}
-function Ao(a,b,c,d){a.e=d;a.c=c;a.b=b;return a}
-function Jo(a,b,c){a.d=b;a.b=c;a.c=c.c;c.c.b=a;c.c=a;return a}
-function oo(a){a.b=Io(new Go);a.c=0;return a}
-function uo(a){if(a.c==0){throw Zo(new Xo)}}
-function vo(a){return Jo(new Go,a,this.b),++this.c,true}
-function Zb(){Zb=ep;Yb=_b(new Xb,2,Zf(zg,0,-1,[]))}
-function Hk(){Hk=ep;Gk=Yf(Bg,0,12,256,0)}
-function un(){var a;a=mg(Sm(this.b.b),20).D();return a}
-function vl(a){var b;b=$l(new Ul,a);return ln(new jn,a,b)}
-function on(){var a;a=hm(new fm,this.c.b);return sn(new qn,a)}
-function yn(a,b){var c;c=ro(this,a);qo(c.e,b,c.c);++c.b;c.d=null}
-function so(a){var b;uo(a);--a.c;b=a.b.b;b.b.c=b.c;b.c.b=b.b;b.b=b.c=b;return b.d}
-function Bk(a){return a!=null&&kg(a.tI,12)&&mg(a,12).b==this.b}
-function ec(a,b,c,d){!!$stats&&$stats(Cc(a,b,c,d))}
-function Ic(b,c){function d(a){c.i(a)}
-return __gwtStartLoadingFragment(b,d)}
-function Fl(a,b){if(a.d&&Zn(a.c,b)){return true}else if(El(a,b)){return true}else if(Cl(a,b)){return true}return false}
-function Do(a){if(a.c==a.e.b){throw Zo(new Xo)}a.d=a.c;a.c=a.c.b;++a.b;return a.d.d}
-function _b(a,b,c){Zb();a.b=Yn(new Wn);a.g=oo(new mo);a.d=b;a.c=c;a.f=lc(new ic,b+1);return a}
-function Jc(a,b){var c,d;c=Ic(a,b);if(c==null){return}d=bk();d.open(sr,c,true);ak(d,Mc(new Kc,d,b));d.send(null)}
-function ac(a,b){var c;c=b==a.d?pr:qr+b;ec(c,or,Ek(b),null);if(bc(a,b)){pc(a.e);Pl(a.b,Ek(b));gc(a)}}
-function ro(a,b){var c,d;(b<0||b>a.c)&&Lm(b,a.c);if(b>=a.c>>1){d=a.b;for(c=a.c;c>b;--c){d=d.c}}else{d=a.b.b;for(c=0;c-129&&a<128){b=a+128;c=(Hk(),Gk)[b];!c&&(c=Gk[b]=Ak(new wk,a));return c}return Ak(new wk,a)}
-function Hn(a,b){if(b.c.b.e==0){return false}Array.prototype.splice.apply(a.b,[a.c,0].concat(nl(b,Yf(Cg,0,0,b.c.b.e,0))));a.c+=b.c.b.e;return true}
-function xc(b,c){var a,e,f,g,h,i;h=En(new Bn);while(qc(b.b.f)>0){Fn(h,mg(so(b.b.g),2));pc(b.b.f)}nc(b.b.f);Hn(h,vl(b.b.b));Bl(b.b.b);i=null;for(g=Qm(new Nm,h);g.b1){return}if(qc(a.e)>0){c=oc(a.e);ec(c==a.d?pr:qr+c,nr,Ek(c),null);Jc(c,wc(new uc,a));return}while(qc(a.f)>0){c=pc(a.f);b=mg(so(a.g),2);ec(c==a.d?pr:qr+c,nr,Ek(c),null);Jc(c,b)}}
-var vr="Can't get element ",sr='GET',tr='MSXML2.XMLHTTP.3.0',ur='Microsoft.XMLHTTP',nr='begin',qr='download',or='end',pr='leftoversDownload',rr='runAsync';_=Xb.prototype=new O;_.tI=0;_.c=null;_.d=0;_.e=null;_.f=null;var Yb;_=ic.prototype=new O;_.tI=0;_.b=null;_.c=0;_.d=0;_=rc.prototype=new mb;_.tI=7;_=uc.prototype=new O;_.i=yc;_.tI=8;_.b=null;_=Kc.prototype=new O;_.j=Nc;_.tI=0;_.b=null;_.c=null;_=xk.prototype=new O;_.tI=27;_=wk.prototype=new xk;_.eQ=Bk;_.hC=Ck;_.w=Dk;_.tI=30;_.b=0;var Gk;_=jn.prototype=new kl;_.y=nn;_.s=on;_.z=pn;_.tI=0;_.b=null;_.c=null;_=qn.prototype=new O;_.u=tn;_.v=un;_.tI=0;_.b=null;_=vn.prototype=new Dm;_.F=yn;_.G=zn;_.s=An;_.tI=41;_=mo.prototype=new vn;_.x=vo;_.z=wo;_.tI=45;_.b=null;_.c=0;_=xo.prototype=new O;_.u=Eo;_.v=Fo;_.tI=0;_.b=0;_.c=null;_.d=null;_.e=null;_=Go.prototype=new O;_.tI=0;_.b=null;_.c=null;_.d=null;var zg=new hk,Bg=new hk;hc();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/371B2293E0881C8A53FDA41CA333A843/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/371B2293E0881C8A53FDA41CA333A843/1.cache.js
new file mode 100644
index 00000000..537c3947
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/371B2293E0881C8A53FDA41CA333A843/1.cache.js
@@ -0,0 +1,7 @@
+function SS(){}
+function cT(){return BP}
+function gT(){var a;while(XS){a=XS;XS=XS.c;!XS&&(YS=null);Yv(a.b.b)}}
+function xv(a,b){Jab(a.f,b);if(!a.e){a.e=true;yv(a)}a.c=false;zv(a)}
+function Yv(a){var b;a.b.b=a.b.c.blob;(Dv(),Cv).captureBlob(a.b.b,a.b.f,Hrb);b=V$(new S$,a.b.f);a.b.d.sb(b);xv(a.b.j,a.b)}
+function dT(){$S=true;ZS=(aT(),new SS);Iy((Fy(),Ey),1);!!$stats&&$stats(mz(Irb,Pib,null,null));ZS.Zb();!!$stats&&$stats(mz(Irb,Jrb,null,null))}
+var Krb='AsyncLoader1',Hrb='image/JPEG',Irb='runCallbacks1';_=SS.prototype=new TS;_.gC=cT;_.Zb=gT;_.tI=0;var BP=g4(xpb,Krb);dT();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/371B2293E0881C8A53FDA41CA333A843/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/371B2293E0881C8A53FDA41CA333A843/2.cache.js
new file mode 100644
index 00000000..45b26939
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/371B2293E0881C8A53FDA41CA333A843/2.cache.js
@@ -0,0 +1,6 @@
+function oT(){}
+function AT(){return FP}
+function ET(){var a;while(tT){a=tT;tT=tT.c;!tT&&(uT=null);ro(a.b)}}
+function BT(){wT=true;vT=(yT(),new oT);Iy((Fy(),Ey),2);!!$stats&&$stats(mz(Mrb,Pib,null,null));vT.Zb();!!$stats&&$stats(mz(Mrb,Jrb,null,null))}
+function ro(a){var b,c,d,e,f;e=($wnd.google&&$wnd.google.gears&&$wnd.google.gears.factory).create(Lrb);e.decode(a.b);d=e.width;c=e.height;f=d/a.c.c;b=c/a.c.b;if(f>b){if(f>1){e.resize(a.c.c,~~Math.max(Math.min(c/f,2147483647),-2147483648));Jv(a.d,e.encode());return}Jv(a.d,a.b)}else{if(b>1){e.resize(~~Math.max(Math.min(d/b,2147483647),-2147483648),a.c.b);Jv(a.d,e.encode());return}Jv(a.d,a.b)}}
+var Nrb='AsyncLoader2',Lrb='beta.canvas',Mrb='runCallbacks2';_=oT.prototype=new pT;_.gC=AT;_.Zb=ET;_.tI=0;var FP=g4(xpb,Nrb);BT();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/371B2293E0881C8A53FDA41CA333A843/3.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/371B2293E0881C8A53FDA41CA333A843/3.cache.js
new file mode 100644
index 00000000..32d9894a
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/371B2293E0881C8A53FDA41CA333A843/3.cache.js
@@ -0,0 +1,35 @@
+function oo(){}
+function Lv(){}
+function Qv(){}
+function sT(){}
+function pT(){}
+function FT(){}
+function JT(){}
+function Qy(){Ly(Ey)}
+function so(){return tN}
+function Pv(){return hO}
+function Uv(){return iO}
+function rT(){return EP}
+function HT(){return CP}
+function LT(){return DP}
+function Ly(a){Iy(a,a.e)}
+function Nv(a,b){a.b=b;return a}
+function Sv(a,b){a.b=b;return a}
+function yT(){yT=Ebb;vT=new pT}
+function IT(a){yT();xT=false;DT(a)}
+function EI(a,b){if(!a){return}Tv(a,b)}
+function vv(a,b){r7(a.g.b,b)!=null;zv(a);yv(a);dt(a.b.e)}
+function Iv(a){if(a.i.d){(DB(),a.e.I).textContent=Orb;CT(qo(new oo,a.b,a))}else{Jv(a,a.b)}}
+function mw(a,b,c){var d;d=$1(a.g,b);Os(a,c,a.I,d,true);Ps(a,b)}
+function HI(c,b){c.onprogress=function(a){II(b,a)}}
+function qo(a,b,c){a.b=b;a.d=c;a.c=c.i;return a}
+function DT(a){yT();while(tT){Uo();Uq(br(new rp,Wrb+Bh(a)));tT=tT.c}uT=null}
+function II(a,b){var c;if(!a){return}c=b.loaded/b.total;a.b.h.b.bb(AM(Math.floor(c*100))+Vrb)}
+function Iy(a,b){var c;c=b==a.e?Nib:Oib+b;Ny(c,Jrb,f5(b),null);if(Ky(a,b)){Zy(a.f);r7(a.b,f5(b));Py(a)}}
+function yv(a){var b;if(a.f.c>0){b=nM(Lab(a.f),37);Iv(b)}else{a.e=false}}
+function CT(a){yT();var b;b=new JT;b.b=a;!!uT&&(uT.c=b);uT=b;!tT&&(tT=b);if(wT){vT.Zb();return}if(!xT){xT=true;Jy((Fy(),Ey),2,new FT)}}
+function Xk(a,b,c){var d,e;r7(a.b.b,b)!=null;e=c.Xb();if(e){d=zt(new ot,a,e,a.c);n7(a.g,f5(d.d),d);x9(a.h,d);a.m.b==a&&mw(a.m,b,d)}else{a.m.b==a&&Ps(a.m,b)}}
+function Tv(b,c){var a,e,f;if(c.status!=200){(DB(),b.b.e.I).textContent=Srb;ik(b.b._(),Trb,true)}(Dv(),Cv).remove(b.b.f);if(c.status==200){try{f=BL(c.responseText);vv(b.b.j,b.b);Xk(b.b.g,b.b,f);return}catch(a){a=pS(a);if(qM(a,23)){e=a;Uo();Uq(br(new rp,Urb+Bh(e)+Wdb+c.responseText))}else throw a}}r7(b.b.g.b.b,b.b)!=null;vv(b.b.j,b.b)}
+function DI(c,a){var b=c;c.onreadystatechange=function(){if(b.readyState==4){EI(a,b);b.onreadystatechange=null;b.onprogress=null;b.upload.onprogress=null}}}
+function Jv(a,b){var c;(DB(),a.e.I).textContent=Prb;c=eI().create(Qrb);c.open(pjb,(Uo(),Po)+a.g.e+Rrb+a.f+Gfb+To);HI(c.upload,Nv(new Lv,a));DI(c,Sv(new Qv,a));c.send(b)}
+var Vrb='%',Rrb='?filename=',_rb='AsyncLoader2$1',asb='AsyncLoader2__Callback',$rb='AsyncLoader2__Super',Xrb='AsyncResizer',Wrb='Error Resizing image\n',Urb='Exception on Upload\n',Orb='Resizing..',Srb='Upload Error',Yrb='UploadFile$1',Zrb='UploadFile$2',Prb='Uploading..',Qrb='beta.httprequest',Jrb='end',Trb='upload-error';_=oo.prototype=new Lf;_.gC=so;_.tI=0;_.b=null;_.c=null;_.d=null;_=Lv.prototype=new Lf;_.gC=Pv;_.tI=0;_.b=null;_=Qv.prototype=new Lf;_.gC=Uv;_.tI=0;_.b=null;_=pT.prototype=new Lf;_.gC=rT;_.Zb=sT;_.tI=0;var tT=null,uT=null,vT,wT=false,xT=false;_=FT.prototype=new Lf;_.gC=HT;_.Nb=IT;_.tI=89;_=JT.prototype=new Lf;_.gC=LT;_.tI=0;_.b=null;_.c=null;var tN=g4(zmb,Xrb),hO=g4(zmb,Yrb),iO=g4(zmb,Zrb),EP=g4(xpb,$rb),CP=g4(xpb,_rb),DP=g4(xpb,asb);Qy();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/373CE923F09A0C2270E1B0F2D934E253/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/373CE923F09A0C2270E1B0F2D934E253/1.cache.js
deleted file mode 100644
index 6625256a..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/373CE923F09A0C2270E1B0F2D934E253/1.cache.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function jh(){}
-function hh(){}
-function oh(){}
-function gh(){}
-function lh(){lh=sp;kh=new hh}
-function nh(){kh=(lh(),new gh);ac((Zb(),Yb),1);!!$stats&&$stats(Cc(Dr,Er,null,null));kh.q();!!$stats&&$stats(Cc(Dr,Fr,null,null))}
-var Dr='runCallbacks1';_=hh.prototype=new O;_.q=jh;_.tI=0;_=gh.prototype=new hh;_.q=oh;_.tI=0;var kh;nh();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/373CE923F09A0C2270E1B0F2D934E253/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/373CE923F09A0C2270E1B0F2D934E253/2.cache.js
deleted file mode 100644
index 4cd6961e..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/373CE923F09A0C2270E1B0F2D934E253/2.cache.js
+++ /dev/null
@@ -1,75 +0,0 @@
-function Xb(){}
-function ic(){}
-function rc(){}
-function uc(){}
-function Kc(){}
-function Ik(){}
-function Hk(){}
-function xn(){}
-function En(){}
-function Jn(){}
-function Ao(){}
-function Lo(){}
-function Uo(){}
-function hc(){cc(Yb)}
-function cc(a){ac(a,a.d)}
-function yc(a){xc(this,a)}
-function nc(a){a.c=0;a.d=0}
-function qc(a){return a.d-a.c}
-function Nk(){return this.b}
-function Ok(){return this.b}
-function Ko(){return this.c}
-function To(){return Ro(this)}
-function oc(a){return a.b[a.c]}
-function mc(a,b){a.b[a.d++]=b}
-function tc(a,b){Ed();return a}
-function wc(a,b){a.b=b;return a}
-function Lk(a,b){a.b=b;return a}
-function Gn(a,b){a.b=b;return a}
-function pc(a){return a.b[a.c++]}
-function Dn(){return this.c.b.e}
-function Hn(){return dn(this.b.b)}
-function Bn(a){return Tl(this.b,a)}
-function So(){return this.c!=this.e.b}
-function On(){return Fo(yg(this,24),0)}
-function Wo(a){a.b=a.c=a;return a}
-function Mc(a,b,c){a.c=b;a.b=c;return a}
-function zn(a,b,c){a.b=b;a.c=c;return a}
-function Jo(a){return Xo(new Uo,a,this.b),++this.c,true}
-function Io(a){if(a.c==0){throw lp(new jp)}}
-function Co(a){a.b=Wo(new Uo);a.c=0;return a}
-function Eo(a,b,c){Xo(new Uo,b,c);++a.c}
-function Oo(a,b,c,d){a.e=d;a.c=c;a.b=b;return a}
-function Xo(a,b,c){a.d=b;a.b=c;a.c=c.c;c.c.b=a;c.c=a;return a}
-function lc(a,b){a.b=ig(Mg,0,-1,b,1);return a}
-function Sk(){Sk=sp;Rk=ig(Og,0,12,256,0)}
-function In(){var a;a=yg(en(this.b.b),20).H();return a}
-function Cn(){var a;a=vm(new tm,this.c.b);return Gn(new En,a)}
-function Jl(a){var b;b=mm(new gm,a);return zn(new xn,a,b)}
-function Zb(){Zb=sp;Yb=_b(new Xb,2,jg(Mg,0,-1,[]))}
-function ec(a,b,c,d){!!$stats&&$stats(Cc(a,b,c,d))}
-function Ic(b,c){function d(a){c.i(a)}
-return __gwtStartLoadingFragment(b,d)}
-function Mn(a,b){var c;c=Fo(this,a);Eo(c.e,b,c.c);++c.b;c.d=null}
-function Go(a){var b;Io(a);--a.c;b=a.b.b;b.b.c=b.c;b.c.b=b.b;b.b=b.c=b;return b.d}
-function lk(c,a){var b=c;c.onreadystatechange=$entry(function(){a.j(b)})}
-function fk(b){var a=b;$wnd.setTimeout(function(){a.onreadystatechange=new Function},0)}
-function Nn(b){var a,d;d=Fo(this,b);try{return Ro(d)}catch(a){a=Yg(a);if(Bg(a,23)){throw Gk(new Dk,Mr+b)}else throw a}}
-function Ro(a){if(a.c==a.e.b){throw lp(new jp)}a.d=a.c;a.c=a.c.b;++a.b;return a.d.d}
-function _b(a,b,c){Zb();a.b=lo(new jo);a.g=Co(new Ao);a.d=b;a.c=c;a.f=lc(new ic,b+1);return a}
-function Tl(a,b){if(a.d&&mo(a.c,b)){return true}else if(Sl(a,b)){return true}else if(Ql(a,b)){return true}return false}
-function ac(a,b){var c;c=b==a.d?Gr:Hr+b;ec(c,Fr,Pk(b),null);if(bc(a,b)){pc(a.e);bm(a.b,Pk(b));gc(a)}}
-function Jc(a,b){var c,d;c=Ic(a,b);if(c==null){return}d=mk();d.open(Jr,c,true);lk(d,Mc(new Kc,d,b));d.send(null)}
-function bc(a,b){var c,d,e,f;if(b==a.d){return true}for(d=a.c,e=0,f=d.length;e-129&&a<128){b=a+128;c=(Sk(),Rk)[b];!c&&(c=Rk[b]=Lk(new Hk,a));return c}return Lk(new Hk,a)}
-function Sl(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=b[c];if(e.F(a,d)){return true}}}return false}
-function Ql(i,a){var b=i.b;for(var c in b){if(c==parseInt(c)){var d=b[c];for(var e=0,f=d.length;e0){Tn(h,yg(Go(b.b.g),2));pc(b.b.f)}nc(b.b.f);Vn(h,Jl(b.b.b));Pl(b.b.b);i=null;for(g=cn(new _m,h);g.b1){return}if(qc(a.e)>0){c=oc(a.e);ec(c==a.d?Gr:Hr+c,Er,Pk(c),null);Jc(c,wc(new uc,a));return}while(qc(a.f)>0){c=pc(a.f);b=yg(Go(a.g),2);ec(c==a.d?Gr:Hr+c,Er,Pk(c),null);Jc(c,b)}}
-function Fo(a,b){var c,d;(b<0||b>a.c)&&Zm(b,a.c);if(b>=a.c>>1){d=a.b;for(c=a.c;c>b;--c){d=d.c}}else{d=a.b.b;for(c=0;c-129&&a<128){b=a+128;c=(_k(),$k)[b];!c&&(c=$k[b]=Uk(new Qk,a));return c}return Uk(new Qk,a)}
+function _l(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=b[c];if(e.F(a,d)){return true}}}return false}
+function Zl(i,a){var b=i.b;for(var c in b){if(c==parseInt(c)){var d=b[c];for(var e=0,f=d.length;e0){_n(h,yg(Oo(b.b.g),2));pc(b.b.f)}nc(b.b.f);bo(h,Sl(b.b.b));Yl(b.b.b);i=null;for(g=mn(new jn,h);g.b1){return}if(qc(a.e)>0){c=oc(a.e);ec(c==a.d?Pr:Qr+c,Mr,Yk(c),null);Jc(c,wc(new uc,a));return}while(qc(a.f)>0){c=pc(a.f);b=yg(Oo(a.g),2);ec(c==a.d?Pr:Qr+c,Mr,Yk(c),null);Jc(c,b)}}
+function No(a,b){var c,d;(b<0||b>a.c)&&gn(b,a.c);if(b>=a.c>>1){d=a.b;for(c=a.c;c>b;--c){d=d.c}}else{d=a.b.b;for(c=0;cb){if(f>1){e.resize(a.b.b,~~(c/f));Yu(a.c,e.encode())}}else{if(b>1){e.resize(~~(d/b),a.b.a);Yu(a.c,e.encode())}}}
-var grb='AsyncLoader1',drb='beta.canvas',erb='runCallbacks1';_=hS.prototype=new iS;_.gC=tS;_.Zb=xS;_.tI=0;var RO=K3(Pob,grb);uS();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/4FEE434A493BF0E4969DA18CF936A5FD/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/4FEE434A493BF0E4969DA18CF936A5FD/2.cache.js
deleted file mode 100644
index 6cb0eb93..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/4FEE434A493BF0E4969DA18CF936A5FD/2.cache.js
+++ /dev/null
@@ -1,4 +0,0 @@
-function ly(){gy(_x)}
-function gy(a){dy(a,a.d)}
-function dy(a,b){var c;c=b==a.d?Yhb:Zhb+b;iy(c,frb,J4(b),null);if(fy(a,b)){uy(a.e);S6(a.a,J4(b));ky(a)}}
-var frb='end';ly();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/5DDD50A96AC2DC41C6BF0EB870994C49/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/5DDD50A96AC2DC41C6BF0EB870994C49/1.cache.js
deleted file mode 100644
index dc57ad14..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/5DDD50A96AC2DC41C6BF0EB870994C49/1.cache.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function YR(){}
-function iS(){return MO}
-function mS(){var a;while(bS){a=bS;bS=bS.c;!bS&&(cS=null);io(a.b)}}
-function jS(){eS=true;dS=(gS(),new YR);ay((Zx(),Yx),1);!!$stats&&$stats(Gy(cqb,nhb,null,null));dS.$b();!!$stats&&$stats(Gy(cqb,dqb,null,null))}
-function io(a){var b,c,d,e,f;e=($wnd.google&&$wnd.google.gears&&$wnd.google.gears.factory).create(bqb);e.decode(a.b);d=e.width;c=e.height;f=~~(d/a.c.c);b=~~(c/a.c.b);if(f>b){if(f>1){e.resize(a.c.c,~~(c/f));Yu(a.d,e.encode())}}else{if(b>1){e.resize(~~(d/b),a.c.b);Yu(a.d,e.encode())}}}
-var eqb='AsyncLoader1',bqb='beta.canvas',cqb='runCallbacks1';_=YR.prototype=new ZR;_.gC=iS;_.$b=mS;_.tI=0;var MO=R2(Unb,eqb);jS();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/5DDD50A96AC2DC41C6BF0EB870994C49/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/5DDD50A96AC2DC41C6BF0EB870994C49/2.cache.js
deleted file mode 100644
index 304e5f17..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/5DDD50A96AC2DC41C6BF0EB870994C49/2.cache.js
+++ /dev/null
@@ -1,4 +0,0 @@
-function iy(){dy(Yx)}
-function dy(a){ay(a,a.e)}
-function ay(a,b){var c;c=b==a.e?lhb:mhb+b;fy(c,dqb,Q3(b),null);if(cy(a,b)){ry(a.f);_5(a.b,Q3(b));hy(a)}}
-var dqb='end';iy();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/6B11280F72B8881FCDF44A0B47F1E96A/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/6B11280F72B8881FCDF44A0B47F1E96A/1.cache.js
deleted file mode 100644
index 4629cb0b..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/6B11280F72B8881FCDF44A0B47F1E96A/1.cache.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function Xg(){}
-function Vg(){}
-function ah(){}
-function Ug(){}
-function Zg(){Zg=fp;Yg=new Vg}
-function _g(){Yg=(Zg(),new Ug);ac((Zb(),Yb),1);!!$stats&&$stats(Cc(qr,rr,null,null));Yg.m();!!$stats&&$stats(Cc(qr,sr,null,null))}
-var qr='runCallbacks1';_=Vg.prototype=new O;_.m=Xg;_.tI=0;_=Ug.prototype=new Vg;_.m=ah;_.tI=0;var Yg;_g();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/6B11280F72B8881FCDF44A0B47F1E96A/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/6B11280F72B8881FCDF44A0B47F1E96A/2.cache.js
deleted file mode 100644
index 4f19fa5f..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/6B11280F72B8881FCDF44A0B47F1E96A/2.cache.js
+++ /dev/null
@@ -1,75 +0,0 @@
-function Xb(){}
-function ic(){}
-function rc(){}
-function uc(){}
-function Kc(){}
-function yk(){}
-function xk(){}
-function kn(){}
-function rn(){}
-function wn(){}
-function no(){}
-function yo(){}
-function Ho(){}
-function hc(){cc(Yb)}
-function cc(a){ac(a,a.d)}
-function yc(a){xc(this,a)}
-function nc(a){a.c=0;a.d=0}
-function qc(a){return a.d-a.c}
-function Dk(){return this.b}
-function Ek(){return this.b}
-function xo(){return this.c}
-function Go(){return Eo(this)}
-function oc(a){return a.b[a.c]}
-function mc(a,b){a.b[a.d++]=b}
-function tc(a,b){Ed();return a}
-function wc(a,b){a.b=b;return a}
-function Bk(a,b){a.b=b;return a}
-function tn(a,b){a.b=b;return a}
-function pc(a){return a.b[a.c++]}
-function qn(){return this.c.b.e}
-function un(){return Sm(this.b.b)}
-function on(a){return Gl(this.b,a)}
-function Fo(){return this.c!=this.e.b}
-function Bn(){return so(lg(this,24),0)}
-function Jo(a){a.b=a.c=a;return a}
-function Mc(a,b,c){a.c=b;a.b=c;return a}
-function mn(a,b,c){a.b=b;a.c=c;return a}
-function wo(a){return Ko(new Ho,a,this.b),++this.c,true}
-function vo(a){if(a.c==0){throw $o(new Yo)}}
-function po(a){a.b=Jo(new Ho);a.c=0;return a}
-function ro(a,b,c){Ko(new Ho,b,c);++a.c}
-function Bo(a,b,c,d){a.e=d;a.c=c;a.b=b;return a}
-function Ko(a,b,c){a.d=b;a.b=c;a.c=c.c;c.c.b=a;c.c=a;return a}
-function lc(a,b){a.b=Xf(yg,0,-1,b,1);return a}
-function Ik(){Ik=fp;Hk=Xf(Ag,0,12,256,0)}
-function Zb(){Zb=fp;Yb=_b(new Xb,2,Yf(yg,0,-1,[]))}
-function wl(a){var b;b=_l(new Vl,a);return mn(new kn,a,b)}
-function vn(){var a;a=lg(Tm(this.b.b),20).D();return a}
-function pn(){var a;a=im(new gm,this.c.b);return tn(new rn,a)}
-function zn(a,b){var c;c=so(this,a);ro(c.e,b,c.c);++c.b;c.d=null}
-function to(a){var b;vo(a);--a.c;b=a.b.b;b.b.c=b.c;b.c.b=b.b;b.b=b.c=b;return b.d}
-function Ck(a){return a!=null&&jg(a.tI,12)&&lg(a,12).b==this.b}
-function ec(a,b,c,d){!!$stats&&$stats(Cc(a,b,c,d))}
-function Ic(b,c){function d(a){c.i(a)}
-return __gwtStartLoadingFragment(b,d)}
-function Gl(a,b){if(a.d&&$n(a.c,b)){return true}else if(Fl(a,b)){return true}else if(Dl(a,b)){return true}return false}
-function Eo(a){if(a.c==a.e.b){throw $o(new Yo)}a.d=a.c;a.c=a.c.b;++a.b;return a.d.d}
-function _b(a,b,c){Zb();a.b=Zn(new Xn);a.g=po(new no);a.d=b;a.c=c;a.f=lc(new ic,b+1);return a}
-function Xj(b){var a=b;$wnd.setTimeout(function(){a.onreadystatechange=new Function},0)}
-function bk(c,a){var b=c;c.onreadystatechange=$entry(function(){a.j(b)})}
-function Fl(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=b[c];if(e.B(a,d)){return true}}}return false}
-function Dl(i,a){var b=i.b;for(var c in b){if(c==parseInt(c)){var d=b[c];for(var e=0,f=d.length;ea.c)&&Mm(b,a.c);if(b>=a.c>>1){d=a.b;for(c=a.c;c>b;--c){d=d.c}}else{d=a.b.b;for(c=0;c-129&&a<128){b=a+128;c=(Ik(),Hk)[b];!c&&(c=Hk[b]=Bk(new xk,a));return c}return Bk(new xk,a)}
-function ck(){if($wnd.XMLHttpRequest){return new XMLHttpRequest}else{try{return new ActiveXObject(xr)}catch(a){return new ActiveXObject(yr)}}}
-function xc(b,c){var a,e,f,g,h,i;h=Fn(new Cn);while(qc(b.b.f)>0){Gn(h,lg(to(b.b.g),2));pc(b.b.f)}nc(b.b.f);In(h,wl(b.b.b));Cl(b.b.b);i=null;for(g=Rm(new Om,h);g.b1){return}if(qc(a.e)>0){c=oc(a.e);ec(c==a.d?tr:ur+c,rr,Fk(c),null);Jc(c,wc(new uc,a));return}while(qc(a.f)>0){c=pc(a.f);b=lg(to(a.g),2);ec(c==a.d?tr:ur+c,rr,Fk(c),null);Jc(c,b)}}
-var zr="Can't get element ",wr='GET',xr='MSXML2.XMLHTTP.3.0',yr='Microsoft.XMLHTTP',rr='begin',ur='download',sr='end',tr='leftoversDownload',vr='runAsync';_=Xb.prototype=new O;_.tI=0;_.c=null;_.d=0;_.e=null;_.f=null;var Yb;_=ic.prototype=new O;_.tI=0;_.b=null;_.c=0;_.d=0;_=rc.prototype=new mb;_.tI=7;_=uc.prototype=new O;_.i=yc;_.tI=8;_.b=null;_=Kc.prototype=new O;_.j=Nc;_.tI=0;_.b=null;_.c=null;_=yk.prototype=new O;_.tI=27;_=xk.prototype=new yk;_.eQ=Ck;_.hC=Dk;_.w=Ek;_.tI=30;_.b=0;var Hk;_=kn.prototype=new ll;_.y=on;_.s=pn;_.z=qn;_.tI=0;_.b=null;_.c=null;_=rn.prototype=new O;_.u=un;_.v=vn;_.tI=0;_.b=null;_=wn.prototype=new Em;_.F=zn;_.G=An;_.s=Bn;_.tI=41;_=no.prototype=new wn;_.x=wo;_.z=xo;_.tI=45;_.b=null;_.c=0;_=yo.prototype=new O;_.u=Fo;_.v=Go;_.tI=0;_.b=0;_.c=null;_.d=null;_.e=null;_=Ho.prototype=new O;_.tI=0;_.b=null;_.c=null;_.d=null;var yg=new ik,Ag=new ik;hc();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/826A0FAD0C07BC304C641864F5274BFC/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/826A0FAD0C07BC304C641864F5274BFC/1.cache.js
new file mode 100644
index 00000000..c16b2026
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/826A0FAD0C07BC304C641864F5274BFC/1.cache.js
@@ -0,0 +1,7 @@
+function qT(){}
+function CT(){return YP}
+function GT(){var a;while(vT){a=vT;vT=vT.c;!vT&&(wT=null);bw(a.b.b)}}
+function Cv(a,b){ubb(a.f,b);if(!a.e){a.e=true;Dv(a)}a.c=false;Ev(a)}
+function bw(a){var b;a.b.b=a.b.c.blob;(Iv(),Hv).captureBlob(a.b.b,a.b.f,usb);b=y_(new v_,a.b.f);a.b.d.sb(b);Cv(a.b.j,a.b)}
+function DT(){yT=true;xT=(AT(),new qT);Ny((Ky(),Jy),1);!!$stats&&$stats(rz(vsb,vjb,null,null));xT.cc();!!$stats&&$stats(rz(vsb,wsb,null,null))}
+var xsb='AsyncLoader1',usb='image/JPEG',vsb='runCallbacks1';_=qT.prototype=new rT;_.gC=CT;_.cc=GT;_.tI=0;var YP=T4(hqb,xsb);DT();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/826A0FAD0C07BC304C641864F5274BFC/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/826A0FAD0C07BC304C641864F5274BFC/2.cache.js
new file mode 100644
index 00000000..f52fd8b6
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/826A0FAD0C07BC304C641864F5274BFC/2.cache.js
@@ -0,0 +1,6 @@
+function OT(){}
+function $T(){return aQ}
+function cU(){var a;while(TT){a=TT;TT=TT.c;!TT&&(UT=null);xo(a.b)}}
+function _T(){WT=true;VT=(YT(),new OT);Ny((Ky(),Jy),2);!!$stats&&$stats(rz(zsb,vjb,null,null));VT.cc();!!$stats&&$stats(rz(zsb,wsb,null,null))}
+function xo(a){var b,c,d,e,f;e=($wnd.google&&$wnd.google.gears&&$wnd.google.gears.factory).create(ysb);e.decode(a.b);d=e.width;c=e.height;f=d/a.c.c;b=c/a.c.b;if(f>b){if(f>1){e.resize(a.c.c,~~Math.max(Math.min(c/f,2147483647),-2147483648));Ov(a.d,e.encode());return}Ov(a.d,a.b)}else{if(b>1){e.resize(~~Math.max(Math.min(d/b,2147483647),-2147483648),a.c.b);Ov(a.d,e.encode());return}Ov(a.d,a.b)}}
+var Asb='AsyncLoader2',ysb='beta.canvas',zsb='runCallbacks2';_=OT.prototype=new PT;_.gC=$T;_.cc=cU;_.tI=0;var aQ=T4(hqb,Asb);_T();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/826A0FAD0C07BC304C641864F5274BFC/3.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/826A0FAD0C07BC304C641864F5274BFC/3.cache.js
new file mode 100644
index 00000000..665e10df
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/826A0FAD0C07BC304C641864F5274BFC/3.cache.js
@@ -0,0 +1,35 @@
+function uo(){}
+function Qv(){}
+function Vv(){}
+function ST(){}
+function PT(){}
+function dU(){}
+function hU(){}
+function Vy(){Qy(Jy)}
+function yo(){return NN}
+function Uv(){return BO}
+function Zv(){return CO}
+function RT(){return _P}
+function fU(){return ZP}
+function jU(){return $P}
+function Qy(a){Ny(a,a.e)}
+function Sv(a,b){a.b=b;return a}
+function Xv(a,b){a.b=b;return a}
+function YT(){YT=pcb;VT=new PT}
+function gU(a){YT();XT=false;bU(a)}
+function YI(a,b){if(!a){return}Yv(a,b)}
+function _I(c,b){c.onprogress=function(a){aJ(b,a)}}
+function wo(a,b,c){a.b=b;a.d=c;a.c=c.i;return a}
+function rw(a,b,c){var d;d=D2(a.g,b);Ts(a,c,a.I,d,true);Us(a,b)}
+function Av(a,b){c8(a.g.b,b)!=null;Ev(a);Dv(a);it(a.b.e)}
+function Nv(a){if(a.i.d){uC((aC(),a.e.I),Bsb);aU(wo(new uo,a.b,a))}else{Ov(a,a.b)}}
+function Dv(a){var b;if(a.f.c>0){b=HM(wbb(a.f),37);Nv(b)}else{a.e=false}}
+function aJ(a,b){var c;if(!a){return}c=b.loaded/b.total;a.b.h.b.bb(UM(Math.floor(c*100))+Isb)}
+function Ny(a,b){var c;c=b==a.e?tjb:ujb+b;Sy(c,wsb,S5(b),null);if(Py(a,b)){cz(a.f);c8(a.b,S5(b));Uy(a)}}
+function Ov(a,b){var c;uC((aC(),a.e.I),Csb);c=yI().create(Dsb);c.open(_jb,($o(),Vo)+a.g.e+Esb+a.f+mgb+Zo);_I(c.upload,Sv(new Qv,a));XI(c,Xv(new Vv,a));c.send(b)}
+function bU(a){YT();while(TT){$o();Zq(gr(new xp,Jsb+Hh(a)));TT=TT.c}UT=null}
+function aU(a){YT();var b;b=new hU;b.b=a;!!UT&&(UT.c=b);UT=b;!TT&&(TT=b);if(WT){VT.cc();return}if(!XT){XT=true;Oy((Ky(),Jy),2,new dU)}}
+function bl(a,b,c){var d,e;c8(a.b.b,b)!=null;e=c.ac();if(e){d=Et(new tt,a,e,a.c);$7(a.g,S5(d.d),d);iab(a.h,d);a.m.b==a&&rw(a.m,b,d)}else{a.m.b==a&&Us(a.m,b)}}
+function Yv(b,c){var a,e,f;if(c.status!=200){uC((aC(),b.b.e.I),Fsb);ok(b.b._(),Gsb,true)}(Iv(),Hv).remove(b.b.f);if(c.status==200){try{f=VL(c.responseText);Av(b.b.j,b.b);bl(b.b.g,b.b,f);return}catch(a){a=PS(a);if(KM(a,23)){e=a;$o();Zq(gr(new xp,Hsb+Hh(e)+Ceb+c.responseText))}else throw a}}c8(b.b.g.b.b,b.b)!=null;Av(b.b.j,b.b)}
+function XI(c,a){var b=c;c.onreadystatechange=function(){if(b.readyState==4){YI(a,b);b.onreadystatechange=null;b.onprogress=null;b.upload.onprogress=null}}}
+var Isb='%',Esb='?filename=',Osb='AsyncLoader2$1',Psb='AsyncLoader2__Callback',Nsb='AsyncLoader2__Super',Ksb='AsyncResizer',Jsb='Error Resizing image\n',Hsb='Exception on Upload\n',Bsb='Resizing..',Fsb='Upload Error',Lsb='UploadFile$1',Msb='UploadFile$2',Csb='Uploading..',Dsb='beta.httprequest',wsb='end',Gsb='upload-error';_=uo.prototype=new Rf;_.gC=yo;_.tI=0;_.b=null;_.c=null;_.d=null;_=Qv.prototype=new Rf;_.gC=Uv;_.tI=0;_.b=null;_=Vv.prototype=new Rf;_.gC=Zv;_.tI=0;_.b=null;_=PT.prototype=new Rf;_.gC=RT;_.cc=ST;_.tI=0;var TT=null,UT=null,VT,WT=false,XT=false;_=dU.prototype=new Rf;_.gC=fU;_.Nb=gU;_.tI=89;_=hU.prototype=new Rf;_.gC=jU;_.tI=0;_.b=null;_.c=null;var NN=T4(gnb,Ksb),BO=T4(gnb,Lsb),CO=T4(gnb,Msb),_P=T4(hqb,Nsb),ZP=T4(hqb,Osb),$P=T4(hqb,Psb);Vy();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/8E9AF58E0E2BDFC35328028FC368ECD2/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/8E9AF58E0E2BDFC35328028FC368ECD2/1.cache.js
deleted file mode 100644
index c628482d..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/8E9AF58E0E2BDFC35328028FC368ECD2/1.cache.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function zS(){}
-function LS(){return fP}
-function PS(){var a;while(ES){a=ES;ES=ES.b;!ES&&(FS=null);ko(a.a)}}
-function MS(){HS=true;GS=(JS(),new zS);gy((dy(),cy),1);!!$stats&&$stats(My(zsb,Oib,null,null));GS.Zb();!!$stats&&$stats(My(zsb,Asb,null,null))}
-function ko(a){var b,c,d,e,f;e=($wnd.google&&$wnd.google.gears&&$wnd.google.gears.factory).create(ysb);e.decode(a.a);d=e.width;c=e.height;f=~~(d/a.b.b);b=~~(c/a.b.a);if(f>b){if(f>1){e.resize(a.b.b,~~(c/f));$u(a.c,e.encode())}}else{if(b>1){e.resize(~~(d/b),a.b.a);$u(a.c,e.encode())}}}
-var Bsb='AsyncLoader1',ysb='beta.canvas',zsb='runCallbacks1';_=zS.prototype=new AS;_.gC=LS;_.Zb=PS;_.tI=0;var fP=z4(gqb,Bsb);MS();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/8E9AF58E0E2BDFC35328028FC368ECD2/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/8E9AF58E0E2BDFC35328028FC368ECD2/2.cache.js
deleted file mode 100644
index 22bb2db7..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/8E9AF58E0E2BDFC35328028FC368ECD2/2.cache.js
+++ /dev/null
@@ -1,4 +0,0 @@
-function oy(){jy(cy)}
-function jy(a){gy(a,a.d)}
-function gy(a,b){var c;c=b==a.d?Mib:Nib+b;ly(c,Asb,y5(b),null);if(iy(a,b)){xy(a.e);H7(a.a,y5(b));ny(a)}}
-var Asb='end';oy();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/AE48EA5D8ECD3E90C23EBF393DC6958A/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/AE48EA5D8ECD3E90C23EBF393DC6958A/1.cache.js
new file mode 100644
index 00000000..61de748f
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/AE48EA5D8ECD3E90C23EBF393DC6958A/1.cache.js
@@ -0,0 +1,7 @@
+function jT(){}
+function vT(){return SP}
+function zT(){var a;while(oT){a=oT;oT=oT.c;!oT&&(pT=null);dw(a.b.b)}}
+function Ev(a,b){sbb(a.f,b);if(!a.e){a.e=true;Fv(a)}a.c=false;Gv(a)}
+function dw(a){var b;a.b.b=a.b.c.blob;(Kv(),Jv).captureBlob(a.b.b,a.b.f,vsb);b=q_(new n_,a.b.f);a.b.d.ub(b);Ev(a.b.j,a.b)}
+function wT(){rT=true;qT=(tT(),new jT);Py((My(),Ly),1);!!$stats&&$stats(tz(wsb,yjb,null,null));qT.ac();!!$stats&&$stats(tz(wsb,xsb,null,null))}
+var ysb='AsyncLoader1',vsb='image/JPEG',wsb='runCallbacks1';_=jT.prototype=new kT;_.gC=vT;_.ac=zT;_.tI=0;var SP=R4(jqb,ysb);wT();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/AE48EA5D8ECD3E90C23EBF393DC6958A/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/AE48EA5D8ECD3E90C23EBF393DC6958A/2.cache.js
new file mode 100644
index 00000000..f2b14993
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/AE48EA5D8ECD3E90C23EBF393DC6958A/2.cache.js
@@ -0,0 +1,6 @@
+function HT(){}
+function TT(){return WP}
+function XT(){var a;while(MT){a=MT;MT=MT.c;!MT&&(NT=null);yo(a.b)}}
+function UT(){PT=true;OT=(RT(),new HT);Py((My(),Ly),2);!!$stats&&$stats(tz(Asb,yjb,null,null));OT.ac();!!$stats&&$stats(tz(Asb,xsb,null,null))}
+function yo(a){var b,c,d,e,f;e=($wnd.google&&$wnd.google.gears&&$wnd.google.gears.factory).create(zsb);e.decode(a.b);d=e.width;c=e.height;f=d/a.c.c;b=c/a.c.b;if(f>b){if(f>1){e.resize(a.c.c,~~Math.max(Math.min(c/f,2147483647),-2147483648));Qv(a.d,e.encode());return}Qv(a.d,a.b)}else{if(b>1){e.resize(~~Math.max(Math.min(d/b,2147483647),-2147483648),a.c.b);Qv(a.d,e.encode());return}Qv(a.d,a.b)}}
+var Bsb='AsyncLoader2',zsb='beta.canvas',Asb='runCallbacks2';_=HT.prototype=new IT;_.gC=TT;_.ac=XT;_.tI=0;var WP=R4(jqb,Bsb);UT();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/AE48EA5D8ECD3E90C23EBF393DC6958A/3.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/AE48EA5D8ECD3E90C23EBF393DC6958A/3.cache.js
new file mode 100644
index 00000000..ccb77e46
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/AE48EA5D8ECD3E90C23EBF393DC6958A/3.cache.js
@@ -0,0 +1,35 @@
+function vo(){}
+function Sv(){}
+function Xv(){}
+function LT(){}
+function IT(){}
+function YT(){}
+function aU(){}
+function Xy(){Sy(Ly)}
+function zo(){return JN}
+function Wv(){return xO}
+function _v(){return yO}
+function KT(){return VP}
+function $T(){return TP}
+function cU(){return UP}
+function Sy(a){Py(a,a.e)}
+function Uv(a,b){a.b=b;return a}
+function Zv(a,b){a.b=b;return a}
+function RT(){RT=ncb;OT=new IT}
+function _T(a){RT();QT=false;WT(a)}
+function TI(a,b){if(!a){return}$v(a,b)}
+function Cv(a,b){a8(a.g.b,b)!=null;Gv(a);Fv(a);kt(a.b.e)}
+function Pv(a){if(a.i.d){HC((LB(),a.e.K),Csb);VT(xo(new vo,a.b,a))}else{Qv(a,a.b)}}
+function tw(a,b,c){var d;d=v2(a.g,b);Vs(a,c,a.K,d,true);Ws(a,b)}
+function WI(c,b){c.onprogress=function(a){XI(b,a)}}
+function xo(a,b,c){a.b=b;a.d=c;a.c=c.i;return a}
+function WT(a){RT();while(MT){_o();_q(ir(new yp,Ksb+Fh(a)));MT=MT.c}NT=null}
+function Fv(a){var b;if(a.f.c>0){b=CM(ubb(a.f),37);Pv(b)}else{a.e=false}}
+function Py(a,b){var c;c=b==a.e?wjb:xjb+b;Uy(c,xsb,Q5(b),null);if(Ry(a,b)){ez(a.f);a8(a.b,Q5(b));Wy(a)}}
+function XI(a,b){var c;if(!a){return}c=b.loaded/b.total;a.b.h.b.db(PM(Math.floor(c*100))+Jsb)}
+function SI(c,a){var b=c;c.onreadystatechange=function(){if(b.readyState==4){TI(a,b);b.onreadystatechange=null;b.onprogress=null;b.upload.onprogress=null}}}
+function $v(b,c){var a,e,f;if(c.status!=200){HC((LB(),b.b.e.K),Gsb);pk(b.b.bb(),Hsb,true)}(Kv(),Jv).remove(b.b.f);if(c.status==200){try{f=QL(c.responseText);Cv(b.b.j,b.b);cl(b.b.g,b.b,f);return}catch(a){a=IS(a);if(FM(a,23)){e=a;_o();_q(ir(new yp,Isb+Fh(e)+Feb+c.responseText))}else throw a}}a8(b.b.g.b.b,b.b)!=null;Cv(b.b.j,b.b)}
+function VT(a){RT();var b;b=new aU;b.b=a;!!NT&&(NT.c=b);NT=b;!MT&&(MT=b);if(PT){OT.ac();return}if(!QT){QT=true;Qy((My(),Ly),2,new YT)}}
+function cl(a,b,c){var d,e;a8(a.b.b,b)!=null;e=c.$b();if(e){d=Gt(new vt,a,e,a.c);Y7(a.g,Q5(d.d),d);gab(a.h,d);a.m.b==a&&tw(a.m,b,d)}else{a.m.b==a&&Ws(a.m,b)}}
+function Qv(a,b){var c;HC((LB(),a.e.K),Dsb);c=tI().create(Esb);c.open($jb,(_o(),Wo)+a.g.e+Fsb+a.f+pgb+$o);WI(c.upload,Uv(new Sv,a));SI(c,Zv(new Xv,a));c.send(b)}
+var Jsb='%',Fsb='?filename=',Psb='AsyncLoader2$1',Qsb='AsyncLoader2__Callback',Osb='AsyncLoader2__Super',Lsb='AsyncResizer',Ksb='Error Resizing image\n',Isb='Exception on Upload\n',Csb='Resizing..',Gsb='Upload Error',Msb='UploadFile$1',Nsb='UploadFile$2',Dsb='Uploading..',Esb='beta.httprequest',xsb='end',Hsb='upload-error';_=vo.prototype=new Pf;_.gC=zo;_.tI=0;_.b=null;_.c=null;_.d=null;_=Sv.prototype=new Pf;_.gC=Wv;_.tI=0;_.b=null;_=Xv.prototype=new Pf;_.gC=_v;_.tI=0;_.b=null;_=IT.prototype=new Pf;_.gC=KT;_.ac=LT;_.tI=0;var MT=null,NT=null,OT,PT=false,QT=false;_=YT.prototype=new Pf;_.gC=$T;_.Pb=_T;_.tI=89;_=aU.prototype=new Pf;_.gC=cU;_.tI=0;_.b=null;_.c=null;var JN=R4(knb,Lsb),xO=R4(knb,Msb),yO=R4(knb,Nsb),VP=R4(jqb,Osb),TP=R4(jqb,Psb),UP=R4(jqb,Qsb);Xy();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/B71911CF996F6E89D496C872F18EA45B/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/B71911CF996F6E89D496C872F18EA45B/1.cache.js
new file mode 100644
index 00000000..8e2f4644
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/B71911CF996F6E89D496C872F18EA45B/1.cache.js
@@ -0,0 +1,7 @@
+function Ug(){}
+function Sg(){}
+function Zg(){}
+function Rg(){}
+function Wg(){Wg=kp;Vg=new Sg}
+function Yg(){Vg=(Wg(),new Rg);ac((Zb(),Yb),1);!!$stats&&$stats(Cc(vr,wr,null,null));Vg.m();!!$stats&&$stats(Cc(vr,xr,null,null))}
+var vr='runCallbacks1';_=Sg.prototype=new O;_.m=Ug;_.tI=0;_=Rg.prototype=new Sg;_.m=Zg;_.tI=0;var Vg;Yg();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/B71911CF996F6E89D496C872F18EA45B/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/B71911CF996F6E89D496C872F18EA45B/2.cache.js
new file mode 100644
index 00000000..67eb0f99
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/B71911CF996F6E89D496C872F18EA45B/2.cache.js
@@ -0,0 +1,7 @@
+function bh(){}
+function _g(){}
+function gh(){}
+function $g(){}
+function dh(){dh=kp;ch=new _g}
+function fh(){ch=(dh(),new $g);ac((Zb(),Yb),2);!!$stats&&$stats(Cc(yr,wr,null,null));ch.m();!!$stats&&$stats(Cc(yr,xr,null,null))}
+var yr='runCallbacks2';_=_g.prototype=new O;_.m=bh;_.tI=0;_=$g.prototype=new _g;_.m=gh;_.tI=0;var ch;fh();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/B71911CF996F6E89D496C872F18EA45B/3.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/B71911CF996F6E89D496C872F18EA45B/3.cache.js
new file mode 100644
index 00000000..75ef7c04
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/B71911CF996F6E89D496C872F18EA45B/3.cache.js
@@ -0,0 +1,75 @@
+function Xb(){}
+function ic(){}
+function rc(){}
+function uc(){}
+function Kc(){}
+function Ek(){}
+function Dk(){}
+function qn(){}
+function xn(){}
+function Cn(){}
+function so(){}
+function Do(){}
+function Mo(){}
+function hc(){cc(Yb)}
+function cc(a){ac(a,a.d)}
+function yc(a){xc(this,a)}
+function nc(a){a.c=0;a.d=0}
+function qc(a){return a.d-a.c}
+function Jk(){return this.b}
+function Kk(){return this.b}
+function Co(){return this.c}
+function Lo(){return Jo(this)}
+function oc(a){return a.b[a.c]}
+function mc(a,b){a.b[a.d++]=b}
+function tc(a,b){Ed();return a}
+function wc(a,b){a.b=b;return a}
+function Hk(a,b){a.b=b;return a}
+function zn(a,b){a.b=b;return a}
+function Gn(){return xo(this,0)}
+function wn(){return this.c.b.e}
+function pc(a){return a.b[a.c++]}
+function An(){return Ym(this.b.b)}
+function un(a){return Ml(this.b,a)}
+function Ko(){return this.c!=this.e.b}
+function Oo(a){a.b=a.c=a;return a}
+function Mc(a,b,c){a.c=b;a.b=c;return a}
+function sn(a,b,c){a.b=b;a.c=c;return a}
+function Bo(a){return Po(new Mo,a,this.b),++this.c,true}
+function Ao(a){if(a.c==0){throw dp(new bp)}}
+function uo(a){a.b=Oo(new Mo);a.c=0;return a}
+function wo(a,b,c){Po(new Mo,b,c);++a.c}
+function Go(a,b,c,d){a.e=d;a.c=c;a.b=b;return a}
+function Po(a,b,c){a.d=b;a.b=c;a.c=c.c;c.c.b=a;c.c=a;return a}
+function lc(a,b){a.b=Uf(vg,0,-1,b,1);return a}
+function Ok(){Ok=kp;Nk=Uf(xg,0,12,256,0)}
+function Zb(){Zb=kp;Yb=_b(new Xb,3,Vf(vg,0,-1,[]))}
+function Cl(a){var b;b=fm(new _l,a);return sn(new qn,a,b)}
+function Bn(){var a;a=ig(Zm(this.b.b),20).D();return a}
+function vn(){var a;a=om(new mm,this.c.b);return zn(new xn,a)}
+function En(a,b){var c;c=xo(this,a);wo(c.e,b,c.c);++c.b;c.d=null}
+function yo(a){var b;Ao(a);--a.c;b=a.b.b;b.b.c=b.c;b.c.b=b.b;b.b=b.c=b;return b.d}
+function Ik(a){return a!=null&&gg(a.tI,12)&&ig(a,12).b==this.b}
+function ec(a,b,c,d){!!$stats&&$stats(Cc(a,b,c,d))}
+function Ic(b,c){function d(a){c.i(a)}
+return __gwtStartLoadingFragment(b,d)}
+function Ml(a,b){if(a.d&&eo(a.c,b)){return true}else if(Ll(a,b)){return true}else if(Jl(a,b)){return true}return false}
+function Jo(a){if(a.c==a.e.b){throw dp(new bp)}a.d=a.c;a.c=a.c.b;++a.b;return a.d.d}
+function _b(a,b,c){Zb();a.b=co(new ao);a.g=uo(new so);a.d=b;a.c=c;a.f=lc(new ic,b+1);return a}
+function hk(c,a){var b=c;c.onreadystatechange=$entry(function(){a.j(b)})}
+function Ll(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=b[c];if(e.B(a,d)){return true}}}return false}
+function Jl(i,a){var b=i.b;for(var c in b){if(c==parseInt(c)){var d=b[c];for(var e=0,f=d.length;e-129&&a<128){b=a+128;c=(Ok(),Nk)[b];!c&&(c=Nk[b]=Hk(new Dk,a));return c}return Hk(new Dk,a)}
+function xo(a,b){var c,d;(b<0||b>a.c)&&Sm(b,a.c);if(b>=a.c>>1){d=a.b;for(c=a.c;c>b;--c){d=d.c}}else{d=a.b.b;for(c=0;c0){Ln(h,ig(yo(b.b.g),2));pc(b.b.f)}nc(b.b.f);Nn(h,Cl(b.b.b));Il(b.b.b);i=null;for(g=Xm(new Um,h);g.b1){return}if(qc(a.e)>0){c=oc(a.e);ec(c==a.d?zr:Ar+c,wr,Lk(c),null);Jc(c,wc(new uc,a));return}while(qc(a.f)>0){c=pc(a.f);b=ig(yo(a.g),2);ec(c==a.d?zr:Ar+c,wr,Lk(c),null);Jc(c,b)}}
+var Fr="Can't get element ",Cr='GET',Dr='MSXML2.XMLHTTP.3.0',Er='Microsoft.XMLHTTP',wr='begin',Ar='download',xr='end',zr='leftoversDownload',Br='runAsync';_=Xb.prototype=new O;_.tI=0;_.c=null;_.d=0;_.e=null;_.f=null;var Yb;_=ic.prototype=new O;_.tI=0;_.b=null;_.c=0;_.d=0;_=rc.prototype=new mb;_.tI=7;_=uc.prototype=new O;_.i=yc;_.tI=8;_.b=null;_=Kc.prototype=new O;_.j=Nc;_.tI=0;_.b=null;_.c=null;_=Ek.prototype=new O;_.tI=27;_=Dk.prototype=new Ek;_.eQ=Ik;_.hC=Jk;_.w=Kk;_.tI=30;_.b=0;var Nk;_=qn.prototype=new rl;_.y=un;_.s=vn;_.z=wn;_.tI=0;_.b=null;_.c=null;_=xn.prototype=new O;_.u=An;_.v=Bn;_.tI=0;_.b=null;_=Cn.prototype=new Km;_.F=En;_.G=Fn;_.s=Gn;_.tI=41;_=so.prototype=new Cn;_.x=Bo;_.z=Co;_.tI=45;_.b=null;_.c=0;_=Do.prototype=new O;_.u=Ko;_.v=Lo;_.tI=0;_.b=0;_.c=null;_.d=null;_.e=null;_=Mo.prototype=new O;_.tI=0;_.b=null;_.c=null;_.d=null;var vg=new ok,xg=new ok;hc();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/C0A3E821CD3689650D1DF0CEF5C506A9/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/C0A3E821CD3689650D1DF0CEF5C506A9/1.cache.js
new file mode 100644
index 00000000..e7aadde5
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/C0A3E821CD3689650D1DF0CEF5C506A9/1.cache.js
@@ -0,0 +1,7 @@
+function $S(){}
+function kT(){return EP}
+function oT(){var a;while(dT){a=dT;dT=dT.b;!dT&&(eT=null);Wv(a.a.a)}}
+function vv(a,b){mbb(a.e,b);if(!a.d){a.d=true;wv(a)}a.b=false;xv(a)}
+function Wv(a){var b;a.a.a=a.a.b.blob;(Bv(),Av).captureBlob(a.a.a,a.a.e,rsb);b=G_(new D_,a.a.e);a.a.c.rb(b);vv(a.a.i,a.a)}
+function lT(){gT=true;fT=(iT(),new $S);Jy((Gy(),Fy),1);!!$stats&&$stats(nz(ssb,mjb,null,null));fT.Zb();!!$stats&&$stats(nz(ssb,tsb,null,null))}
+var usb='AsyncLoader1',rsb='image/JPEG',ssb='runCallbacks1';_=$S.prototype=new _S;_.gC=kT;_.Zb=oT;_.tI=0;var EP=M4(bqb,usb);lT();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/C0A3E821CD3689650D1DF0CEF5C506A9/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/C0A3E821CD3689650D1DF0CEF5C506A9/2.cache.js
new file mode 100644
index 00000000..d7319b98
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/C0A3E821CD3689650D1DF0CEF5C506A9/2.cache.js
@@ -0,0 +1,6 @@
+function wT(){}
+function IT(){return IP}
+function MT(){var a;while(BT){a=BT;BT=BT.b;!BT&&(CT=null);qo(a.a)}}
+function JT(){ET=true;DT=(GT(),new wT);Jy((Gy(),Fy),2);!!$stats&&$stats(nz(wsb,mjb,null,null));DT.Zb();!!$stats&&$stats(nz(wsb,tsb,null,null))}
+function qo(a){var b,c,d,e,f;e=($wnd.google&&$wnd.google.gears&&$wnd.google.gears.factory).create(vsb);e.decode(a.a);d=e.width;c=e.height;f=d/a.b.b;b=c/a.b.a;if(f>b){if(f>1){e.resize(a.b.b,~~Math.max(Math.min(c/f,2147483647),-2147483648));Hv(a.c,e.encode());return}Hv(a.c,a.a)}else{if(b>1){e.resize(~~Math.max(Math.min(d/b,2147483647),-2147483648),a.b.a);Hv(a.c,e.encode());return}Hv(a.c,a.a)}}
+var xsb='AsyncLoader2',vsb='beta.canvas',wsb='runCallbacks2';_=wT.prototype=new xT;_.gC=IT;_.Zb=MT;_.tI=0;var IP=M4(bqb,xsb);JT();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/C0A3E821CD3689650D1DF0CEF5C506A9/3.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/C0A3E821CD3689650D1DF0CEF5C506A9/3.cache.js
new file mode 100644
index 00000000..cdd183e1
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/C0A3E821CD3689650D1DF0CEF5C506A9/3.cache.js
@@ -0,0 +1,35 @@
+function no(){}
+function Jv(){}
+function Ov(){}
+function AT(){}
+function xT(){}
+function NT(){}
+function RT(){}
+function Ry(){My(Fy)}
+function ro(){return yN}
+function Nv(){return mO}
+function Sv(){return nO}
+function zT(){return HP}
+function PT(){return FP}
+function TT(){return GP}
+function My(a){Jy(a,a.d)}
+function Lv(a,b){a.a=b;return a}
+function Qv(a,b){a.a=b;return a}
+function GT(){GT=hcb;DT=new xT}
+function QT(a){GT();FT=false;LT(a)}
+function KI(a,b){if(!a){return}Rv(a,b)}
+function NI(c,b){c.onprogress=function(a){OI(b,a)}}
+function kw(a,b,c){var d;d=L2(a.f,b);Ms(a,c,a.H,d,true);Ns(a,b)}
+function po(a,b,c){a.a=b;a.c=c;a.b=c.h;return a}
+function wv(a){var b;if(a.e.b>0){b=tM(obb(a.e),37);Gv(b)}else{a.d=false}}
+function tv(a,b){W7(a.f.a,b)!=null;xv(a);wv(a);bt(a.a.d)}
+function OI(a,b){var c;if(!a){return}c=b.loaded/b.total;a.a.g.a.ab(GM(Math.floor(c*100))+Fsb)}
+function Jy(a,b){var c;c=b==a.d?kjb:ljb+b;Oy(c,tsb,L5(b),null);if(Ly(a,b)){$y(a.e);W7(a.a,L5(b));Qy(a)}}
+function Gv(a){if(a.h.c){(zB(),a.d.H).innerText=ysb;KT(po(new no,a.a,a))}else{Hv(a,a.a)}}
+function LT(a){GT();while(BT){To();Sq(_q(new qp,Gsb+Dh(a)));BT=BT.b}CT=null}
+function KT(a){GT();var b;b=new RT;b.a=a;!!CT&&(CT.b=b);CT=b;!BT&&(BT=b);if(ET){DT.Zb();return}if(!FT){FT=true;Ky((Gy(),Fy),2,new NT)}}
+function Wk(a,b,c){var d,e;W7(a.a.a,b)!=null;e=c.Xb();if(e){d=xt(new mt,a,e,a.b);S7(a.f,L5(d.c),d);aab(a.g,d);a.l.a==a&&kw(a.l,b,d)}else{a.l.a==a&&Ns(a.l,b)}}
+function Rv(b,c){var a,e,f;if(c.status!=200){(zB(),b.a.d.H).innerText=Csb;hk(b.a.$(),Dsb,true)}(Bv(),Av).remove(b.a.e);if(c.status==200){try{f=HL(c.responseText);tv(b.a.i,b.a);Wk(b.a.f,b.a,f);return}catch(a){a=xS(a);if(wM(a,23)){e=a;To();Sq(_q(new qp,Esb+Dh(e)+teb+c.responseText))}else throw a}}W7(b.a.f.a.a,b.a)!=null;tv(b.a.i,b.a)}
+function JI(c,a){var b=c;c.onreadystatechange=function(){if(b.readyState==4){KI(a,b);b.onreadystatechange=null;b.onprogress=null;b.upload.onprogress=null}}}
+function Hv(a,b){var c;(zB(),a.d.H).innerText=zsb;c=kI().create(Asb);c.open(Jjb,(To(),Oo)+a.f.d+Bsb+a.e+fgb+So);NI(c.upload,Lv(new Jv,a));JI(c,Qv(new Ov,a));c.send(b)}
+var Fsb='%',Bsb='?filename=',Lsb='AsyncLoader2$1',Msb='AsyncLoader2__Callback',Ksb='AsyncLoader2__Super',Hsb='AsyncResizer',Gsb='Error Resizing image\n',Esb='Exception on Upload\n',ysb='Resizing..',Csb='Upload Error',Isb='UploadFile$1',Jsb='UploadFile$2',zsb='Uploading..',Asb='beta.httprequest',tsb='end',Dsb='upload-error';_=no.prototype=new Nf;_.gC=ro;_.tI=0;_.a=null;_.b=null;_.c=null;_=Jv.prototype=new Nf;_.gC=Nv;_.tI=0;_.a=null;_=Ov.prototype=new Nf;_.gC=Sv;_.tI=0;_.a=null;_=xT.prototype=new Nf;_.gC=zT;_.Zb=AT;_.tI=0;var BT=null,CT=null,DT,ET=false,FT=false;_=NT.prototype=new Nf;_.gC=PT;_.Mb=QT;_.tI=89;_=RT.prototype=new Nf;_.gC=TT;_.tI=0;_.a=null;_.b=null;var yN=M4(fnb,Hsb),mO=M4(fnb,Isb),nO=M4(fnb,Jsb),HP=M4(bqb,Ksb),FP=M4(bqb,Lsb),GP=M4(bqb,Msb);Ry();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/DB10FC871F1917C3CF43B2E1A192D050/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/DB10FC871F1917C3CF43B2E1A192D050/1.cache.js
new file mode 100644
index 00000000..fba0896d
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/DB10FC871F1917C3CF43B2E1A192D050/1.cache.js
@@ -0,0 +1,7 @@
+function Yg(){}
+function Wg(){}
+function bh(){}
+function Vg(){}
+function $g(){$g=mp;Zg=new Wg}
+function ah(){Zg=($g(),new Vg);ac((Zb(),Yb),1);!!$stats&&$stats(Cc(ur,vr,null,null));Zg.m();!!$stats&&$stats(Cc(ur,wr,null,null))}
+var ur='runCallbacks1';_=Wg.prototype=new O;_.m=Yg;_.tI=0;_=Vg.prototype=new Wg;_.m=bh;_.tI=0;var Zg;ah();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/DB10FC871F1917C3CF43B2E1A192D050/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/DB10FC871F1917C3CF43B2E1A192D050/2.cache.js
new file mode 100644
index 00000000..45a9b6c3
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/DB10FC871F1917C3CF43B2E1A192D050/2.cache.js
@@ -0,0 +1,7 @@
+function fh(){}
+function dh(){}
+function kh(){}
+function ch(){}
+function hh(){hh=mp;gh=new dh}
+function jh(){gh=(hh(),new ch);ac((Zb(),Yb),2);!!$stats&&$stats(Cc(xr,vr,null,null));gh.m();!!$stats&&$stats(Cc(xr,wr,null,null))}
+var xr='runCallbacks2';_=dh.prototype=new O;_.m=fh;_.tI=0;_=ch.prototype=new dh;_.m=kh;_.tI=0;var gh;jh();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/DB10FC871F1917C3CF43B2E1A192D050/3.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/DB10FC871F1917C3CF43B2E1A192D050/3.cache.js
new file mode 100644
index 00000000..9fe4efc2
--- /dev/null
+++ b/modules/gwtorganise/war/g3viewer/deferredjs/DB10FC871F1917C3CF43B2E1A192D050/3.cache.js
@@ -0,0 +1,75 @@
+function Xb(){}
+function ic(){}
+function rc(){}
+function uc(){}
+function Kc(){}
+function Gk(){}
+function Fk(){}
+function sn(){}
+function zn(){}
+function En(){}
+function uo(){}
+function Fo(){}
+function Oo(){}
+function hc(){cc(Yb)}
+function cc(a){ac(a,a.d)}
+function yc(a){xc(this,a)}
+function nc(a){a.c=0;a.d=0}
+function qc(a){return a.d-a.c}
+function Lk(){return this.b}
+function Mk(){return this.b}
+function Eo(){return this.c}
+function No(){return Lo(this)}
+function oc(a){return a.b[a.c]}
+function mc(a,b){a.b[a.d++]=b}
+function tc(a,b){Dd();return a}
+function wc(a,b){a.b=b;return a}
+function Jk(a,b){a.b=b;return a}
+function Bn(a,b){a.b=b;return a}
+function In(){return zo(this,0)}
+function yn(){return this.c.b.e}
+function pc(a){return a.b[a.c++]}
+function Cn(){return $m(this.b.b)}
+function wn(a){return Ol(this.b,a)}
+function Mo(){return this.c!=this.e.b}
+function Qo(a){a.b=a.c=a;return a}
+function Mc(a,b,c){a.c=b;a.b=c;return a}
+function un(a,b,c){a.b=b;a.c=c;return a}
+function Do(a){return Ro(new Oo,a,this.b),++this.c,true}
+function Co(a){if(a.c==0){throw fp(new dp)}}
+function wo(a){a.b=Qo(new Oo);a.c=0;return a}
+function yo(a,b,c){Ro(new Oo,b,c);++a.c}
+function Io(a,b,c,d){a.e=d;a.c=c;a.b=b;return a}
+function Ro(a,b,c){a.d=b;a.b=c;a.c=c.c;c.c.b=a;c.c=a;return a}
+function lc(a,b){a.b=Yf(zg,0,-1,b,1);return a}
+function Qk(){Qk=mp;Pk=Yf(Bg,0,12,256,0)}
+function Zb(){Zb=mp;Yb=_b(new Xb,3,Zf(zg,0,-1,[]))}
+function El(a){var b;b=hm(new bm,a);return un(new sn,a,b)}
+function Dn(){var a;a=mg(_m(this.b.b),20).D();return a}
+function xn(){var a;a=qm(new om,this.c.b);return Bn(new zn,a)}
+function Gn(a,b){var c;c=zo(this,a);yo(c.e,b,c.c);++c.b;c.d=null}
+function Ao(a){var b;Co(a);--a.c;b=a.b.b;b.b.c=b.c;b.c.b=b.b;b.b=b.c=b;return b.d}
+function Kk(a){return a!=null&&kg(a.tI,12)&&mg(a,12).b==this.b}
+function ec(a,b,c,d){!!$stats&&$stats(Cc(a,b,c,d))}
+function Ic(b,c){function d(a){c.i(a)}
+return __gwtStartLoadingFragment(b,d)}
+function Ol(a,b){if(a.d&&go(a.c,b)){return true}else if(Nl(a,b)){return true}else if(Ll(a,b)){return true}return false}
+function Lo(a){if(a.c==a.e.b){throw fp(new dp)}a.d=a.c;a.c=a.c.b;++a.b;return a.d.d}
+function _b(a,b,c){Zb();a.b=fo(new co);a.g=wo(new uo);a.d=b;a.c=c;a.f=lc(new ic,b+1);return a}
+function ac(a,b){var c;c=b==a.d?yr:zr+b;ec(c,wr,Nk(b),null);if(bc(a,b)){pc(a.e);Yl(a.b,Nk(b));gc(a)}}
+function Jc(a,b){var c,d;c=Ic(a,b);if(c==null){return}d=kk();d.open(Br,c,true);jk(d,Mc(new Kc,d,b));d.send(null)}
+function dk(b){var a=b;$wnd.setTimeout(function(){a.onreadystatechange=new Function},0)}
+function jk(c,a){var b=c;c.onreadystatechange=$entry(function(){a.j(b)})}
+function Hn(b){var a,d;d=zo(this,b);try{return Lo(d)}catch(a){a=Lg(a);if(pg(a,23)){throw Ek(new Bk,Er+b)}else throw a}}
+function Nl(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=b[c];if(e.B(a,d)){return true}}}return false}
+function Ll(i,a){var b=i.b;for(var c in b){if(c==parseInt(c)){var d=b[c];for(var e=0,f=d.length;ea.c)&&Um(b,a.c);if(b>=a.c>>1){d=a.b;for(c=a.c;c>b;--c){d=d.c}}else{d=a.b.b;for(c=0;c-129&&a<128){b=a+128;c=(Qk(),Pk)[b];!c&&(c=Pk[b]=Jk(new Fk,a));return c}return Jk(new Fk,a)}
+function kk(){if($wnd.XMLHttpRequest){return new XMLHttpRequest}else{try{return new ActiveXObject(Cr)}catch(a){return new ActiveXObject(Dr)}}}
+function xc(b,c){var a,e,f,g,h,i;h=Mn(new Jn);while(qc(b.b.f)>0){Nn(h,mg(Ao(b.b.g),2));pc(b.b.f)}nc(b.b.f);Pn(h,El(b.b.b));Kl(b.b.b);i=null;for(g=Zm(new Wm,h);g.b1){return}if(qc(a.e)>0){c=oc(a.e);ec(c==a.d?yr:zr+c,vr,Nk(c),null);Jc(c,wc(new uc,a));return}while(qc(a.f)>0){c=pc(a.f);b=mg(Ao(a.g),2);ec(c==a.d?yr:zr+c,vr,Nk(c),null);Jc(c,b)}}
+var Er="Can't get element ",Br='GET',Cr='MSXML2.XMLHTTP.3.0',Dr='Microsoft.XMLHTTP',vr='begin',zr='download',wr='end',yr='leftoversDownload',Ar='runAsync';_=Xb.prototype=new O;_.tI=0;_.c=null;_.d=0;_.e=null;_.f=null;var Yb;_=ic.prototype=new O;_.tI=0;_.b=null;_.c=0;_.d=0;_=rc.prototype=new mb;_.tI=7;_=uc.prototype=new O;_.i=yc;_.tI=8;_.b=null;_=Kc.prototype=new O;_.j=Nc;_.tI=0;_.b=null;_.c=null;_=Gk.prototype=new O;_.tI=27;_=Fk.prototype=new Gk;_.eQ=Kk;_.hC=Lk;_.w=Mk;_.tI=30;_.b=0;var Pk;_=sn.prototype=new tl;_.y=wn;_.s=xn;_.z=yn;_.tI=0;_.b=null;_.c=null;_=zn.prototype=new O;_.u=Cn;_.v=Dn;_.tI=0;_.b=null;_=En.prototype=new Mm;_.F=Gn;_.G=Hn;_.s=In;_.tI=41;_=uo.prototype=new En;_.x=Do;_.z=Eo;_.tI=45;_.b=null;_.c=0;_=Fo.prototype=new O;_.u=Mo;_.v=No;_.tI=0;_.b=0;_.c=null;_.d=null;_.e=null;_=Oo.prototype=new O;_.tI=0;_.b=null;_.c=null;_.d=null;var zg=new qk,Bg=new qk;hc();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/F0ACC41901D1A45069B29563B600C0E1/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/F0ACC41901D1A45069B29563B600C0E1/1.cache.js
deleted file mode 100644
index f4c58224..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/F0ACC41901D1A45069B29563B600C0E1/1.cache.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function zS(){}
-function LS(){return jP}
-function PS(){var a;while(ES){a=ES;ES=ES.c;!ES&&(FS=null);po(a.b)}}
-function MS(){HS=true;GS=(JS(),new zS);hy((ey(),dy),1);!!$stats&&$stats(Ny(hrb,hib,null,null));GS.cc();!!$stats&&$stats(Ny(hrb,irb,null,null))}
-function po(a){var b,c,d,e,f;e=($wnd.google&&$wnd.google.gears&&$wnd.google.gears.factory).create(grb);e.decode(a.b);d=e.width;c=e.height;f=~~(d/a.c.c);b=~~(c/a.c.b);if(f>b){if(f>1){e.resize(a.c.c,~~(c/f));dv(a.d,e.encode())}}else{if(b>1){e.resize(~~(d/b),a.c.b);dv(a.d,e.encode())}}}
-var jrb='AsyncLoader1',grb='beta.canvas',hrb='runCallbacks1';_=zS.prototype=new AS;_.gC=LS;_.cc=PS;_.tI=0;var jP=R3(Vob,jrb);MS();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/F0ACC41901D1A45069B29563B600C0E1/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/F0ACC41901D1A45069B29563B600C0E1/2.cache.js
deleted file mode 100644
index 35b948e8..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/F0ACC41901D1A45069B29563B600C0E1/2.cache.js
+++ /dev/null
@@ -1,4 +0,0 @@
-function py(){ky(dy)}
-function ky(a){hy(a,a.e)}
-function hy(a,b){var c;c=b==a.e?fib:gib+b;my(c,irb,Q4(b),null);if(jy(a,b)){yy(a.f);$6(a.b,Q4(b));oy(a)}}
-var irb='end';py();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/FFDD2B79ACD26336C36A836612DAEC0A/1.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/FFDD2B79ACD26336C36A836612DAEC0A/1.cache.js
deleted file mode 100644
index 1ae48cc1..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/FFDD2B79ACD26336C36A836612DAEC0A/1.cache.js
+++ /dev/null
@@ -1,7 +0,0 @@
-function Ug(){}
-function Sg(){}
-function Zg(){}
-function Rg(){}
-function Wg(){Wg=cp;Vg=new Sg}
-function Yg(){Vg=(Wg(),new Rg);ac((Zb(),Yb),1);!!$stats&&$stats(Cc(nr,or,null,null));Vg.m();!!$stats&&$stats(Cc(nr,pr,null,null))}
-var nr='runCallbacks1';_=Sg.prototype=new O;_.m=Ug;_.tI=0;_=Rg.prototype=new Sg;_.m=Zg;_.tI=0;var Vg;Yg();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/deferredjs/FFDD2B79ACD26336C36A836612DAEC0A/2.cache.js b/modules/gwtorganise/war/g3viewer/deferredjs/FFDD2B79ACD26336C36A836612DAEC0A/2.cache.js
deleted file mode 100644
index 852a926c..00000000
--- a/modules/gwtorganise/war/g3viewer/deferredjs/FFDD2B79ACD26336C36A836612DAEC0A/2.cache.js
+++ /dev/null
@@ -1,75 +0,0 @@
-function Xb(){}
-function ic(){}
-function rc(){}
-function uc(){}
-function Kc(){}
-function vk(){}
-function uk(){}
-function gn(){}
-function on(){}
-function tn(){}
-function ko(){}
-function vo(){}
-function Eo(){}
-function hc(){cc(Yb)}
-function cc(a){ac(a,a.d)}
-function yc(a){xc(this,a)}
-function nc(a){a.c=0;a.d=0}
-function qc(a){return a.d-a.c}
-function Ak(){return this.b}
-function Bk(){return this.b}
-function uo(){return this.c}
-function Do(){return Bo(this)}
-function oc(a){return a.b[a.c]}
-function mc(a,b){a.b[a.d++]=b}
-function tc(a,b){Ed();return a}
-function wc(a,b){a.b=b;return a}
-function yk(a,b){a.b=b;return a}
-function qn(a,b){a.b=b;return a}
-function pc(a){return a.b[a.c++]}
-function nn(){return this.c.b.e}
-function rn(){return Pm(this.b.b)}
-function ln(a){return Dl(this.b,a)}
-function Co(){return this.c!=this.e.b}
-function yn(){return po(ig(this,24),0)}
-function so(a){if(a.c==0){throw Xo(new Vo)}}
-function Go(a){a.b=a.c=a;return a}
-function Mc(a,b,c){a.c=b;a.b=c;return a}
-function jn(a,b,c){a.b=b;a.c=c;return a}
-function to(a){return Ho(new Eo,a,this.b),++this.c,true}
-function oo(a,b,c){Ho(new Eo,b,c);++a.c}
-function mo(a){a.b=Go(new Eo);a.c=0;return a}
-function yo(a,b,c,d){a.e=d;a.c=c;a.b=b;return a}
-function Ho(a,b,c){a.d=b;a.b=c;a.c=c.c;c.c.b=a;c.c=a;return a}
-function lc(a,b){a.b=Uf(vg,0,-1,b,1);return a}
-function Fk(){Fk=cp;Ek=Uf(xg,0,12,256,0)}
-function Zb(){Zb=cp;Yb=_b(new Xb,2,Vf(vg,0,-1,[]))}
-function tl(a){var b;b=Yl(new Sl,a);return jn(new gn,a,b)}
-function sn(){var a;a=ig(Qm(this.b.b),20).D();return a}
-function mn(){var a;a=fm(new dm,this.c.b);return qn(new on,a)}
-function wn(a,b){var c;c=po(this,a);oo(c.e,b,c.c);++c.b;c.d=null}
-function qo(a){var b;so(a);--a.c;b=a.b.b;b.b.c=b.c;b.c.b=b.b;b.b=b.c=b;return b.d}
-function zk(a){return a!=null&&gg(a.tI,12)&&ig(a,12).b==this.b}
-function ec(a,b,c,d){!!$stats&&$stats(Cc(a,b,c,d))}
-function Ic(b,c){function d(a){c.i(a)}
-return __gwtStartLoadingFragment(b,d)}
-function Dl(a,b){if(a.d&&Xn(a.c,b)){return true}else if(Cl(a,b)){return true}else if(Al(a,b)){return true}return false}
-function Bo(a){if(a.c==a.e.b){throw Xo(new Vo)}a.d=a.c;a.c=a.c.b;++a.b;return a.d.d}
-function _b(a,b,c){Zb();a.b=Wn(new Un);a.g=mo(new ko);a.d=b;a.c=c;a.f=lc(new ic,b+1);return a}
-function Uj(b){var a=b;$wnd.setTimeout(function(){a.onreadystatechange=new Function},0)}
-function $j(c,a){var b=c;c.onreadystatechange=$entry(function(){a.j(b)})}
-function Cl(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=b[c];if(e.B(a,d)){return true}}}return false}
-function Al(i,a){var b=i.b;for(var c in b){if(c==parseInt(c)){var d=b[c];for(var e=0,f=d.length;ea.c)&&Jm(b,a.c);if(b>=a.c>>1){d=a.b;for(c=a.c;c>b;--c){d=d.c}}else{d=a.b.b;for(c=0;c-129&&a<128){b=a+128;c=(Fk(),Ek)[b];!c&&(c=Ek[b]=yk(new uk,a));return c}return yk(new uk,a)}
-function _j(){if($wnd.XMLHttpRequest){return new XMLHttpRequest}else{try{return new ActiveXObject(ur)}catch(a){return new ActiveXObject(vr)}}}
-function xc(b,c){var a,e,f,g,h,i;h=Cn(new zn);while(qc(b.b.f)>0){Dn(h,ig(qo(b.b.g),2));pc(b.b.f)}nc(b.b.f);Fn(h,tl(b.b.b));zl(b.b.b);i=null;for(g=Om(new Lm,h);g.b1){return}if(qc(a.e)>0){c=oc(a.e);ec(c==a.d?qr:rr+c,or,Ck(c),null);Jc(c,wc(new uc,a));return}while(qc(a.f)>0){c=pc(a.f);b=ig(qo(a.g),2);ec(c==a.d?qr:rr+c,or,Ck(c),null);Jc(c,b)}}
-var wr="Can't get element ",tr='GET',ur='MSXML2.XMLHTTP.3.0',vr='Microsoft.XMLHTTP',or='begin',rr='download',pr='end',qr='leftoversDownload',sr='runAsync';_=Xb.prototype=new O;_.tI=0;_.c=null;_.d=0;_.e=null;_.f=null;var Yb;_=ic.prototype=new O;_.tI=0;_.b=null;_.c=0;_.d=0;_=rc.prototype=new mb;_.tI=7;_=uc.prototype=new O;_.i=yc;_.tI=8;_.b=null;_=Kc.prototype=new O;_.j=Nc;_.tI=0;_.b=null;_.c=null;_=vk.prototype=new O;_.tI=27;_=uk.prototype=new vk;_.eQ=zk;_.hC=Ak;_.w=Bk;_.tI=30;_.b=0;var Ek;_=gn.prototype=new il;_.y=ln;_.s=mn;_.z=nn;_.tI=0;_.b=null;_.c=null;_=on.prototype=new O;_.u=rn;_.v=sn;_.tI=0;_.b=null;_=tn.prototype=new Bm;_.F=wn;_.G=xn;_.s=yn;_.tI=41;_=ko.prototype=new tn;_.x=to;_.z=uo;_.tI=45;_.b=null;_.c=0;_=vo.prototype=new O;_.u=Co;_.v=Do;_.tI=0;_.b=0;_.c=null;_.d=null;_.e=null;_=Eo.prototype=new O;_.tI=0;_.b=null;_.c=null;_.d=null;var vg=new fk,xg=new fk;hc();
\ No newline at end of file
diff --git a/modules/gwtorganise/war/g3viewer/g3viewer.nocache.js b/modules/gwtorganise/war/g3viewer/g3viewer.nocache.js
index c70e2b26..64aa42ab 100644
--- a/modules/gwtorganise/war/g3viewer/g3viewer.nocache.js
+++ b/modules/gwtorganise/war/g3viewer/g3viewer.nocache.js
@@ -1,4 +1,4 @@
-function g3viewer(){var M='',nb='" for "gwt:onLoadErrorFn"',lb='" for "gwt:onPropertyErrorFn"',Y='"><\/script>',$='#',Wb='.cache.html',ab='/',Lb='0031994593072F3F8665BB367C2904F3',Mb='063AB00068E7F94442F89D1B4262AD00',Nb='2625E6CD0659684104018A069A188996',Ob='36CF5446615AAE9D0FDDA0B123643155',Pb='373CE923F09A0C2270E1B0F2D934E253',Qb='4FEE434A493BF0E4969DA18CF936A5FD',Rb='5DDD50A96AC2DC41C6BF0EB870994C49',Sb='6B11280F72B8881FCDF44A0B47F1E96A',Tb='8E9AF58E0E2BDFC35328028FC368ECD2',gc='