
function indexmenu_findExt(path) {
    var ext = "gif";
    var cext = path.lastIndexOf(".");
    if ( cext > -1){
	cext++;
	cext = path.substring(cext, path.length-1).toLowerCase();
	if ((cext == "png") || (cext == "jpg")) {ext = cext;}
    }    
    return ext; 
}

function indexmenu_ajax (get) {
    var indx_list= document.getElementById('picker_plugin_indexmenu');
    if (!indx_list) {indx_list=indexmenu_createPicker();}
    if (indx_list.innerHTML !== "") {return;}
    // We use SACK to do the AJAX requests
    var ajax = new sack(DOKU_BASE+'lib/plugins/indexmenu/ajax.php');
    ajax_qsearch.sack.AjaxFailedAlert = '';
    ajax_qsearch.sack.encodeURIString = false;
    
    ajax.onLoading = function () {
	indx_list.innerHTML="Loading .....";
    };
    
    // define callback
    ajax.onCompletion = function(){
        var data = this.response;
	indx_list.innerHTML="";
        if(data.substring(0,9) != 'indexmenu'){ indx_list.innerHTML="Retriving error";return; }
	indexmenu_createThemes(data,indx_list);
    };
    
    ajax.runAJAX(encodeURI(get));
}

function indexmenu_createThemes(data,indx_list) {
    var adata=data.split(',');
    var check=adata.shift();
    if (check != 'indexmenu') {
	indx_list.innerHTML="No themes";
	adata=[];
    } else {
	var url=adata.shift();
	url += adata.shift();
    }
    for (var key in adata) {
	var btn = document.createElement('button');
	btn.className = 'pickerbutton';
	var ico = document.createElement('img');
	ico.src = url+"/"+adata[key]+"/base."+indexmenu_findExt(adata[key]+"/");
	var title = adata[key];
	btn.title=title;
	btn.appendChild(ico);
	if (title == "default") {
	    title = "";
	} else {
	    title = "#" + title;
	}
	eval("btn.onclick = function(){insertTags('"+
	     jsEscape('wiki__text')+"','"+
	     jsEscape("{{indexmenu>")+"','"+
	     jsEscape("|js"+title+"}}")+"','"+
	     jsEscape('.#1')+
	     "');this.parentNode.style.display='none';return false;}");
	if (title === "") { 
	    indx_list.insertBefore(btn,indx_list.firstChild);
	} else {    
	    indx_list.appendChild(btn);
	}
    }
}

function indexmenu_toolbar_additions() {
    var toolbar = document.getElementById('tool__bar');
    if(!toolbar) return;
    var edbtn = document.getElementById('edbtn__save');
    if(!edbtn) return;
    indexmenu_createPicker();
    var indx_btn = indexmenu_createToolbar();
    eval("indx_btn.onclick = function(){showPicker('picker_plugin_indexmenu',this);indexmenu_ajax('req=local');return false;}");
    toolbar.appendChild(indx_btn);
}

function indexmenu_createToolbar (){
    var indx_ico = document.createElement('img');
    indx_ico.src = DOKU_BASE + 'lib/plugins/indexmenu/images/indexmenu_toolbar.png';
    var indx_btn = document.createElement('button');
    indx_btn.id = 'syntax_plugin_indexmenu';
    indx_btn.className = 'toolbutton';
    indx_btn.title = 'Insert Indexmenu tree';
    indx_btn.appendChild(indx_ico);
    return indx_btn;
}

function indexmenu_createPicker() {
    var indx_list = document.createElement('div');
    indx_list.className = 'picker';
    indx_list.id='picker_plugin_indexmenu';
    indx_list.style.width = '100px';
    indx_list.style.position = 'absolute';
    indx_list.style.display  = 'none';
    var body = document.getElementsByTagName('body')[0];
    body.appendChild(indx_list);
    return indx_list;
}

addInitEvent(indexmenu_toolbar_additions);

