/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by - filename.js -
 */

/* - clouseau_trigger.js - */
// http://cdc.coursenligne.be/portal_javascripts/clouseau_trigger.js?original=1
function showClouseau(context){var footer=document.getElementById("region-content").nextSibling;var wrapper=document.getElementById("region-content").parentNode;var div=document.createElement("div");var iframe=document.createElement("iframe");var existing=document.getElementById("clouseau_iframe");if(existing){wrapper.removeChild(existing)} else{div.id="clouseau_iframe";iframe.src="clouseau_minimal?context="+context;iframe.style.width="100%";iframe.style.height="800px";div.appendChild(iframe);wrapper.insertBefore(div,footer);wrapper.focus()}}

/* - explorer.js - */
if (typeof(kukit) != 'undefined') {
    kukit.actionsGlobalRegistry.register("explorer-updatecookies", function(oper) {
        oper.evaluateParameters(['portlethash'], {}, 'explorer-updatecookies action');
        var portlethash = oper.parms.portlethash;
        var nodes = cssQuery("#portletwrapper-"+portlethash+" li.navTreeFolderish");
        var uids = [];
        for (var i=0; i<nodes.length; i++) {
            var uid = nodes[i].className.match(/\bnode-(.+?)\b/)[1];
            var toggles = cssQuery("#portletwrapper-"+portlethash+" li.node-"+uid+" > span.expandedNode");
            if (toggles.length > 0) {
                if (!hasClassName(toggles[0], 'showChildren')) {
                    uids[uids.length] = uid;
                }
            };
        };
        var cookie = uids.join('|');
        console.log(cookie);
        createCookie('expanded-'+portlethash, cookie);
    });
    kukit.commandsGlobalRegistry.registerFromAction('explorer-updatecookies',
        kukit.cr.makeSelectorCommand);
    kukit.actionsGlobalRegistry.register("explorer-togglechilds", function(oper) {
        oper.evaluateParameters(['uid'], {}, 'explorer-togglechilds action');
        var uid = oper.parms.uid;
        var uls = cssQuery("li.node-"+uid+" > ul");
        if (uls.length > 0) {
            if (hasClassName(uls[0], 'hideChildren')) {
                removeClassName(uls[0], 'hideChildren');
            } else {
                addClassName(uls[0], 'hideChildren');
            };
        };
    });
    kukit.commandsGlobalRegistry.registerFromAction('explorer-togglechilds',
        kukit.cr.makeSelectorCommand);
};


/* - datagridwidget.js - */
// http://cdc.coursenligne.be/portal_javascripts/datagridwidget.js?original=1
dataGridFieldFunctions=new Object()
dataGridFieldFunctions.getInputOrSelect=function(node){var inputs=node.getElementsByTagName("input");if(inputs.length>0){return inputs[0]}
var selects=node.getElementsByTagName("select");if(selects.length>0){return selects[0]}
return null}
dataGridFieldFunctions.getWidgetRows=function(currnode){tbody=this.getParentElementById(currnode,"datagridwidget-tbody");return this.getRows(tbody)}
dataGridFieldFunctions.getRows=function(tbody){var rows=new Array()
child=tbody.firstChild;while(child!=null){if(child.tagName!=null){if(child.tagName.toLowerCase()=="tr"){rows=rows.concat(child)}}
child=child.nextSibling}
return rows}
dataGridFieldFunctions.autoInsertRow=function(e){var currnode=window.event?window.event.srcElement:e.currentTarget;var tbody=this.getParentElement(currnode,"TBODY");var rows=this.getRows(tbody);var lastRow=rows[rows.length-1];var thisRow=this.getParentElementById(currnode,"datagridwidget-row");if(rows.length-1==(thisRow.rowIndex)){var newtr=this.createNewRow(lastRow);lastRow.parentNode.insertBefore(newtr,lastRow);this.updateOrderIndex(tbody)}}
dataGridFieldFunctions.addRowAfter=function(currnode){var tbody=this.getParentElementById(currnode,"datagridwidget-tbody");var thisRow=this.getParentElementById(currnode,"datagridwidget-row");var newtr=this.createNewRow(thisRow);thisRow.parentNode.insertBefore(newtr,thisRow);this.updateOrderIndex(tbody)}
dataGridFieldFunctions.addRow=function(id){var tbody=document.getElementById("datagridwidget-tbody-"+id);var rows=this.getRows(tbody);var lastRow=rows[rows.length-1];var oldRows=rows.length;var newtr=this.createNewRow(lastRow);newNode=lastRow.parentNode.insertBefore(newtr,lastRow);this.updateOrderIndex(tbody)}
dataGridFieldFunctions.createNewRow=function(tr){var tbody=this.getParentElementById(tr,"datagridwidget-tbody");var rows=this.getRows(tbody);var lastRow=rows[rows.length-1];var newtr=document.createElement("tr");newtr.setAttribute("id","datagridwidget-row");newtr.setAttribute("class","datagridwidget-row");child=lastRow.firstChild;while(child!=null){newchild=child.cloneNode(true);newtr.appendChild(newchild);child=child.nextSibling}
return newtr}
dataGridFieldFunctions.removeFieldRow=function(node){var row=this.getParentElementById(node,'datagridwidget-row');var tbody=this.getParentElementById(node,'datagridwidget-tbody');tbody.removeChild(row)}
dataGridFieldFunctions.moveRowDown=function(currnode){var tbody=this.getParentElementById(currnode,"datagridwidget-tbody");var rows=this.getWidgetRows(currnode);var row=this.getParentElementById(currnode,"datagridwidget-row");if(row==null){alert("Couldn't find DataGridWidget row");return}
var idx=null
for(var t=0;t<rows.length;t++){if(rows[t]==row){idx=t;break}}
if(idx==null)
return;if(idx+2==rows.length){var nextRow=rows.item[0]
this.shiftRow(row,nextRow)} else{var nextRow=rows[idx+1]
this.shiftRow(nextRow,row)}
this.updateOrderIndex(tbody)}
dataGridFieldFunctions.moveRowUp=function(currnode){var tbody=this.getParentElementById(currnode,"datagridwidget-tbody");var rows=this.getWidgetRows(currnode);var row=this.getParentElementById(currnode,"datagridwidget-row");if(row==null){alert("Couldn't find DataGridWidget row");return}
var idx=null
for(var t=0;t<rows.length;t++){if(rows[t]==row){idx=t;break}}
if(idx==null)
return;if(idx==0){var previousRow=rows[rows.length-1]
this.shiftRow(row,previousRow)} else{var previousRow=rows[idx-1];this.shiftRow(row,previousRow)}
this.updateOrderIndex(tbody)}
dataGridFieldFunctions.shiftRow=function(bottom,top){bottom.parentNode.insertBefore(bottom,top)}
dataGridFieldFunctions.updateOrderIndex=function(tbody){var xre=new RegExp(/^orderindex__/)
var idx=0;var cell;var rows=this.getRows(tbody);for(var i=0;i<rows.length-1;i++){for(var c=0;(cell=rows[i].getElementsByTagName('INPUT').item(c));c++){if(cell.getAttribute('id')){if(xre.exec(cell.id)){cell.value=idx}}
this.updateRadioButtonGroupName(this.getParentElement(cell,"TR"),idx);idx++}}}
dataGridFieldFunctions.updateRadioButtonGroupName=function(row,newIndex){var cell;var xre=new RegExp(/^radio/)
var xre2=new RegExp(/^checkbox/)
for(var c=0;(cell=row.getElementsByTagName('INPUT').item(c));c++){if(cell.getAttribute('type')){var type=cell.getAttribute('type');if(xre.exec(type)||xre2.exec(type)){var name=cell.getAttribute("NAME")
if(name==null) continue;var baseLabel=name.substring(0,name.lastIndexOf("."));cell.setAttribute("NAME",baseLabel+"."+newIndex)}}}}
dataGridFieldFunctions.getParentElement=function(currnode,tagname){tagname=tagname.toUpperCase();var parent=currnode.parentNode;while(parent.tagName.toUpperCase()!=tagname){parent=parent.parentNode;if(parent.tagName.toUpperCase()=="BODY")
return null}
return parent}
dataGridFieldFunctions.getParentElementById=function(currnode,id){id=id.toLowerCase();var parent=currnode.parentNode;while(true){var parentId=parent.getAttribute("id");if(parentId!=null){if(parentId.toLowerCase().substring(0,id.length)==id) break}
parent=parent.parentNode;if(parent.tagName.toUpperCase()=="BODY")
return null}
return parent}

