| rev | 
   line source | 
| 
jbe@945
 | 
     1 jsProtect(function() {
 | 
| 
bsw@519
 | 
     2   voting_text_approval_single               = "Approval"
 | 
| 
bsw@519
 | 
     3   voting_text_approval_multi                = "Approval"
 | 
| 
bsw@519
 | 
     4   voting_text_first_preference_single       = "Approval (first preference)"
 | 
| 
bsw@519
 | 
     5   voting_text_first_preference_multi        = "Approval (first preference)"
 | 
| 
bsw@519
 | 
     6   voting_text_second_preference_single      = "Approval (second preference)"
 | 
| 
bsw@519
 | 
     7   voting_text_second_preference_multi       = "Approval (second preference)"
 | 
| 
bsw@519
 | 
     8   voting_text_third_preference_single       = "Approval (third preference)"
 | 
| 
bsw@519
 | 
     9   voting_text_third_preference_multi        = "Approval (third preference)"
 | 
| 
bsw@519
 | 
    10   voting_text_numeric_preference_single     = "Approval (#th preference)"
 | 
| 
bsw@519
 | 
    11   voting_text_numeric_preference_multi      = "Approval (#th preference)"
 | 
| 
bsw@519
 | 
    12   voting_text_abstention_single             = "Abstention"
 | 
| 
bsw@519
 | 
    13   voting_text_abstention_multi              = "Abstention"
 | 
| 
bsw@519
 | 
    14   voting_text_disapproval_above_one_single  = "Disapproval (prefer to lower block)"
 | 
| 
bsw@519
 | 
    15   voting_text_disapproval_above_one_multi   = "Disapproval (prefer to lower block)"
 | 
| 
bsw@519
 | 
    16   voting_text_disapproval_above_many_single = "Disapproval (prefer to lower blocks)"
 | 
| 
bsw@519
 | 
    17   voting_text_disapproval_above_many_multi  = "Disapproval (prefer to lower blocks)"
 | 
| 
bsw@519
 | 
    18   voting_text_disapproval_above_last_single = "Disapproval (prefer to last block)"
 | 
| 
bsw@519
 | 
    19   voting_text_disapproval_above_last_multi  = "Disapproval (prefer to last block)"
 | 
| 
bsw@519
 | 
    20   voting_text_disapproval_single            = "Disapproval"
 | 
| 
bsw@519
 | 
    21   voting_text_disapproval_multi             = "Disapproval"
 | 
| 
bsw/jbe@19
 | 
    22 
 | 
| 
bsw@519
 | 
    23   function voting_setCategoryHeadings() {
 | 
| 
bsw@519
 | 
    24     var approvalCount = 0;
 | 
| 
bsw@519
 | 
    25     var disapprovalCount = 0;
 | 
| 
bsw@519
 | 
    26     var sections = document.getElementById("voting").childNodes;
 | 
| 
bsw@519
 | 
    27     for (var i=0; i<sections.length; i++) {
 | 
| 
bsw@519
 | 
    28       var section = sections[i];
 | 
| 
bsw@519
 | 
    29       if (section.className == "approval")       approvalCount++;
 | 
| 
bsw@519
 | 
    30       if (section.className == "disapproval") disapprovalCount++;
 | 
| 
bsw/jbe@5
 | 
    31     }
 | 
| 
bsw@519
 | 
    32     var approvalIndex = 0;
 | 
| 
bsw@519
 | 
    33     var disapprovalIndex = 0;
 | 
| 
bsw/jbe@5
 | 
    34     for (var i=0; i<sections.length; i++) {
 | 
| 
bsw/jbe@5
 | 
    35       var section = sections[i];
 | 
| 
bsw/jbe@5
 | 
    36       if (
 | 
| 
bsw/jbe@5
 | 
    37         section.className == "approval" ||
 | 
| 
bsw/jbe@5
 | 
    38         section.className == "abstention" ||
 | 
| 
bsw/jbe@5
 | 
    39         section.className == "disapproval"
 | 
| 
bsw/jbe@5
 | 
    40       ) {
 | 
| 
bsw@519
 | 
    41         var setHeading = function(heading) {
 | 
| 
bsw@519
 | 
    42           var headingNodes = section.childNodes;
 | 
| 
bsw@519
 | 
    43           for (var j=0; j<headingNodes.length; j++) {
 | 
| 
bsw@519
 | 
    44             var headingNode = headingNodes[j];
 | 
| 
bsw@519
 | 
    45             if (headingNode.className == "cathead") {
 | 
| 
bsw@519
 | 
    46               headingNode.textContent = heading;
 | 
| 
bsw/jbe@19
 | 
    47             }
 | 
| 
bsw/jbe@5
 | 
    48           }
 | 
| 
bsw@519
 | 
    49         }
 | 
| 
bsw@519
 | 
    50         var count = 0;
 | 
| 
bsw@519
 | 
    51         var entries = section.childNodes;
 | 
| 
bsw@519
 | 
    52         for (var j=0; j<entries.length; j++) {
 | 
| 
bsw@519
 | 
    53           var entry = entries[j];
 | 
| 
bsw@519
 | 
    54           if (entry.className == "movable") count++;
 | 
| 
bsw@519
 | 
    55         }
 | 
| 
bsw@519
 | 
    56         if (section.className == "approval") {
 | 
| 
bsw@519
 | 
    57           if (approvalCount > 1) {
 | 
| 
bsw@519
 | 
    58             if (approvalIndex == 0) {
 | 
| 
bsw@519
 | 
    59               if (count == 1) setHeading(voting_text_first_preference_single);
 | 
| 
bsw@519
 | 
    60               else setHeading(voting_text_first_preference_multi);
 | 
| 
bsw@519
 | 
    61             } else if (approvalIndex == 1) {
 | 
| 
bsw@519
 | 
    62               if (count == 1) setHeading(voting_text_second_preference_single);
 | 
| 
bsw@519
 | 
    63               else setHeading(voting_text_second_preference_multi);
 | 
| 
bsw@519
 | 
    64             } else if (approvalIndex == 2) {
 | 
| 
bsw@519
 | 
    65               if (count == 1) setHeading(voting_text_third_preference_single);
 | 
| 
bsw@519
 | 
    66               else setHeading(voting_text_third_preference_multi);
 | 
| 
bsw@519
 | 
    67             } else {
 | 
| 
bsw@519
 | 
    68               var text;
 | 
| 
bsw@519
 | 
    69               if (count == 1) text = voting_text_numeric_preference_single;
 | 
| 
bsw@519
 | 
    70               else text = voting_text_numeric_preference_multi;
 | 
| 
bsw@519
 | 
    71               text = text.replace(/#/, "" + (approvalIndex + 1))
 | 
| 
bsw@519
 | 
    72               setHeading(text);
 | 
| 
bsw@519
 | 
    73             }
 | 
| 
bsw@519
 | 
    74           } else {
 | 
| 
bsw@519
 | 
    75             if (count == 1) setHeading(voting_text_approval_single);
 | 
| 
bsw@519
 | 
    76             else setHeading(voting_text_approval_multi);
 | 
| 
bsw/jbe@19
 | 
    77           }
 | 
| 
bsw@519
 | 
    78           approvalIndex++;
 | 
| 
bsw@519
 | 
    79         } else if (section.className == "abstention") {
 | 
| 
bsw@519
 | 
    80           if (count == 1) setHeading(voting_text_abstention_single);
 | 
| 
bsw@519
 | 
    81           else setHeading(voting_text_abstention_multi);
 | 
| 
bsw@519
 | 
    82         } else if (section.className == "disapproval") {
 | 
| 
bsw@519
 | 
    83           if (disapprovalCount > disapprovalIndex + 2) {
 | 
| 
bsw@519
 | 
    84             if (count == 1) setHeading(voting_text_disapproval_above_many_single);
 | 
| 
bsw@519
 | 
    85             else setHeading(voting_text_disapproval_above_many_multi);
 | 
| 
bsw@519
 | 
    86           } else if (disapprovalCount == 2 && disapprovalIndex == 0) {
 | 
| 
bsw@519
 | 
    87             if (count == 1) setHeading(voting_text_disapproval_above_one_single);
 | 
| 
bsw@519
 | 
    88             else setHeading(voting_text_disapproval_above_one_multi);
 | 
| 
bsw@519
 | 
    89           } else if (disapprovalIndex == disapprovalCount - 2) {
 | 
| 
bsw@519
 | 
    90             if (count == 1) setHeading(voting_text_disapproval_above_last_single);
 | 
| 
bsw@519
 | 
    91             else setHeading(voting_text_disapproval_above_last_multi);
 | 
| 
bsw@519
 | 
    92           } else {
 | 
| 
bsw@519
 | 
    93             if (count == 1) setHeading(voting_text_disapproval_single);
 | 
| 
bsw@519
 | 
    94             else setHeading(voting_text_disapproval_multi);
 | 
| 
bsw@519
 | 
    95           }
 | 
| 
bsw@519
 | 
    96           disapprovalIndex++;
 | 
| 
bsw/jbe@5
 | 
    97         }
 | 
| 
bsw/jbe@5
 | 
    98       }
 | 
| 
bsw/jbe@5
 | 
    99     }
 | 
| 
bsw@519
 | 
   100   }
 | 
| 
jbe@946
 | 
   101   function voting_calculateScoring() {
 | 
| 
jbe@946
 | 
   102     var mainDiv = document.getElementById("voting");
 | 
| 
jbe@946
 | 
   103     var form = document.getElementById("voting_form");
 | 
| 
jbe@946
 | 
   104     var scoringString = "";
 | 
| 
jbe@946
 | 
   105     var approvalCount = 0;
 | 
| 
jbe@946
 | 
   106     var disapprovalCount = 0;
 | 
| 
jbe@946
 | 
   107     var sections = mainDiv.childNodes;
 | 
| 
jbe@946
 | 
   108     for (var j=0; j<sections.length; j++) {
 | 
| 
jbe@946
 | 
   109       var section = sections[j];
 | 
| 
jbe@946
 | 
   110       if (section.className == "approval")       approvalCount++;
 | 
| 
jbe@946
 | 
   111       if (section.className == "disapproval") disapprovalCount++;
 | 
| 
jbe@946
 | 
   112     }
 | 
| 
jbe@946
 | 
   113     var approvalIndex = 0;
 | 
| 
jbe@946
 | 
   114     var disapprovalIndex = 0;
 | 
| 
jbe@946
 | 
   115     for (var j=0; j<sections.length; j++) {
 | 
| 
jbe@946
 | 
   116       var section = sections[j];
 | 
| 
jbe@946
 | 
   117       if (
 | 
| 
jbe@946
 | 
   118         section.className == "approval"    ||
 | 
| 
jbe@946
 | 
   119         section.className == "abstention"  ||
 | 
| 
jbe@946
 | 
   120         section.className == "disapproval"
 | 
| 
jbe@946
 | 
   121       ) {
 | 
| 
jbe@946
 | 
   122         var score;
 | 
| 
jbe@946
 | 
   123         if (section.className == "approval") {
 | 
| 
jbe@946
 | 
   124           score = approvalCount - approvalIndex;
 | 
| 
jbe@946
 | 
   125           approvalIndex++;
 | 
| 
jbe@946
 | 
   126         } else if (section.className == "abstention") {
 | 
| 
jbe@946
 | 
   127           score = 0;
 | 
| 
jbe@946
 | 
   128         } else if (section.className == "disapproval") {
 | 
| 
jbe@946
 | 
   129           score = -1 - disapprovalIndex;
 | 
| 
jbe@946
 | 
   130           disapprovalIndex++;
 | 
| 
jbe@946
 | 
   131         }
 | 
| 
jbe@946
 | 
   132         var entries = section.childNodes;
 | 
| 
jbe@946
 | 
   133         for (var k=0; k<entries.length; k++) {
 | 
| 
jbe@946
 | 
   134           var entry = entries[k];
 | 
| 
jbe@946
 | 
   135           if (entry.className == "movable") {
 | 
| 
jbe@946
 | 
   136             var id = entry.id.match(/[0-9]+/);
 | 
| 
jbe@946
 | 
   137             var field = document.createElement("input");
 | 
| 
jbe@946
 | 
   138             scoringString += id + ":" + score + ";";
 | 
| 
jbe@946
 | 
   139           }
 | 
| 
jbe@946
 | 
   140         }
 | 
| 
jbe@946
 | 
   141       }
 | 
| 
jbe@946
 | 
   142     }
 | 
| 
jbe@946
 | 
   143     var fields = form.childNodes;
 | 
| 
jbe@946
 | 
   144     for (var j=0; j<fields.length; j++) {
 | 
| 
jbe@946
 | 
   145       var field = fields[j];
 | 
| 
jbe@946
 | 
   146       if (field.name == "scoring") {
 | 
| 
jbe@946
 | 
   147         field.setAttribute("value", scoringString);
 | 
| 
jbe@946
 | 
   148         return;
 | 
| 
jbe@946
 | 
   149       }
 | 
| 
jbe@946
 | 
   150     }
 | 
| 
jbe@946
 | 
   151     throw('Hidden input field named "scoring" not found.');
 | 
| 
jbe@946
 | 
   152   }
 | 
| 
bsw@519
 | 
   153   function voting_move(element, up, dropX, dropY) {
 | 
| 
jbe@945
 | 
   154     jsProtect(function() {
 | 
| 
jbe@945
 | 
   155       if (typeof(element) == "string") element = document.getElementById(element);
 | 
| 
jbe@945
 | 
   156       var mouse = (up == null);
 | 
| 
jbe@945
 | 
   157       var oldParent = element.parentNode;
 | 
| 
jbe@945
 | 
   158       if (mouse) var centerY = dropY + element.clientHeight / 2;
 | 
| 
jbe@945
 | 
   159       var approvalCount = 0;
 | 
| 
jbe@945
 | 
   160       var disapprovalCount = 0;
 | 
| 
jbe@945
 | 
   161       var mainDiv = document.getElementById("voting");
 | 
| 
jbe@945
 | 
   162       var sections = mainDiv.childNodes;
 | 
| 
bsw/jbe@19
 | 
   163       for (var i=0; i<sections.length; i++) {
 | 
| 
bsw/jbe@19
 | 
   164         var section = sections[i];
 | 
| 
jbe@945
 | 
   165         if (section.className == "approval")       approvalCount++;
 | 
| 
jbe@945
 | 
   166         if (section.className == "disapproval") disapprovalCount++;
 | 
| 
jbe@945
 | 
   167       }
 | 
| 
jbe@945
 | 
   168       if (mouse) {
 | 
| 
jbe@945
 | 
   169         for (var i=0; i<sections.length; i++) {
 | 
| 
jbe@945
 | 
   170           var section = sections[i];
 | 
| 
bsw@519
 | 
   171           if (
 | 
| 
jbe@945
 | 
   172             section.className == "approval" ||
 | 
| 
jbe@945
 | 
   173             section.className == "abstention" ||
 | 
| 
jbe@945
 | 
   174             section.className == "disapproval"
 | 
| 
bsw@519
 | 
   175           ) {
 | 
| 
jbe@945
 | 
   176             if (
 | 
| 
jbe@945
 | 
   177               centerY >= section.offsetTop &&
 | 
| 
jbe@945
 | 
   178               centerY <  section.offsetTop + section.clientHeight
 | 
| 
jbe@945
 | 
   179             ) {
 | 
| 
jbe@945
 | 
   180               var entries = section.childNodes;
 | 
| 
jbe@945
 | 
   181               for (var j=0; j<entries.length; j++) {
 | 
| 
jbe@945
 | 
   182                 var entry = entries[j];
 | 
| 
jbe@945
 | 
   183                 if (entry.className == "movable") {
 | 
| 
jbe@945
 | 
   184                   if (centerY < entry.offsetTop + entry.clientHeight / 2) {
 | 
| 
jbe@945
 | 
   185                     if (element != entry) {
 | 
| 
jbe@945
 | 
   186                       oldParent.removeChild(element);
 | 
| 
jbe@945
 | 
   187                       section.insertBefore(element, entry);
 | 
| 
jbe@945
 | 
   188                     }
 | 
| 
jbe@945
 | 
   189                     break;
 | 
| 
bsw@519
 | 
   190                   }
 | 
| 
bsw@519
 | 
   191                 }
 | 
| 
bsw@519
 | 
   192               }
 | 
| 
jbe@945
 | 
   193               if (j == entries.length) {
 | 
| 
jbe@945
 | 
   194                 oldParent.removeChild(element);
 | 
| 
jbe@945
 | 
   195                 section.appendChild(element);
 | 
| 
jbe@945
 | 
   196               }
 | 
| 
jbe@945
 | 
   197               break;
 | 
| 
bsw/jbe@19
 | 
   198             }
 | 
| 
bsw/jbe@19
 | 
   199           }
 | 
| 
bsw/jbe@19
 | 
   200         }
 | 
| 
jbe@945
 | 
   201         if (i == sections.length) {
 | 
| 
jbe@945
 | 
   202           var newSection = document.createElement("div");
 | 
| 
jbe@945
 | 
   203           var cathead = document.createElement("div");
 | 
| 
jbe@945
 | 
   204           cathead.setAttribute("class", "cathead");
 | 
| 
jbe@945
 | 
   205           newSection.appendChild(cathead);
 | 
| 
jbe@945
 | 
   206           for (var i=0; i<sections.length; i++) {
 | 
| 
jbe@945
 | 
   207             var section = sections[i];
 | 
| 
jbe@945
 | 
   208             if (
 | 
| 
jbe@945
 | 
   209               section.className == "approval" ||
 | 
| 
jbe@945
 | 
   210               section.className == "abstention" ||
 | 
| 
jbe@945
 | 
   211               section.className == "disapproval"
 | 
| 
jbe@945
 | 
   212             ) {
 | 
| 
jbe@945
 | 
   213               if (centerY < section.offsetTop + section.clientHeight / 2) {
 | 
| 
jbe@945
 | 
   214                 if (section.className == "disapproval") {
 | 
| 
jbe@945
 | 
   215                   newSection.setAttribute("class", "disapproval");
 | 
| 
jbe@945
 | 
   216                   disapprovalCount++;
 | 
| 
jbe@945
 | 
   217                 } else {
 | 
| 
jbe@945
 | 
   218                   newSection.setAttribute("class", "approval");
 | 
| 
jbe@945
 | 
   219                   approvalCount++;
 | 
| 
jbe@945
 | 
   220                 }
 | 
| 
jbe@945
 | 
   221                 mainDiv.insertBefore(newSection, section);
 | 
| 
jbe@945
 | 
   222                 break;
 | 
| 
jbe@945
 | 
   223               }
 | 
| 
jbe@945
 | 
   224             }
 | 
| 
jbe@945
 | 
   225           }
 | 
| 
jbe@945
 | 
   226           if (i == sections.length) {
 | 
| 
jbe@945
 | 
   227             newSection.setAttribute("class", "disapproval");
 | 
| 
jbe@945
 | 
   228             disapprovalCount++;
 | 
| 
jbe@945
 | 
   229             mainDiv.appendChild(newSection);
 | 
| 
jbe@945
 | 
   230           }
 | 
| 
jbe@945
 | 
   231           oldParent.removeChild(element);
 | 
| 
jbe@945
 | 
   232           newSection.appendChild(element);
 | 
| 
jbe@945
 | 
   233         }
 | 
| 
jbe@945
 | 
   234       } else {
 | 
| 
jbe@945
 | 
   235         var oldFound = false;
 | 
| 
jbe@945
 | 
   236         var prevSection = null;
 | 
| 
jbe@945
 | 
   237         var nextSection = null;
 | 
| 
bsw@519
 | 
   238         for (var i=0; i<sections.length; i++) {
 | 
| 
bsw@519
 | 
   239           var section = sections[i];
 | 
| 
bsw@519
 | 
   240           if (
 | 
| 
bsw@519
 | 
   241             section.className == "approval" ||
 | 
| 
bsw@519
 | 
   242             section.className == "abstention" ||
 | 
| 
bsw@519
 | 
   243             section.className == "disapproval"
 | 
| 
bsw@519
 | 
   244           ) {
 | 
| 
jbe@945
 | 
   245             if (oldFound) {
 | 
| 
jbe@945
 | 
   246               nextSection = section;
 | 
| 
jbe@945
 | 
   247               break;
 | 
| 
jbe@945
 | 
   248             } else if (section == oldParent) {
 | 
| 
jbe@945
 | 
   249               oldFound = true;
 | 
| 
jbe@945
 | 
   250             } else {
 | 
| 
jbe@945
 | 
   251               prevSection = section;
 | 
| 
jbe@945
 | 
   252             }
 | 
| 
jbe@945
 | 
   253           }
 | 
| 
jbe@945
 | 
   254         }
 | 
| 
jbe@945
 | 
   255         var create;
 | 
| 
jbe@945
 | 
   256         if (oldParent.className == "abstention") {
 | 
| 
jbe@945
 | 
   257           create = true;
 | 
| 
jbe@945
 | 
   258         } else {
 | 
| 
jbe@945
 | 
   259           create = false;
 | 
| 
jbe@945
 | 
   260           for (var i=0; i<oldParent.childNodes.length; i++) {
 | 
| 
jbe@945
 | 
   261             var entry = oldParent.childNodes[i];
 | 
| 
jbe@945
 | 
   262             if (entry.className == "movable") {
 | 
| 
jbe@945
 | 
   263               if (entry != element) {
 | 
| 
jbe@945
 | 
   264                 create = true;
 | 
| 
jbe@945
 | 
   265                 break;
 | 
| 
bsw@519
 | 
   266               }
 | 
| 
bsw@519
 | 
   267             }
 | 
| 
bsw@519
 | 
   268           }
 | 
| 
bsw@519
 | 
   269         }
 | 
| 
jbe@945
 | 
   270         var newSection;
 | 
| 
jbe@945
 | 
   271         if (create) {
 | 
| 
jbe@945
 | 
   272           newSection = document.createElement("div");
 | 
| 
jbe@945
 | 
   273           var cathead = document.createElement("div");
 | 
| 
jbe@945
 | 
   274           cathead.setAttribute("class", "cathead");
 | 
| 
jbe@945
 | 
   275           newSection.appendChild(cathead);
 | 
| 
jbe@945
 | 
   276           if (
 | 
| 
jbe@945
 | 
   277             oldParent.className == "approval" ||
 | 
| 
jbe@945
 | 
   278             (oldParent.className == "abstention" && up)
 | 
| 
jbe@945
 | 
   279           ) {
 | 
| 
jbe@945
 | 
   280             newSection.setAttribute("class", "approval");
 | 
| 
jbe@945
 | 
   281             approvalCount++;
 | 
| 
jbe@945
 | 
   282           } else {
 | 
| 
jbe@945
 | 
   283             newSection.setAttribute("class", "disapproval");
 | 
| 
jbe@945
 | 
   284             disapprovalCount++;
 | 
| 
jbe@945
 | 
   285           }
 | 
| 
jbe@945
 | 
   286           if (up) {
 | 
| 
jbe@945
 | 
   287             mainDiv.insertBefore(newSection, oldParent);
 | 
| 
jbe@945
 | 
   288           } else {
 | 
| 
jbe@945
 | 
   289             if (nextSection) mainDiv.insertBefore(newSection, nextSection);
 | 
| 
jbe@945
 | 
   290             else mainDiv.appendChild(newSection);
 | 
| 
jbe@945
 | 
   291           }
 | 
| 
jbe@945
 | 
   292         } else {
 | 
| 
jbe@945
 | 
   293           if (up) newSection = prevSection;
 | 
| 
jbe@945
 | 
   294           else newSection = nextSection;
 | 
| 
bsw@519
 | 
   295         }
 | 
| 
jbe@945
 | 
   296         if (newSection) {
 | 
| 
jbe@945
 | 
   297           oldParent.removeChild(element);
 | 
| 
jbe@945
 | 
   298           if (create || up) {
 | 
| 
jbe@945
 | 
   299             newSection.appendChild(element);
 | 
| 
bsw@519
 | 
   300           } else {
 | 
| 
jbe@945
 | 
   301             var inserted = false;
 | 
| 
jbe@945
 | 
   302             for (var i=0; i<newSection.childNodes.length; i++) {
 | 
| 
jbe@945
 | 
   303               var entry = newSection.childNodes[i];
 | 
| 
jbe@945
 | 
   304               if (entry.className == "movable") {
 | 
| 
jbe@945
 | 
   305                 newSection.insertBefore(element, entry);
 | 
| 
jbe@945
 | 
   306                 inserted = true;
 | 
| 
jbe@945
 | 
   307                 break;
 | 
| 
jbe@945
 | 
   308               }
 | 
| 
bsw@519
 | 
   309             }
 | 
| 
jbe@945
 | 
   310             if (!inserted) newSection.appendChild(element);
 | 
| 
bsw/jbe@19
 | 
   311           }
 | 
| 
bsw/jbe@19
 | 
   312         }
 | 
| 
bsw/jbe@19
 | 
   313       }
 | 
| 
jbe@945
 | 
   314       // sections = mainDiv.childNodes;
 | 
| 
jbe@945
 | 
   315       for (i=0; i<sections.length; i++) {
 | 
| 
jbe@945
 | 
   316         var section = sections[i];
 | 
| 
bsw@519
 | 
   317         if (
 | 
| 
jbe@945
 | 
   318           (section.className == "approval"    &&    approvalCount > 1) ||
 | 
| 
jbe@945
 | 
   319           (section.className == "disapproval" && disapprovalCount > 1)
 | 
| 
bsw@519
 | 
   320         ) {
 | 
| 
jbe@945
 | 
   321           var entries = section.childNodes;
 | 
| 
jbe@945
 | 
   322           for (var j=0; j<entries.length; j++) {
 | 
| 
jbe@945
 | 
   323             var entry = entries[j];
 | 
| 
jbe@945
 | 
   324             if (entry.className == "movable") break;
 | 
| 
bsw@519
 | 
   325           }
 | 
| 
jbe@945
 | 
   326           if (j == entries.length) {
 | 
| 
jbe@945
 | 
   327             section.parentNode.removeChild(section);
 | 
| 
jbe@945
 | 
   328           }
 | 
| 
bsw@519
 | 
   329         }
 | 
| 
bsw@519
 | 
   330       }
 | 
| 
jbe@945
 | 
   331       voting_setCategoryHeadings();
 | 
| 
jbe@946
 | 
   332       voting_calculateScoring();
 | 
| 
jbe@945
 | 
   333     });
 | 
| 
bsw/jbe@5
 | 
   334   }
 | 
| 
jbe@948
 | 
   335   window.elementDropped = function(element, dropX, dropY) {
 | 
| 
bsw@519
 | 
   336     voting_move(element, null, dropX, dropY);
 | 
| 
bsw/jbe@5
 | 
   337   }
 | 
| 
bsw@519
 | 
   338   window.addEventListener("load", function(event) {
 | 
| 
jbe@945
 | 
   339     jsProtect(function() {
 | 
| 
jbe@945
 | 
   340       voting_setCategoryHeadings();
 | 
| 
jbe@949
 | 
   341       voting_calculateScoring();  // checks if script works fine
 | 
| 
jbe@945
 | 
   342     });
 | 
| 
bsw@519
 | 
   343   }, false);
 | 
| 
jbe@947
 | 
   344   window.voting_moveUp = function(element) {
 | 
| 
bsw@519
 | 
   345     return voting_move(element, true);
 | 
| 
bsw/jbe@5
 | 
   346   }
 | 
| 
jbe@947
 | 
   347   window.voting_moveDown = function(element) {
 | 
| 
bsw@519
 | 
   348     return voting_move(element, false);
 | 
| 
bsw@519
 | 
   349   }
 | 
| 
jbe@945
 | 
   350 });
 |