function preinit() {
// Initialize
tinyMCE.setWindowArg('mce_windowresize', false);
}
function init() {
if (tinyMCE.isMSIE) {
tinyMCEPopup.resizeToInnerSize();
}
else {
tinyMCEPopup.resizeToContent();
}
window.focus();
loadCategories(null);
}
function insertAction() {
var inst = tinyMCE.getInstanceById( tinyMCE.getWindowArg( 'editor_id' ) );
var elm = inst.getFocusElement();
elm = tinyMCE.getParentElement( elm, "a" );
tinyMCEPopup.execCommand( "mceBeginUndoLevel" );
// Create new anchor elements
if ( elm == null ) {
var form = document.forms['elemlist'];
var sel_option = form.nodelist.options[form.nodelist.selectedIndex];
if ( sel_option == null )
return;
var insertText = '';
var nid = sel_option.value;
if (inst.selection.getSelectedText().length == 0) {
insertText = sel_option.text;
tinyMCEPopup.execCommand("mceInsertContent", false,
'' + insertText + '');
}
else {
tinyMCEPopup.execCommand("mceInsertContent", false,
'' + inst.selection.getSelectedHTML() + '');
} // end (getSelectedText == 0)
}
else
setAllAttribs( elm );
tinyMCE._setEventsEnabled( inst.getBody(), false );
tinyMCEPopup.execCommand( "mceEndUndoLevel" );
tinyMCEPopup.close();
}
function setAllAttribs(elm) {
var formObj = document.forms[0];
var target = getSelectValue( formObj, 'nodelist' );
// Make uri absolute
setAttrib( elm, 'href', convertURL( target, elm ) );
// Refresh in old MSIE
if ( tinyMCE.isMSIE5 )
elm.outerHTML = elm.outerHTML;
}
function convertURL(url, node, on_save) {
return eval("tinyMCEPopup.windowOpener." +
tinyMCE.settings['urlconverter_callback'] +
"(url, node, on_save);");
}
function setAttrib(elm, attrib, value) {
var formObj = document.forms[0];
var valueElm = formObj.elements[attrib.toLowerCase()];
if (typeof(value) == "undefined" || value == null) {
value = "";
if (valueElm)
value = valueElm.value;
}
if (value != "") {
elm.setAttribute(attrib.toLowerCase(), value);
if (attrib == "style")
attrib = "style.cssText";
if (attrib.substring(0, 2) == 'on')
value = 'return true;' + value;
if (attrib == "class")
attrib = "className";
eval('elm.' + attrib + "=value;");
}
else
elm.removeAttribute(attrib);
}
/**
* status box
**/
function statusImg(show) {
var status = document.getElementById('statusImg');
if (status == null)
return;
if (show)
status.style.display = 'block';
else
status.style.display = 'none';
}
/*
* functions to provide AJAX-functionality
*/
var request;
function loadCategories(obj) {
statusImg(true);
var catId = '';
var vId = '';
if (obj != null) {
catId = obj.value;
var fSel = document.getElementById('browse_sel_0_sel');
if (fSel !== null)
vId = fSel.value;
}
var url = tinyMCE.baseURL.substring(0, tinyMCE.baseURL.indexOf('modules/'));
if (url.indexOf('sites/') > -1)
url = url.substring(0, url.indexOf('sites/'));
url = url + 'ltc/linktonode';
// native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = function() {
requestDone(obj);
};
var reqStr = '/';
if (catId != vId)
reqStr += vId + '/';
reqStr += catId;
req.open("GET", url + reqStr, true);
req.send(null);
}
else {
alert("XMLHttpRequest not supported!");
}
statusImg(false);
}
function requestDone(obj) {
switch(req.readyState) {
case 1:
case 2:
case 3:
statusImg(true);
break;
case 4: // only if req is "loaded"
// only if "OK"
if (req.status == 200) {
results = parseJson(req.responseText);
if (obj == null) {
// create first select
createSelect(false, results);
}
else {
// create child select
var selected = obj.value
var div_sel = obj.parentNode;
_removeDescendant(div_sel);
if (selected == -1)
return;
if (div_sel.nodeName != 'DIV') {
alert( 'wrong DOM!' );
return;
}
createSelect(div_sel, results);
}
listNodes(results);
}
else {
alert(req.statusText);
}
statusImg( false );
break;
default:
} // switch
}
/**
* creates a new select element
**/
function createSelect(parent, results) {
var form = document.getElementById('form_browse');
if (!form) {
alert('Error: form_browse not found!');
return;
}
var elemname;
if (parent == false)
elemname = 'browse_sel_-1';
else
elemname = parent.id;
var level = parseInt(elemname.substring(elemname.lastIndexOf("_") + 1, elemname.length)) + 1;
var elemBase = elemname.substring(0, elemname.lastIndexOf("_") + 1);
if ((results == null) || (results.category == null) || (results.category == false))
return;
var sel_div = document.createElement('div');
var attrs = new Array();
attrs['name'] = elemBase + level;
attrs['id'] = attrs['name'];
attrs['style'] = 'display: block; margin: 1px 0; padding: 0; border: 0;';
for (attrName in attrs)
sel_div.setAttribute(attrName, attrs[attrName]);
form.insertBefore(sel_div, document.getElementById('dummy'));
/* create