Index: Dev/trunk/css/aapje.css
===================================================================
--- Dev/trunk/css/aapje.css	(revision 230)
+++ Dev/trunk/css/aapje.css	(revision 230)
@@ -0,0 +1,188 @@
+/* 
+    Document   : style
+    Created on : 12-jul-2011, 15:12:02
+    Author     : fpvanagthoven
+    Description:
+        Purpose of the stylesheet follows.
+*/
+
+/* 
+   TODO customize this sample style
+   Syntax recommendation http://www.w3.org/TR/REC-CSS2/
+*/
+h1 {
+    width: 100%;
+    text-align: center;
+    color: white;
+    text-shadow: #888 0px 0px 1em;
+    margin: 0 0 0.1em 0;
+}
+
+h2 {
+    margin: 0;
+    font-size: larger;
+}
+
+h3 {
+    margin: 0;
+    font-size: small;
+    font-weight: normal;
+    color: #333;
+}
+
+legend {
+    padding-left: 0em;
+    color: #fff;
+    text-shadow: #000 0px 0px .4em;
+}
+
+fieldset {
+    background-color: #aeb2b3;
+    border: 1px solid #fff;
+    -moz-border-radius: 1em;
+    border-radius: 1em;
+    margin-bottom: 2em;
+    padding: 0 1em 1em 1em;
+    -moz-box-shadow: 2px 2px 1px #888;
+    -webkit-box-shadow: 2px 2px 1px #888;
+    box-shadow: 2px 2px 1px #888;
+}
+html {
+    background-image: url('../images/bg/blueishgridblock.png');
+    height: 100%;
+    font-size: 12px;
+}
+
+root { 
+    display: block;
+}
+
+body {
+    font-family: sans-serif;
+    background-image: url('../images/bg/blueishgrid.png');
+    background-repeat: repeat-x;
+    margin: 0;
+    padding: 0;
+    height: 100%;
+}
+
+input {
+    background-color: #c6c6c6;
+    border: 1px solid #888;
+}
+
+textarea {
+    background-color: #c6c6c6;
+    border: 1px solid #888;
+}
+
+select {
+    background-color: #c6c6c6;
+    border: 1px solid #888;
+}
+
+#wrapper {
+    width: 80%;
+    min-width: 800px;
+    margin: auto;
+}
+
+#header {
+    height: 4em;
+    background-color: transparent;
+}
+
+#logo{
+    background-image: url('../images/headlogo.png');
+    background-position: top center;
+    background-repeat: no-repeat;
+    font-size: 2em;
+    font-weight: bold;
+    text-align: center;
+    padding-top: 15px;
+    /*line-height: 2em;*/
+    text-shadow: #555 0px 0px .2em;
+    height: 189px;
+}
+
+#logo a {
+    text-decoration: none;
+    color: #ddd;
+}
+
+#logo a:hover {
+    color: #fff;
+}
+
+#content {
+    position: relative;
+    width: 100%;
+    padding: 2em 0;
+}
+
+/* ################################################################## 
+   ===================== STYLESHEET OF GLORY ======================== */
+
+.menu {
+    width: 30em;
+    margin: 1em auto 0 auto;
+    padding: 2em;
+    text-align: center;
+    background-image: url('../images/bg/graygradient.png');
+    background-repeat: repeat-x;
+    background-color: #aeb2b3;
+    -moz-border-radius: 15px;
+    border-radius: 15px; 
+    border: 1px solid white;
+   }
+
+.selectionmenu {
+    padding: 2em;
+    margin: 1em;
+    width:20%;
+    height: 25%;
+    overflow: auto; 
+    text-align: center;
+    background-image: url('../images/bg/graygradient.png');
+    background-repeat: repeat-x;
+    background-color: #aeb2b3;
+    -moz-border-radius: 15px;
+    border-radius: 15px; 
+    border: 1px solid white;
+    float: left;
+}
+
+.menuButtons {
+    float: left;
+}
+
+.toLoad {
+    background-color: #c6c6c6;
+    width: 23em;
+    height: 10em;
+}
+
+.feedback {
+    color: #fff;       
+    font-size: 30px;
+    float: right;
+}
+
+.radarGraph {
+    width: 35em;
+    margin: 1em auto 0 auto;
+    padding: 2em;
+    text-align: center;
+    background-image: url('../images/bg/graygradient.png');
+    background-repeat: repeat-x;
+    background-color: #aeb2b3;
+    -moz-border-radius: 15px;
+    border-radius: 15px; 
+    border: 1px solid white;
+    text-orientation: center;
+   }
+
+
+
+
+
Index: Dev/trunk/css/awesome.css
===================================================================
--- Dev/trunk/css/awesome.css	(revision 228)
+++ Dev/trunk/css/awesome.css	(revision 230)
@@ -565,4 +565,29 @@
 
 
+/*
+#pipelineFrame{
+    height: 12em;
+    width: 96em;
+    display: block;
+    background-image: url('../images/bg/pipelineFrameBG.png');
+    background-color: #e3eff3;
+}
+
+.pipelineFrame .pipelineObject {
+    width: 10em;
+    height: 10em;
+    margin: 1em auto 1em auto;
+    text-align: center;
+}
+*/
+
+/*
+*
+*
+*   Horizontal sequencer styling
+*
+*
+*/
+
 #sequencer {
     width: 100%;
Index: Dev/trunk/css/visualeditors.css
===================================================================
--- Dev/trunk/css/visualeditors.css	(revision 228)
+++ Dev/trunk/css/visualeditors.css	(revision 230)
@@ -18,4 +18,5 @@
 html {
     background-image: url('../images/bg/blueishgridblock.png');
+    /*background-image: url('../images/icons/nyan.gif');*/
     height: 100%;
     font-size: 12px;
@@ -27,4 +28,5 @@
     min-width: 800px;
     margin: 0 auto;
+    clear:both;
 }
 
@@ -33,4 +35,50 @@
     position: relative;
     padding: 2em 0;
+}
+
+#logo {
+    float: left;
+    width:250px;
+    margin: 0 0 10px 0;
+    padding: 10px 40px;
+    background-image: linear-gradient(top, #B0B0B0 21%, #888888 80%);
+    background-image: -o-linear-gradient(top, #B0B0B0 21%, #888888 80%);
+    background-image: -moz-linear-gradient(top, #B0B0B0 21%, #888888 80%);
+    background-image: -webkit-linear-gradient(top, #B0B0B0 21%, #888888 80%);
+    background-image: -ms-linear-gradient(top, #B0B0B0 21%, #888888 80%);
+
+    background-image: -webkit-gradient(
+        linear,
+        left top,
+        left bottom,
+        color-stop(0.21, #B0B0B0),
+        color-stop(0.8, #888888)
+        );
+    background-position: bottom;
+    background-repeat: repeat-x;
+    border: 1px solid #FFF;
+    border-top-style: none;
+}
+
+#logo #logoImage {
+    color: #FFF;
+    margin: 0;
+    padding: 0;
+    font: bold 22px Arial;
+}
+
+#logo #logoControls {
+    border-top: 1px solid #555;
+    font: 12px Arial;
+    color: #555;
+    text-align: right;
+    width: auto;
+}
+
+#logoControls a {
+    color: #FFF;
+    font: bold 12px arial;
+    text-decoration: none;
+    text-align: right;
 }
 
@@ -67,4 +115,8 @@
     border-radius: 1em;
     -moz-border-radius: 1em;
+}
+
+.largeFrame .content {
+    clear: left;
 }
 
@@ -108,4 +160,14 @@
 }
 
+.largeFrame.side {
+    clear: none;
+    margin: 0 10px;
+}
+
+.largeFrame.side .innerLargeFrame {
+    width: 400px;
+    height: 400px;
+}
+
 .smallFrame {
     margin: 0.5em auto;
@@ -194,5 +256,8 @@
 
 .bigButton.vertical {
-    width: 2em;
+    margin: 0.25em;
+    text-align: center;
+    min-width: 7em;
+    max-width: 12em;
     height: 2em;
     font-size: 20px;
@@ -212,4 +277,6 @@
     cursor: default;
 }
+
+.bigButton.icon
 
 .bigButton:hover {
@@ -250,88 +317,4 @@
 }
 
-/********************/
-/* DD MENU SPECIFIC */
-/********************/
-
-#btnAddMenu {
-    margin: 0;
-    padding: 5px;
-    background: #5970B2;
-    font: bold 16px arial;
-    color: #FFF;
-    float: left;
-}
-
-#btnAddMenu.down {
-    background: #334167;
-}
-
-#creationMenu {
-    margin: 0;
-    padding: 0;
-    z-index: 30;
-    visibility: hidden;
-    float: left;
-}
-
-#creationMenu li {
-    margin: 0;
-    padding: 0;
-    list-style: none;
-    float: left;
-    clear: left;
-    font: bold 11px arial;
-}
-
-#creationMenu li a img {
-    float: left;
-    clear: left;
-}
-
-#creationMenu li a {
-    display: block;
-    float: left;
-    margin: 0 1px 0 0;
-    padding: 4px 10px;
-    width: 100px;
-    background: #5970B2;
-    color: #FFF;
-    text-align: center;
-    text-decoration: none;
-}
-
-#creationMenu li a:hover {
-    background: #49A3FF;
-}
-
-#creationMenu div {
-    position: absolute;
-    visibility: hidden;
-    margin: 0;
-    padding: 0;
-    background: #eaebd8;
-    border: 1px solid #5970B2;
-}
-
-#creationMenu div a{
-    position: relative;
-    float: left;
-    display: block;
-    clear: left;
-    margin: 0;
-    padding: 5px 10px 5px 10px;
-    width: 75px;
-    white-space: nowrap;
-    text-align: left;
-    text-decoration: none;
-    background: #eaebd8;
-    color: #2875DE;
-    font: 11px arial;
-}
-
-#creationMenu div a:hover {
-    background: #49a3ff;
-    color: #fff;
-}
 
 /****************************/
@@ -506,27 +489,96 @@
 }
 
-/****************************/
-/* Question editor specific */
-/****************************/
-
-.questionParamField {
-    float: left;
-}
-
-.questionParamLabel {
-    float: left;
-    width: 100px;
-}
-
-.questionParamLabel.lAlign {
-    clear: left;
-}
-
-.questionParamLabel.rAlign {
-    clear: right;
-}
-
-.qBodyTextField {
-    resize: none;
-    width: 595px;
-}
+/**************************/
+/* Survey Editor Specific */
+/**************************/
+
+#leftColumn {
+    float: left;
+    clear: left;
+}
+
+#rightColumn {
+    float: left;
+    clear: none;
+}
+
+.largeFrame.C{
+    clear: left;
+    margin: 10px;
+    padding: 5px;
+
+    height: auto;
+    max-height: 400px;
+}
+
+.largeFrame.Cu{
+    clear: left;
+    margin: 10px;
+    padding: 5px;
+    width: 640px;
+}
+
+.largeFrame.Cv {
+    clear: left;
+    margin: 10px;
+    padding: 5px;
+    width: 200px;
+}
+
+.checkboxList {
+    overflow-y: scroll; 
+    overflow-x: hidden;
+    clear: left;
+    width: auto; 
+    height: 250px; 
+    background-color: #FFF; 
+    border-width: 2px; 
+    border-style: solid; 
+    border-bottom-color: #AAA; 
+    border-top-color: #555; 
+    border-right-color: #AAA; 
+    border-left-color: #555;
+}
+
+.dbDataList {
+    width: 300px;
+    float: left;
+    clear: left;
+    margin: 0 10px 0 10px;
+}
+
+#dbShoppingCart .content {
+    height: 415px;
+}
+
+/*******************/
+/* DDMenu specific */
+/*******************/
+
+#toolboxMenu li .bigButton.toolbox div {
+    position: absolute;
+    visibility: hidden;
+    margin: 0;
+    padding: 0;
+    border: 1px solid #555;
+    background: #eaebd8;
+}
+
+#toolboxMenu li .bigButton.toolbox div a {
+    position: relative;
+    float: left;
+    clear: left;
+    margin: 0;
+    padding: 5px 10px;
+    width: 75px;
+    white-space: nowrap;
+    text-align: left;
+    text-decoration: none;
+    color: #2875de;
+    font: 11px arial;
+}
+
+#toolboxMenu li .bigButton.toolbox div a:hover {
+    background: #49a3ff;
+    color: #fff;
+}
Index: Dev/trunk/js/dashboardScripts.js
===================================================================
--- Dev/trunk/js/dashboardScripts.js	(revision 230)
+++ Dev/trunk/js/dashboardScripts.js	(revision 230)
@@ -0,0 +1,183 @@
+dbSelectionInfoTimeout = null;
+currentlySelected = {
+    titles: [],
+    uids: [],
+    type: null
+}
+
+shoppingCart = {
+    contents: {
+        titles: [],
+        uids: [],
+        types: []
+    }
+}
+
+function infoPanelTimeout(event) {
+    // If no event, crash.
+    if (event == undefined || event == null) return;
+    // Cancel previous timeout if present.
+    if (dbSelectionInfoTimeout) {
+        window.clearTimeout(dbSelectionInfoTimeout);
+    }
+    // Gather parameters about event.
+    var dbSelectionInfoTime = 500;
+    var selectBox = event.target;
+    var values = getMultipleListValue(selectBox).values;
+    var titles = getMultipleListValue(selectBox).titles;
+    var uid = values[values.length-1];
+    var type;
+    switch (selectBox.id) {
+        case "dbSessionInstancesList":
+            // This should be session instance, not session. Testing purpose only.
+            type = "Session";
+            break;
+        case "dbGamedataList":
+            // This is obviously not the real type, change before committing
+            type = "Application";
+            break;
+        default:
+            alert("No valid type passed!");
+            break;
+    }
+    currentlySelected.uids = values;
+    currentlySelected.titles = titles;
+    currentlySelected.type = type;
+    // Set timeout of 500ms, then execute ajaxInfoRequest with previously gathered parameters.
+    dbSelectionInfoTimeout = window.setTimeout(ajaxInfoRequest, dbSelectionInfoTime, uid, ge("dbInfoPanelContent"), type);
+    
+}
+
+function getMultipleListValue(element) {
+    // Get multiple values from multiple select box
+    //TODO: 
+    var result = {
+        values: [],
+        titles: []
+    }
+        
+    for (var i = 0; i < element.options.length; i++) {
+        if (element.options[i].selected == true) {
+            result.values.push(element.options[i].value);
+            result.titles.push(element.options[i].text);
+        }
+    }
+    return result;
+}
+
+function addDataToList() {
+    // Take selected objects and add to shopping cart
+        
+    // set element
+    var element;
+    switch (currentlySelected.type){
+        case "Session":
+            element = ge("dbSessionInstancesList");
+            break;
+        case "Application":
+            element = ge("dbGamedataList");
+            break;
+        default:
+            // ???
+            break;
+    }
+    var uid;
+    while (uid = currentlySelected.uids.pop()) {
+        // Add to shopping cart
+        shoppingCart.contents.uids.push(uid);
+        shoppingCart.contents.titles.push(currentlySelected.titles.pop());
+        shoppingCart.contents.types.push(currentlySelected.type);
+        
+        // Remove option from list
+        for (var i = 0; i < element.options.length; i++) {
+            if (element.options[i].value == uid) {
+                element.remove(i);
+                break;
+            }
+        }
+    }
+    
+    // Then add display of shopping cart contents
+    drawShoppingCart();
+    
+}
+
+function removeFromList(event) {
+    if (event == null || event == undefined) return;
+    
+    var id = event.target.parentNode.id;
+    var uid = id.split("shoppingCartItem")[1];
+    // find index, remove from object
+    var indexInCart = shoppingCart.contents.uids.indexOf(uid);
+    var tempTitle = shoppingCart.contents.titles[indexInCart];
+    var cn = confirm("Are you sure you want to remove: "+tempTitle+"?");
+    if (cn == false) return;
+    
+    
+    shoppingCart.contents.uids.splice(indexInCart, 1);
+    var title = shoppingCart.contents.titles.splice(indexInCart, 1)[0];
+    var type = shoppingCart.contents.types.splice(indexInCart, 1)[0];
+    //Then replace element back into relevant list
+    // First set element
+        
+    var element;
+    switch (type){
+        case "Session":
+            element = ge("dbSessionInstancesList");
+            break;
+        case "Application":
+            element = ge("dbGamedataList");
+            break;
+        default:
+            // ???
+            break;
+    }
+    
+    var option = ce("option");
+    option.value = uid;
+    option.text = title;
+    element.add(option,null);
+    
+    
+    
+    // Lastly, refresh
+    drawShoppingCart();
+    }
+
+function drawShoppingCart() {
+        var scElement = ge("shoppingCartContent");
+        scElement.innerHTML = "";
+        for (var i = 0; i < shoppingCart.contents.uids.length; i++) {
+            var newLine = ce("div");
+            newLine.className = "shoppingCartItem";
+            newLine.id = "shoppingCartItem"+shoppingCart.contents.uids[i];
+            var icon = ce("image");
+            icon.src = "images/ui/DeleteIcon.gif";
+            icon.addEventListener("click", function(event){
+                // TODO: Actually write this function
+                removeFromList(event);
+            }, false);
+            var titleField = ce("text");
+            titleField.innerHTML = shoppingCart.contents.titles[i];
+            newLine.appendChild(icon);
+            newLine.appendChild(titleField);
+            scElement.appendChild(newLine);
+        }
+    
+        // reset type after empty
+        currentlySelected.type = null;
+    }
+    
+function configureDashboard() {
+    var data = JSON.stringify(shoppingCart);
+    var form = ce("form");
+    //changed to dashboardGraphSelection.php
+    form.action = "dashboardGraphSelection.php";
+    form.method = "POST";
+    var input = ce("input");
+    input.type = "hidden";
+    input.name = "selectedData";
+    input.value = data;
+    form.appendChild(input);
+    form.submit();
+}
Index: Dev/trunk/js/generalScripts.js
===================================================================
--- Dev/trunk/js/generalScripts.js	(revision 228)
+++ Dev/trunk/js/generalScripts.js	(revision 230)
@@ -208,5 +208,5 @@
             instance.ddMenuItem.style.visibility = "hidden";
         }
-            instance.Toggle();
+        instance.Toggle();
         
     }
@@ -244,6 +244,8 @@
         else{
             //Show the menu
-            instance.menuElement.style.visibility = "visible";
-            instance.parentButton.className = "down";
+            if (instance.menuElement) {
+                instance.menuElement.style.visibility = "visible";
+                instance.parentButton.className = "down";
+            }
             instance.visible = true;
         }
Index: Dev/trunk/js/questionEditorScripts.js
===================================================================
--- Dev/trunk/js/questionEditorScripts.js	(revision 228)
+++ Dev/trunk/js/questionEditorScripts.js	(revision 230)
@@ -23,141 +23,9 @@
 //////////////////////////
 
-//////////////////////
-/* CREATE FUNCTIONS */
-//////////////////////
-
-function createQuestionEditor() {
-    // Outer div
-    var editorElement = ce("div");
-    this.className = "smallFrame questionEditor";
-    editorElement.id = sequencer.state.selectedObject.uid;
-    // Header
-    var titleDiv = ce("div");
-    titleDiv.className = "smallTitle";
-    var numberDiv = ce("div");
-    numberDiv.className = "listNumber";
-    numberDiv.innerHTML = "4";
-    var nameSpan = ce("span");
-    nameSpan.innerHTML = "New question";
-    titleDiv.appendChild(numberDiv);
-    titleDiv.innerHTML += "Editing: ";
-    titleDiv.appendChild(nameSpan);
-    editorElement.appendChild(titleDiv);
-    
-    //Content area
-    var contentDiv = ce("div");
-    contentDiv.className = "content";
-    var bodyText = createNewElement("textarea", null, "qBodyTextField", "qBodyTextField", null);
-    bodyText.value = "Question body text goes here";
-    
-    
-    // The dynamic questionParams div, where all the control elements and inputs will be located
-    var questionParams = ce("div");
-    questionParams.className = "questionParams";
-    contentDiv.appendChild(bodyText);
-    var qIdentField = createNewElement("input", "text", "qIdentField", "questionParamField", null);
-    var qIdentField_lbl = createNewInputLabel("Question code:","qIdentField", "l");
-    questionParams.appendChild(qIdentField_lbl);
-    questionParams.appendChild(qIdentField);
-    
-    var qTypeField = createNewElement("select", null, "qTypeField", "questionParamField", null);
-    var qTypeField_lbl = createNewInputLabel("Answer type:","qTypeField", "l");
-    questionParams.appendChild(qTypeField_lbl);
-    questionParams.appendChild(qTypeField);
-    qTypeField.addEventListener("change", function(){
-        debugger;
-        selectAnswerType();
-    }, false);
-    // Add the select options. Do this in a block scope to prevent the o1 var from messing things up. 
-    // Also helps in structuring code.
-    {
-        var o1 = ce("option");
-        o1.value = null;
-        o1.text = "";
-        qTypeField.appendChild(o1);
-        
-        o1 = ce("option");
-        o1.value = "int";
-        o1.text = "Integer";
-        qTypeField.appendChild(o1);
-        
-        o1 = ce("option");
-        o1.value = "scale";
-        o1.text = "Scale";
-        qTypeField.appendChild(o1);
-        
-        o1 = ce("option");
-        o1.value = "choice";
-        o1.text = "Multiple choice";
-        qTypeField.appendChild(o1);
-        
-        o1 = ce("option");
-        o1.value = "text";
-        o1.text = "Text";
-        qTypeField.appendChild(o1);
-    }
-    
-    contentDiv.appendChild(questionParams);
-    editorElement.appendChild(contentDiv);
-    
-    // Controls bar
-    var controlsDiv = ce("div");
-    controlsDiv.className = "controls";
-    var btnDiscard = createNewElement("input", "button", "btnDiscard", null, "Discard");
-    var btnSave = createNewElement("input", "button", "btnSave", null, "Save");
-    controlsDiv.appendChild(btnDiscard);
-    controlsDiv.appendChild(btnSave);
-    btnSave.addEventListener("click", function(){
-        swapQuestionState(true);
-    }, false);
-    btnDiscard.addEventListener("click", function(){
-        swapQuestionState(false);
-    }, false);
-    editorElement.appendChild(controlsDiv);
-    
-    return editorElement;
-}
-
-function swapQuestionState(save) {
-    // Function that replaces a question display with the question editor, or vice versa.
-    if (sequencer.state.editing == false) {
-        // Start editing
-        sequencer.state.editing = true;
-        var questionElement = ge(sequencer.state.selectedObject.uid);
-        // test
-        var editor = new QuestionEditor();
-        editor.init();
-        // end test
-        //var editorElement = createQuestionEditor();
-        var content = ge("seqContentWrapper");
-        content.replaceChild(editor.element, questionElement);
-    }
-    else {
-        
-        if (save) {
-            if (save == true) {
-                alert("Saving shit yo!");
-            // User is done editing
-            // 1. Create the edited question in db (createObject.php), then set the proper properties (saveObject.php)
-            // 2. Revert back to question display
-            }
-            else {
-                // Anders discard gewoon alles en haal de question display weg.
-                ge("seqContentWrapper").removeChild(ge(sequencer.state.selectedObject.uid));
-            }
-        }
-    
-    }
-}
-
-
-//////////////////////////
-/* END CREATE FUNCTIONS */
-//////////////////////////
 
 var qUID, parentObjectUID, qName, qTag, qType, qAnswerLength;
 
 function selectAnswerType(){
-    var selectBox = document.getElementById("qTypeField");
+    var selectBox = document.getElementById("questionType");
     if (selectBox.value != undefined && selectBox.value != "") {
         qType = selectBox.value;
@@ -188,11 +56,4 @@
 
 function createNewElement(tag, type, id, cl, value) {
-    // This is a double of the ce() alias function in generalScripts.js. 
-    // It allows for more specific creation of elements on one line, 
-    // instead of 5 subsequent lines of code defining tag, id, class, value, etc...
-    // This is handy when doing creation-heavy operations such as adding inputs
-    //!!! Since this is defined in questionEditorScripts.js, it should only be used in this context.
-    //!!! Use ce() whenever possible, since it's included on every page and works faster.
-    
     var newElement = document.createElement(tag);
     if (type != undefined) newElement.type = type;
@@ -206,8 +67,7 @@
 }
 
-function createNewInputLabel(text, target, align) {
+function createNewInputLabel(text, target) {
     var newLabel = document.createElement("label");
     if (target) newLabel.setAttribute("for",target);
-    if (align) newLabel.className = "questionParamLabel "+align+"Align"; else newLabel.className="questionParamLabel";
     newLabel.innerHTML = text;
     return newLabel;
@@ -335,181 +195,2 @@
     alert(userText);
 }
-
-
-//TEST FUNCTIONS
-
-/*
- * These functions are an attempt at making editors class based, for easier organisation and parameter storage and access.
- * It prevents having to add more question-specific clutter to the sequencer object
- */
-
-function QuestionEditor() {
-    // Properties    
-    this.uid = null;
-    this.element = null;
-    this.paramsElement = null;
-    
-    // Basic functionality
-    this.setValues = function(arguments) {
-        // Query question information from database, then fill element fields with correct information.
-        
-    }
-    this.init = function() {
-        // Outer div
-        this.element = ce("div");
-        this.element.className = "smallFrame questionEditor";
-        this.element.id = sequencer.state.selectedObject.uid;
-        this.uid = sequencer.state.selectedObject.uid;
-        // Header
-        var titleDiv = ce("div");
-        titleDiv.className = "smallTitle";
-        var numberDiv = ce("div");
-        numberDiv.className = "listNumber";
-        numberDiv.innerHTML = "4";
-        var nameSpan = ce("span");
-        nameSpan.id = "qTitleField";
-        nameSpan.innerHTML = "New question";
-        titleDiv.appendChild(numberDiv);
-        titleDiv.innerHTML += "Editing: ";
-        titleDiv.appendChild(nameSpan);
-        this.element.appendChild(titleDiv);
-    
-        //Content area
-        var contentDiv = ce("div");
-        contentDiv.className = "content";
-        var bodyText = createNewElement("textarea", null, "qBodyTextField", "qBodyTextField", null);
-        bodyText.value = "Question body text goes here";
-    
-    
-        // The dynamic questionParams div, where all the control elements and inputs will be located
-        var questionParams = ce("div");
-        this.paramsElement = questionParams;
-        questionParams.className = "questionParams";
-        contentDiv.appendChild(bodyText);
-        var qIdentField = createNewElement("input", "text", "qIdentField", "questionParamField", null);
-        var qIdentField_lbl = createNewInputLabel("Question code:","qIdentField", "l");
-        questionParams.appendChild(qIdentField_lbl);
-        questionParams.appendChild(qIdentField);
-    
-        var qTypeField = createNewElement("select", null, "qTypeField", "questionParamField", null);
-        var qTypeField_lbl = createNewInputLabel("Answer type:","qTypeField", "l");
-        questionParams.appendChild(qTypeField_lbl);
-        questionParams.appendChild(qTypeField);
-        qTypeField.addEventListener("change", function(){
-            debugger;
-            selectAnswerType();
-        }, false);
-        // Add the select options. Do this in a block scope to prevent the o1 var from messing things up. 
-        // Also helps in structuring code.
-        {
-            var o1 = ce("option");
-            o1.value = null;
-            o1.text = "";
-            qTypeField.appendChild(o1);
-        
-            o1 = ce("option");
-            o1.value = "int";
-            o1.text = "Integer";
-            qTypeField.appendChild(o1);
-        
-            o1 = ce("option");
-            o1.value = "scale";
-            o1.text = "Scale";
-            qTypeField.appendChild(o1);
-        
-            o1 = ce("option");
-            o1.value = "choice";
-            o1.text = "Multiple choice";
-            qTypeField.appendChild(o1);
-        
-            o1 = ce("option");
-            o1.value = "text";
-            o1.text = "Text";
-            qTypeField.appendChild(o1);
-        }
-    
-        contentDiv.appendChild(questionParams);
-        this.element.appendChild(contentDiv);
-    
-        // Controls bar
-        var controlsDiv = ce("div");
-        controlsDiv.className = "controls";
-        var btnDiscard = createNewElement("input", "button", "btnDiscard", null, "Discard");
-        var btnSave = createNewElement("input", "button", "btnSave", null, "Save");
-        controlsDiv.appendChild(btnDiscard);
-        controlsDiv.appendChild(btnSave);
-        btnSave.addEventListener("click", function(){
-            swapQuestionState(true);
-        }, false);
-        btnDiscard.addEventListener("click", function(){
-            swapQuestionState(false);
-        }, false);
-        this.element.appendChild(controlsDiv);
-        var request = {
-            "uid": this.uid,
-            "type": "Question"
-        }
-        var requestString = "args="+JSON.stringify(request);
-        newAjaxRequest(requestString, "returnObjectDisplay.php", function(result){
-            // Fill in the element with the correct values
-            // Result is sent to setValues in object form already, perhaps better idea to send in string format and parse within the target method?
-            this.setValues(JSON.parse(result.responseText));
-        }, true);
-    }
-    this.submit = function() {
-        var request = {
-            "title": ge("qTitleField").value,
-            "type": ge("qTypeField").value
-        }
-        
-        newAjaxRequest(requestString, "createObject.php", function(result){
-            // Display a success message, or throw an error.
-        }, true);
-    }
-    
-    // Updating input fields
-    this.selectAnswertype = function () {
-        // Switch statement, call this.type_x where x is the relevant answer type.
-        // For all this.type_X funtions:
-        // Use the createNewElement and createNewInputLabel methods to add controls or input fields.
-        // Input field convention:  class = questionParamField, id = qTypeField / qScaleSize, etc...
-        // Input label class: "l" or "r" depending on alignment with respect to parent ("for") input element.
-        // Important: use the this.paramsElement to access the questionParams div!
-        // To fully make use of this class-based approach, the editor should be added to a global variable. This global variable should be removed on page unload!
-    }
-    this.type_Scale = function () {
-        
-    }
-    this.type_Integer = function () {
-        
-    }
-    this.type_Text = function () {
-        
-    }
-    this.type_Choice = function() {
-        
-    }
-    
-}
-
-function newEditor() {
-    // Get variables, ofc not null...
-    var arguments = null;
-    var editor = new QuestionEditor(arguments);
-    editor.setValues(arguments);
-    ge("seqContentWrapper").appendChild(editor.element);
-// Etc. We can put the switchModes() command in here as well, I'd say...
-// Or should that be in the QuestionEditor class? That's probably better, since it has direct access to all the internal variables.
-}
-
-function startEditingQuestion(uid) {
-    if (sequencer.state.editing == true) return;
-    
-    var element = ge(uid);
-    var editor = new QuestionEditor();
-    var newElement = editor.createElement();
-    // Query parameters
-    editor.setValues(parameters);
-    element.parentNode.replaceChild(newElement, element);
-    sequencer.state.editing = true;
-}
Index: Dev/trunk/js/sequencerScripts.js
===================================================================
--- Dev/trunk/js/sequencerScripts.js	(revision 228)
+++ Dev/trunk/js/sequencerScripts.js	(revision 230)
@@ -73,5 +73,5 @@
         // settings fields first
         initSequencer();
-        
+        debugger;
         switch (sequencer.settings.content.contentType.toLowerCase()) {
             case "session":
@@ -414,5 +414,4 @@
         
     newAjaxRequest(c, u, function(result) {
-        debugger;
         sequencer.survey.questions.uids.push(removeNL(result.responseText));
         sequencer.survey.questions.upToDate.push(false);
@@ -566,7 +565,5 @@
         removeButton.className = "smallButton";
         editButton.addEventListener("click", function(e){
-            debugger;
-            selectStep(this.parentNode.parentNode.id);
-            if (sequencer.state.editing != true) swapQuestionState();
+            alert('Editing not yet supported!');
         }, false);
         removeButton.addEventListener("click", function(e){
@@ -632,8 +629,4 @@
 }
 
-
-
-
-
 // general functions and user actions
 
@@ -675,5 +668,5 @@
                 break;
         }
-        (type != "Question") ? ajaxInfoRequest(uid, ge("infoPanelContent"), type) : type=type /*This does nothing*/;
+        (type != "survey") ? ajaxInfoRequest(uid, ge("infoPanelContent"), type) : type=type /*This does nothing*/;
         sequencer.state.selectedObject.uid = uid;
         sequencer.state.selectedObject.index = null;  //Don't know how to do this yet.
