function changeToEdit(idAndFieldName, fileid) {
    var htmlText = '<form action="/lbox_files/' + fileid + '" method="post" onsubmit="new Ajax.Request(\'/lbox_files/' + fileid + '\', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;"><input type="hidden" name="_method" value="put" />';
    if (idAndFieldName == "filename") {
        htmlText += '<input id="lbox_file_filename" name="lbox_file[filename]" value="'
                 +  trim($(idAndFieldName).innerHTML)
                 + '" /><input type="submit" value="save" /></form>';
    }
    else if (idAndFieldName == "description") {
        htmlText += '<h1>foo</h1>' 
                 +  trim(document.getElementById('description').innerHTML)
                 +  '<input type="submit" value="Save" /></form>';
    }
    $(idAndFieldName).innerHTML = htmlText;
    $(idAndFieldName).onclick = doNothing;
}

function hover() { }

function doNothing() { }

function trim(str) {
    var text = str.replace(/^\s+/, "");
    text = text.replace(/\s+$/, "");
    return text;
}

function MultiSelector(list_target, max ){
	this.list_target = list_target;
	this.count = 0;
	this.id = 0;
	if( max ){
		this.max = max;
	} else {
		this.max = -1;
	};
	
	this.addElement = function( element ){
		if( element.tagName == 'INPUT' && element.type == 'file' ){
			element.id =   'uploadeddata_' + this.id;
            element.name = 'uploadeddata_' + this.id++;
			element.multi_selector = this;

            element.onchange = function(){
				var new_element = document.createElement( 'input' );
				new_element.type = 'file';
				this.parentNode.insertBefore( new_element, this );
				this.multi_selector.addElement( new_element );
				this.multi_selector.addListRow( this );
				this.style.position = 'absolute';
				this.style.left = '-1000px';
			};

			if( this.max != -1 && this.count >= this.max ){
				element.disabled = true;
			};

			this.count++;
			this.current_element = element;
		} else {
			alert( 'Error: not a file input element' );
		};

	};

	this.addListRow = function( element ){
		var new_row = document.createElement('tr');
        var new_cell = document.createElement('td');
		var new_row_button = document.createElement('input');
		var new_delete_cell = document.createElement('td');

        new_row_button.type = 'button';
		new_row_button.value = 'Delete';
		new_row.element = element;
		
        new_row_button.onclick= function(){
			this.parentNode.parentNode.element.parentNode.removeChild( this.parentNode.parentNode.element );
			this.parentNode.parentNode.parentNode.removeChild( this.parentNode.parentNode );
			this.parentNode.parentNode.element.multi_selector.count--;
			this.parentNode.parentNode.element.multi_selector.current_element.disabled = false;
			return false;
		};
        
		new_cell.innerHTML = element.value;
		new_delete_cell.appendChild( new_row_button );
        new_row.appendChild(new_cell);
        new_row.appendChild(new_delete_cell);

		this.list_target.appendChild( new_row );
	};
};

function submitFileToEditor(fileid) {
    var win = tinyMCEPopup.getWindowArg("window");

    win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = "/lbox_files/" + fileid;
    tinyMCEPopup.close();
}

function submitValueToEditor(filename, image) {
    var win = tinyMCEPopup.getWindowArg("window");

    win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = filename;
    if (win.ImageDialog) {
        if (win.ImageDialog.getImageData) win.ImageDialog.getImageData();
        if (win.ImageDialog.showPreviewImage) win.ImageDialog.showPreviewImage(filename);
    }
    tinyMCEPopup.close();
}

function submitPageIdToEditor(id) { 
    var win = tinyMCEPopup.getWindowArg("window");
    win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = "/page/show/" + id;
    tinyMCEPopup.close(); 
}

function deleteChosenFiles(idOfDomElement) {
    var checkBoxesForFiles = $(idOfDomElement).getElementsByClassName('fileCheck');
    var checkBoxesForDirs = $(idOfDomElement).getElementsByClassName('dirCheck');
    
    filesToDelete = new Array();
    dirsToDelete  = new Array();

    for (var i=0; i < checkBoxesForFiles.length; i++) {
        if (checkBoxesForFiles[i].checked) {
            filesToDelete.push(parseInt(checkBoxesForFiles[i].value));
        }
    }

    for (var i=0; i < checkBoxesForDirs.length; i++) {
        if (checkBoxesForDirs[i].checked) {
            dirsToDelete.push(parseInt(checkBoxesForDirs[i].value));
        }
    }
  
    // check if the files or directories to delete are highlighted at the moment
    var found = false;
    var directoryId = 0;

    if (/\_(\d+)$/.test(idOfDomElement)) {
        directoryId = RegExp.$1;
        if (/^fileListEntry\_(\d+)$/.test($('file_oldPageHighlight_' + directoryId).value)) {
            for (var i = 0; i < filesToDelete.length; i++) {
                if (filesToDelete[i] == parseInt(RegExp.$1)) {
                    found = true;
                    break;
                }
            }
        } else if (/^dirListEntry\_(\d+)$/.test($('file_oldPageHighlight_' + directoryId).value)) {
            for (var i = 0; i < dirsToDelete.length; i++) {
                if (dirsToDelete[i] == parseInt(RegExp.$1)) {
                    found = true;
                    break;
                }
            } 
        }
    }

    // highlighted element is about to be deleted. Set highlight to ""
    if (found) {
        if (/fileadminPage_(\d+)/.test(idOfDomElement)) {
            deleteFileadminPagesAfter(parseInt(RegExp.$1));
            stopPageSpinner();
            updateHolderSize(false);
            $('file_oldPageHighlight_' + directoryId).value = "";
        }
    }

    // delete the files
    for (var i = 0; i < filesToDelete.length; i++) {
        new Ajax.Request('/lbox_files/' + filesToDelete[i], {asynchronous:true, evalScripts:true, method:'delete'}); 
    }

    // delete the directories
    for (var i = 0; i < dirsToDelete.length; i++) {
        new Ajax.Request('/lbox_directories/' + dirsToDelete[i], {asynchronous:true, evalScripts:true, method:'delete'});
    }
}

function loadSelector() {
    var multi_selector = new MultiSelector($('file_list'), 10);multi_selector.addElement($('uploadeddata_0'));
}

function deleteFileadminPagesAfter(id) {
    var prefix = $('pageHolderPrefix').value;
    while ($(prefix + 'fileadminPage_' + id).nextSibling.className != "spinnerpage") {
        $(prefix + 'fileadminPage_' + id).parentNode.removeChild($(prefix + 'fileadminPage_' + id).nextSibling);
    }

    updateHolderSize(true);
    startPageSpinner();
}

function updateHolderSize(prepareForNew) {
    var prefix = $('pageHolderPrefix').value;
    var currPageHolder = $(prefix + 'page_holder_' + $('currentPageHolder').value);
    var pagesCount = currPageHolder.getElementsByClassName('fileadminPage').length;
    var pageWidth = 200;

    if (prepareForNew) {
        currPageHolder.style.width = ((pagesCount + 1) * pageWidth) + "px";
    } else {
        currPageHolder.style.width = (pagesCount * pageWidth) + "px";
    }
    scrollHolder();    
}

function scrollHolder() {
    var prefix = $('pageHolderPrefix').value;
    var currPageHolder = $(prefix + 'page_holder_' + $('currentPageHolder').value);

    var diff = (600 - parseInt(currPageHolder.style.width));

    if (diff < 0) {
        currPageHolder.style.left =  diff + "px";
    } else { 
        currPageHolder.style.left = "0px";
    }
}

var aktiv;

function scrollPageRight() {
    var prefix = $('pageHolderPrefix').value;
    var currPageHolder = $(prefix + 'page_holder_' + $('currentPageHolder').value);
}

function scrollOnePage(left) {
    var prefix = $('pageHolderPrefix').value;
    var pageHolderId = prefix + 'page_holder_' + $('currentPageHolder').value;
    var currPageHolder = $(pageHolderId);
    pageWidth = 198;

    if (left) {
        scrollHolderLeft(pageHolderId, pageWidth);
    } else {
        scrollHolderRight(pageHolderId, pageWidth);
    }
}

function scrollHolderLeft(pageHolderId, pageWidth) {
    var currLeft = parseInt($(pageHolderId).style.left);
    if (currLeft >= 0) {
        $(pageHolderId).style.left = "0px";
        return;
    } 
    if ((currLeft < 0) && (pageWidth > 0)) {
        $(pageHolderId).style.left = (currLeft + 18) + "px";
        window.setTimeout("scrollHolderLeft('" + pageHolderId + "'," + (pageWidth -18) + ")", 50);
    }
}

function scrollHolderRight(pageHolderId, pageWidth) {
    var currLeft = parseInt($(pageHolderId).style.left);

    var diff = (600 - parseInt($(pageHolderId).style.width));

    if (currLeft <= diff) {
        $(pageHolderId).style.left = diff + "px";
    } else if (pageWidth > 0) {
        $(pageHolderId).style.left = (currLeft - 18) + "px";
        window.setTimeout("scrollHolderRight('" + pageHolderId + "'," + (pageWidth -18) + ")", 50);
    }   
} 

function startPageSpinner() {
    var prefix = $('pageHolderPrefix').value;
    $(prefix + 'spinnerpage_' + $('currentPageHolder').value).style.display = "block";
}

function stopPageSpinner() {
    var prefix = $('pageHolderPrefix').value;
    $(prefix + 'spinnerpage_' + $('currentPageHolder').value).style.display = "none";
}

function updateHighlight(elementId, idOfParentDirectory, prefix) {
    if ($(prefix + '_oldPageHighlight_' + idOfParentDirectory).value != "") {
        $($(prefix + '_oldPageHighlight_' + idOfParentDirectory).value + "_highlight").className = "normal";
    }

    $(elementId + "_highlight").className = "high";
    $(prefix + '_oldPageHighlight_' + idOfParentDirectory).value = elementId;
}

function displayFirstLevelTab(id) {
    var prefix = $('pageHolderPrefix').value;

    if ($('currentPageHolder').value != "") {
        if ($(prefix + "page_holder_" + $('currentPageHolder').value)) {
            $(prefix + "page_holder_" + $('currentPageHolder').value).style.display = "none";
            $(prefix + 'firstLevelLink_' + $('currentPageHolder').value).className = "";
        }
    }

    $(prefix + 'page_holder_' + id).style.display = "block";
    $(prefix + 'firstLevelLink_' + id).className = "high";
    $('currentPageHolder').value = id;
}

function displayChoose(prefix) {
    oldPrefix = $('pageHolderPrefix').value;
    if ($(oldPrefix + "page_holder_" + $('currentPageHolder').value)) {
        $(oldPrefix + "page_holder_" + $('currentPageHolder').value).style.display = "none";
        $(oldPrefix + 'firstLevelLink_' + $('currentPageHolder').value).className = "";
    }

    $('currentPageHolder').value = "";

    $($('pageHolderPrefix').value + 'areaHolder').style.display = "none";
    $($('pageHolderPrefix').value + 'areaChooseLink').className = "";
    $(prefix + '_areaHolder').style.display = "block";
    $('pageHolderPrefix').value = prefix + "_";
    $(prefix + '_areaChooseLink').className = "high";
}
