/**
 * Functions for the image listing, used by images.php only
 * Authors: Wei Zhuo, Afru, Krzysztof Kotowicz, Raimund Meyer
 * Version: Updated on 08-01-2005 by Afru
 * Version: Updated on 04-07-2006 by Krzysztof Kotowicz
 * Version: Updated on 17-11-2006 by Raimund Meyer
 * Package: ExtendedFileManager (EFM 1.1.3)
 * http://www.afrusoft.com/htmlarea
 */

function i18n(str) {
    return Xinha._lc(str, 'ExtendedFileManager');
}

function changeDir(newDir)
{
    showMessage('Loading');
    var mode=window.top.document.getElementById('manager_mode').value;
    var selection = window.top.document.getElementById('viewtype');
    var viewtype = selection.options[selection.selectedIndex].value;
    location.href = _backend_url + "__function=images&mode="+mode+"&dir="+newDir+"&viewtype="+viewtype;
	document.cookie = "EFMStartDir" + mode + "="+newDir;
}

function newFolder(dir, newDir)
{
    var mode=window.top.document.getElementById('manager_mode').value;
    var selection = window.top.document.getElementById('viewtype');
    var viewtype = selection.options[selection.selectedIndex].value;
    location.href = _backend_url + "__function=images&mode="+mode+"&dir="+dir+"&newDir="+newDir+"&viewtype="+viewtype;
}

function renameFile(oldPath) {
 // strip directory and extension
  var oldName=oldPath.replace(/.*%2F/,'').replace(/\..*$/,'');
  
  var rename = function (newName)
  {
    if(newName == '' || newName == null || newName == oldName)
    {
        alert(i18n('Cancelled rename.'));
        return false;
    }
    var mode=window.top.document.getElementById('manager_mode').value;
    var selection = window.top.document.getElementById('dirPath');
    var dir = selection.options[selection.selectedIndex].value;
    selection = window.top.document.getElementById('viewtype');
    var viewtype = selection.options[selection.selectedIndex].value;
    location.href = _backend_url + "__function=images&mode="+mode+"&dir="+dir+"&rename="+oldPath+"&renameTo="+newName+"&viewtype="+viewtype;
  }
  
   // IE7 has crippled the prompt()
  if ( Xinha.ie_version > 6 )
  {
    popupPrompt(i18n("Please enter new name for this file..."), oldName, rename, i18n("Rename"));
  }
  else
  {
    var newName = prompt(i18n('Please enter new name for this file...'), oldName);
    rename(newName);
  }
}
function renameDir(oldName) 
{
  // strip directory and extension

  function rename(newName)
  {
    if(newName == '' || newName == null || newName == oldName)
    {
      alert(i18n('Cancelled rename.'));
      return false;
    }
    var mode=window.top.document.getElementById('manager_mode').value;
    var selection = window.top.document.getElementById('dirPath');
    var dir = selection.options[selection.selectedIndex].value;
    selection = window.top.document.getElementById('viewtype');
    var viewtype = selection.options[selection.selectedIndex].value;
    location.href = _backend_url + "__function=images&mode="+mode+"&dir="+dir+"&rename="+oldName+"&renameTo="+newName+"&viewtype="+viewtype;
  }
  
  // IE7 has crippled the prompt()
  if ( Xinha.ie_version > 6 )
  {
    popupPrompt(i18n('Please enter new name for this folder...'), oldName, rename, i18n("Rename"));
  }
  else
  {
    var newName = prompt(i18n('Please enter new name for this folder...'), oldName);
    rename(newName);
  }
}
function copyFile(file,action)
{
	var selection = window.top.document.getElementById('dirPath');
    var dir = selection.options[selection.selectedIndex].value;
	window.top.pasteButton({'dir':dir,'file':file,'action':action+'File'});
}
function copyDir(dirToCopy,action)
{
	var selection = window.top.document.getElementById('dirPath');
    var dir = selection.options[selection.selectedIndex].value;
	window.top.pasteButton({'dir':dir,'file':dirToCopy,'action':action+'Dir'});
}
function paste(action)
{
    var mode=window.top.document.getElementById('manager_mode').value;
    var selection = window.top.document.getElementById('dirPath');
    var dir = selection.options[selection.selectedIndex].value;
    selection = window.top.document.getElementById('viewtype');
    var viewtype = selection.options[selection.selectedIndex].value;
	location.href = _backend_url + "__function=images&mode="+mode+"&dir="+dir+"&paste="+action.action+"&srcdir="+action.dir+"&file="+action.file+"&viewtype="+viewtype;
}
//update the dir list in the parent window.
function updateDir(newDir)
{
	var mode = window.top.document.getElementById('manager_mode').value;
	document.cookie = "EFMStartDir" + mode + "="+newDir;
    
	var selection = window.top.document.getElementById('dirPath');
    if(selection)
    {
        for(var i = 0; i < selection.length; i++)
        {
            var thisDir = selection.options[i].text;
            if(thisDir == newDir)
            {
                selection.selectedIndex = i;
                showMessage('Loading');
                break;
            }
        }
    }

}

function emptyProperties()
{
    toggleImageProperties(false);
    var topDoc = window.top.document;
    topDoc.getElementById('f_url').value = '';
    topDoc.getElementById('f_alt').value = '';
    topDoc.getElementById('f_title').value = '';
    topDoc.getElementById('f_width').value = '';
    topDoc.getElementById('f_margin').value = '';
    topDoc.getElementById('f_height').value = '';
    topDoc.getElementById('f_padding').value = '';
    topDoc.getElementById('f_border').value = '';
    topDoc.getElementById('f_borderColor').value = '';
    topDoc.getElementById('f_backgroundColor').value = '';
}

function toggleImageProperties(val)
{
    var topDoc = window.top.document;
    if(val==true)
    {
        topDoc.getElementById('f_width').value = '';
        topDoc.getElementById('f_margin').value = '';
        topDoc.getElementById('f_height').value = '';
        topDoc.getElementById('f_padding').value = '';
        topDoc.getElementById('f_border').value = '';
        topDoc.getElementById('f_borderColor').value = '';
        topDoc.getElementById('f_backgroundColor').value = '';
    }
    topDoc.getElementById('f_width').disabled = val;
    topDoc.getElementById('f_margin').disabled = val;
    topDoc.getElementById('f_height').disabled = val;
    topDoc.getElementById('f_padding').disabled = val;
    topDoc.getElementById('f_align').disabled = val;
    topDoc.getElementById('f_border').disabled = val;
    topDoc.getElementById('f_borderColor').value = '';
    topDoc.getElementById('f_backgroundColor').value = '';
    topDoc.getElementById('constrain_prop').disabled = val;
}

function selectImage(filename, alt, width, height)
{
    var topDoc = window.top.document;

    if(topDoc.getElementById('manager_mode').value=="image")
    {
        var obj = topDoc.getElementById('f_url');  obj.value = filename;
        obj = topDoc.getElementById('f_alt'); obj.value = alt;
        obj = topDoc.getElementById('f_title'); obj.value = alt;

        if(width==0 && height==0) toggleImageProperties(true);
        else
        {
            toggleImageProperties(false);
            var obj = topDoc.getElementById('f_width');  obj.value = width;
            var obj = topDoc.getElementById('f_height'); obj.value = height;
            var obj = topDoc.getElementById('orginal_width'); obj.value = width;
            var obj = topDoc.getElementById('orginal_height'); obj.value = height;
            update_selected();
        }
    }
    else if (topDoc.getElementById('manager_mode').value=="link")
    {
        var obj = topDoc.getElementById('f_href');  obj.value = filename;
        var obj = topDoc.getElementById('f_title'); obj.value = alt;
    }

    return false;
}

var _current_selected = null;

function update_selected()
{
    var topDoc = window.top.document;
    if(_current_selected)
    {
        _current_selected.className = _current_selected.className.replace(/(^| )active( |$)/, '$1$2');
        _current_selected = null;
    }
    // Grab the current file, and highlight it if we have it
    var c_file = topDoc.getElementById('f_url').value;
    var selection = topDoc.getElementById('dirPath');
    var currentDir = selection.options[selection.selectedIndex].text;
    var dRe = new RegExp('^(' + currentDir.replace(/([\/\^$*+?.()|{}[\]])/g, '\\$1') + ')([^/]*)$');
    if(dRe.test(c_file))
    {
        var holder = document.getElementById('holder_' + asc2hex(RegExp.$2));
        if(holder)
        {
            _current_selected = holder;
            holder.className += ' active';
        }
    }
    showPreview(c_file);
}

function asc2hex(str)
{
    var hexstr = '';
    for(var i = 0; i < str.length; i++)
    {
        var hex = (str.charCodeAt(i)).toString(16);
        if(hex.length == 1) hex = '0' + hex;
        hexstr += hex;
    }
    return hexstr;
}

function showMessage(newMessage)
{
    var topDoc = window.top.document;

    var message = topDoc.getElementById('message');
    var messages = topDoc.getElementById('messages');
    if(message && messages)
    {
        if(message.firstChild)
            message.removeChild(message.firstChild);

        message.appendChild(topDoc.createTextNode(i18n(newMessage)));

        messages.style.display = "block";
    }
}

function updateDiskMesg(newMessage)
{
    var topDoc = window.top.document;

    var diskmesg = topDoc.getElementById('diskmesg');
    if(diskmesg)
    {
        if(diskmesg.firstChild)
            diskmesg.removeChild(diskmesg.firstChild);

        diskmesg.appendChild(topDoc.createTextNode(newMessage));

    }
}

function addEvent(obj, evType, fn)
{
    if (obj.addEventListener) { obj.addEventListener(evType, fn, true); return true; }
    else if (obj.attachEvent) {  var r = obj.attachEvent("on"+evType, fn);  return r;  }
    else {  return false; }
}

function confirmDeleteFile(file)
{
    if(confirm(i18n('Delete file "$file=' + file +'$"?')))
        return true;

    return false;
}

function confirmDeleteDir(dir, count)
{
   /* if(count > 0)
    {
        alert(i18n("Folder is not empty. Please delete all Files and Subfolders inside."));
        return false;
    }*/

    if(confirm(i18n('Delete folder "$dir=' + dir +'$"?')))
        return true;

    return false;
}

function showPreview(f_url)
{
    window.parent.document.getElementById('f_preview').src =
    f_url ? window.parent._backend_url + '__function=thumbs&img=' + f_url :window.parent.opener.Xinha.getPluginDir('ExtendedFileManager')+'/img/1x1_transparent.gif';
}

addEvent(window, 'load', init);