/*
AjaxExplorer Copyright (C) 2007-2008 Syed Mohammad Sidque Tahir Al-Habshi

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Head to
GNU site http://www.gnu.org/licenses/ for license copy.
*/

function fileBrowse(data)
{
  var dir='';

  if(dirc=='Shared Folder')
  {
    fileShareList();
    return;
  }

  if(data=='*')
  {
    var a=dirc.split('/');
    for(var i=0; i<(a.length-2); i++) dir+=a[i]+'/';
  }
  else dir=data? dirc+data+'/':get('dirc').value;

  fileCaller(dir, dvrt);
}

function fileCaller(dir, dvr)
{
  hX=hY=edit=hold=mark=over=renm=sdir=tdir=0;
  dir=dir.indexOf('..')==-1? dir:'';
  obj=get('pointer').style;
  obj.left='0px';
  obj.top='0px';

  if(strd)
  {
    cdir=fileDirc.length;
    if((','+fileDirs.toString().toLowerCase()+',').indexOf(','+dvrt+dir.toLowerCase()+',')==-1) fileDirs.push(dvrt+dir);
    fileDirc.push(dir);
  }

  stop=1;
  userSystemHide();
  display('list', 0);
  setData('address', dir);
  setData('reroute', dvr);
  setData('storage', fileDirs);

  ajaxRequest('loader', '&dirc='+getSwap(dvr+dir)+'&hist='+getSwap(dvrt+dirc)+'&save='+sort+':'+view);

  dirc=dir;
  dvrt=dvr;
  getDirc();
}

function fileCopy(flag)
{
  if(rdir || sdir || tdir) return;
  var file='';

  for(var i=1; i<=maxs; i++)
  {
    if(obj=get('item'+i))
    {
      if(obj.className=='mark')
      {
	file+=fileList[i][0]+'|';
	flag? get(i+'').className='drag':0;
      }
      else flag? get(i+'').className='over':0;
    }
  }

  if(file)
  {
    setData('clip_file', file);
    setData('clip_from', dvrt+dirc);
    setData('clip_task', flag? 'move':'copy');
  }
}

function fileCreate(flag)
{
  if(name=prompt((flag? 'Folder':'File')+' Name?', '')) ajaxRequest('create', 'dirc='+getSwap(dvrt+dirc)+'&file='+getSwap(name)+'&task='+(flag? 'folder':'file'));
}

function fileCreateDone(data)
{
  if(rdir || sdir || tdir) return;

  fileSelectNone();
  var a=data.split('|');

  for(var i=0; i<(a.length-1); i++)
  {
    var b=a[i].split(':');
    fileDraw(b[0], b[1], b[2]);
  }

  fileSort();
}

function fileDelete()
{
  var file='', item='';

  var flag=dirc=='Shared Folder'? 1:0;
  if(confirm('Delete selected files?'))
  {
    for(var i=1; i<=maxs; i++)
    {
      if(obj=get('item'+i))
      {
	if(obj.className=='mark')
	{
	  file+=fileList[i][0]+(flag? ':'+fileList[i][4]+':'+usnm:'')+'|';
	  item+=i+'|';
	}
      }
    }

    if(item) flag? ajaxRequest('sdelete', 'drct=/&item='+item+'&file='+getSwap(file)):ajaxRequest('delete', 'dirc='+getSwap(dvrt+dirc)+'&file='+getSwap(file)+'&item='+item);
  }
}

function fileDeleteDone(item)
{
  var a=item.split('|');

  for(var i=0; i<(a.length-1); i++)
  {
    if(drag) fileDrop();
    fileList[a[i]][0]='';

    obj=get('item'+a[i]);
    display('pointer', 0);
    obj.style.display='none';
    obj.innerHTML='';
    obj.id='t'+a[i];
  }
}

function fileDetail(id)
{
  userTips(post=='dirc=&spot=0'? 1:(rdir || sdir || tdir? 2:0));
  if(fileList[0]) writeAt('detail', '<div class="label">'+fileName(id)+'</div>'+fileTypeName(id)+'<br /><br />Modified: '+fileTime(id)+((size=fileList[id][1])=='folder'? '':'<br /><br />Size: '+fileSize(size))+(fileList[id][4]? '<br /><br />Shared by: '+fileList[id][5]+'<br /><img alt="" src="user/'+fileList[id][5]+'/My Profile/icon.jpg" class="user" onerror="this.src=\'images/noicon.png\'" />':''));
}

function fileDrag(pX, pY)
{
  var tX, tY;
  obj1=get('item'+drag).style;
  obj1.left=(pX<nX? nX:(pX+zX+3<mX? pX:mX-zX-3))+'px';
  obj1.top=(pY<nY? nY:(pY+zY+1<mY? pY:mY-zY-1))+'px';

  for(var i=1; i<=maxs; i++)
  {
    if(i!=drag)
    {
      if(obj=get('item'+i))
      {
	obj2=obj.style;
	if(over!=i && obj.className=='item' && (kX=parseIt(obj2.left))<(jX=parseIt(obj1.left)) && (kY=parseIt(obj2.top))<(jY=parseIt(obj1.top)) && kX>jX-zX && kY>jY-zY) drop=i;
      }
    }
  } 
}

function fileDraw(name, size, mdft)
{
  if(isNaN(mdft)) return;

  for(var i=1; i<=maxs; i++)
  {
    if(get(id='item'+i))
    {
      if(fileList[i][0]==name)
      {
	fileList[i][1]=size;
	fileList[i][2]=mdft;
	writeAt('item'+i+'-data', fileSize(size));
	fileSelect(i);
	return;
      }
    }
    else break;
  }

  if(i==maxs) maxs++;

  fileList[i]=new Array(name, size, mdft);
  fileExts(i);

  writeAt('desktop', '<div id="'+id+'" class="item" style="width: '+zX+'px; height: '+zY+'px"><div id="'+i+'" class="over" title=""></div><div id="'+id+'-view"><img id="'+id+'-icon" alt="" src="" class="'+view+'" /></div><div id="'+id+'-attr" class="attr"><div id="'+id+'-name" class="name"'+(zC? ' style="text-align: center"':'')+'>'+fileName(i)+'</div><div id="'+id+'-data"'+(zD? '':' style="display: none"')+'>'+(size=='folder'? 'folder':(sort=='date'? fileTime(i, 1):fileSize(fileList[i][1])))+'</div></div></div>', 1);
  fileSelect(i);
  fileImage(i);
}

function fileDrawBulk()
{
  var text='';

  for(var i=1; i<maxs; i++)
  {
    if(fileList[i][0]) text+='<div id="'+(id='item'+i)+'" class="item"><div id="'+i+'" class="over" title="'+fileTitle(i)+'"></div><div id="'+id+'-view"><img id="'+id+'-icon" alt="" src="" class="'+view+'" /></div><div id="'+id+'-attr" class="attr"><div id="'+id+'-name" class="name"'+(zC? ' style="text-align: center"':'')+'>'+fileName(i)+'</div><div id="'+id+'-data"'+(zD? '':' style="display: none"')+'>'+(fileList[i][1]=='folder'? 'folder':(sort=='date'? fileTime(i, 1):fileSize(fileList[i][1])))+'</div></div></div>';
  }

  writeAt('desktop', text);
  fileViewLoad(view);
}

function fileDrop()
{
  for(var i=1; i<=maxs; i++)
  {
    if(obj=get('item'+i))
    {
      if(obj.className=='mark')
      {
	get(i+'').className='over';
      }
    }
  }

  userTips(0);
  drop && fileList[drop][1]=='folder'? fileMoving(''):0;
  drag=drop=0;
}

function fileEmptyBin()
{
  fileSelectAll();
  fileDelete();
}

function fileExts(i)
{
  var name=fileName(i);

  fileList[i][3]=fileList[i][1]!='folder'? name.slice(name.lastIndexOf('.')+1).toLowerCase():'dir';
}

function fileFolder()
{
  if(fold)
  {
    flag=get('fold').style.display!='none'? 1:0;
    get('flds').src='images/'+(flag? 'closed.png':'opened.png');

    display('fold', flag? 0:1);
    display('pane', flag? 1:0);
  } else {
    get('flds').src='images/opened.png';
    ajaxRequest('folder', 'dirc=&spot=0');
  }
}

function fileFolderLoad(data)
{
  display('pane', 0);
  display('fold', 1);
  fold=1;

  if(data)
  {
    var nbsp='', text='', a=data.split('|'), b=a[1].split('/').length;
    get('I'+a[0]).src='images/opened.png';

    for(var i=0; i<b; i++) nbsp+='&nbsp; &nbsp;';
    for(var i=2; i<(a.length-1); i++)
    {
      fcnt++;
      text+='<br />'+nbsp+'<img id="I'+fcnt+'" alt="" src="images/closed.png" onclick="ajaxRequest(\'folder\', \'dirc='+a[1]+a[i]+'/&spot='+fcnt+'\')" /> <span class="href" onmouseup="fileImageDir(0);drag? fileMoving(\''+a[1]+a[i]+'/\'):fileCaller(\''+a[1]+a[i]+'/\', path)">'+a[i]+'</span><span id="F'+fcnt+'"></span>';
    }

    writeAt('F'+a[0], text);
  }
}

function fileGenerate(data)
{
  rdir=dvrt.indexOf('/user/'+usnm+'/Recycle Bin/')!=-1? 1:0;
  maxs=park=strd=1;
  done=0;

  if(data.indexOf('?')==-1)
  {
    get('dirc').value=gtxt='';
    display('desktop', stop=0);

    fraw=data.split('*');
    a=fraw[0].split(':');

    fileList[0]=Array(a[0], a[1], a[2], 'dir');
    if(a[3]) sort=a[3];
    if(a[4]) view=a[4];

    gstr=fraw[1].split('|');
    gcnt=132/gstr.length;

    if(!halt) fileGenerating();
  } else {
    writeAt('desktop', '<div class="note"><div class="title">The directory does not exist!</div>- '+getSwap(dvrt+dirc)+'</div>');
    menuGenerate('P');
    stop=1;
  }
}

function fileGenerating()
{
  if(gstr.length>maxs)
  {
    fileList[maxs]=gstr[(maxs-1)].split(':');
    fileExts(maxs);

    var bars='', gbar=gcnt*((maxs++)+1);
    for(var i=0; i<gbar; i++) bars+='|';
    get('dirc').value=bars;

    stop? 0:(safe? setTimeout('fileGenerating()', 0):fileGenerating());
  } else {
    done=1;

    fileViewLoad(view);
    fileSortLoad(sort);
    menuGenerate('P');

    dirc=tdir? 'Shared Folder':dirc;
    obj=get('dirc');
    obj.value=dirc;
    obj.blur();

    display('desktop', 1);
    userScreen();
  }
}

function fileImage(i)
{
  get('item'+i+'-icon').src=(img=fileType(i))? 'images/'+img+'.gif':root.substr(3)+dvrt+dirc+fileList[i][0];
}

function fileImageDir(i)
{
  var img='';

  switch(i)
  {
    case 0: img='closed.png'; break;
    case 1: img='user.gif'; break;
    case 2: img='bins.gif'; break;
    case 3: img='shared.gif'; break;
  }

  setData('section', i+'');
  get('imgs').src='images/'+img;
}

function fileMoving(link)
{
  if(!link && over) over=drop;

  var file='', item='';

  for(var i=1; i<=maxs; i++)
  {
    if(obj=get('item'+i))
    {
      if(obj.className=='mark')
      {
	file+=fileList[i][0]+'|';
	item+=i+'|';
      }
    }
  }

  if(item) ajaxRequest('moving', 'dirc='+(link? dvrt+link:getSwap(dvrt+dirc)+(over? getSwap(fileList[over][0]+'/'):'../'))+'&file='+getSwap(file)+'&item='+item+'&move='+getSwap(dvrt+dirc));
}

function fileName(data)
{
  if(!isNaN(data) && !fileList[data]) return data;
  name=isNaN(data)? data:fileList[data][0];

  if(name.indexOf('/')!=-1)
  {
    name=name.substr(name.lastIndexOf('/')+1);
  }

  if(name.indexOf('^')!=-1)
  {
    name=name.substr(0, name.indexOf('^'));
  }

  return name;
}

function fileOpen(type)
{
  hold=renm=0;
  if(rdir) return;
  if(tdir) type='shared';
  if(rtmr) clearTimeout(rtmr);

  for(var i=1; i<=maxs; i++)
  {
    if(obj=get('item'+i))
    {
      if(obj.className=='mark') fileOpenMethod(type, i);
    }
  }

  return;
}

function fileOpenLogs(id)
{
  if(usid==1)
  {
    ajaxRequest('editor', 'load='+setData('editor', '../user/log_'+(id==1? 'file':'sign')+'.php')+'&stop=0');
    window.open('editor.php');
  }
  else alert('You do not have permission!');
}

function fileOpenMethod(type, id)
{
  var name=fileList[id][0];

  switch(type)
  {
    case 'download':
	frame.document.form.dirc.value=dvrt+dirc;
	frame.document.form.download.value=fileList[sver][0];
	frame.document.form.submit();
	return;

    case 'editor':
	ajaxRequest('editor', 'load='+setData('editor', root+dvrt+dirc+name)+'&stop=0');
	window.open('editor.php');
	break;

    case 'newtab':
	window.open(fileList[id][1]!='folder'? root.substr(3)+dvrt+dirc+name:'?'+dirc+name);
	break;

    case 'shared':
	fileCaller('', fileList[sver][4]);
	break;

    default:
	if(fileList[id][1]!='folder')
	{
	  if(load==1)
	  {
	    opener.textOpen(root+dvrt+dirc+name);
	    opener.focus();
	    return;
	  }
	  else window.open(root.substr(3)+dvrt+dirc+name);
	} else {
	  fileBrowse(fileList[sver][0]);
	  return;
	}
  }
}

function fileOpenResult()
{
  name=fileList[sver][0];
  fileCaller(name.substr(0, (name.lastIndexOf('/')+1)), dvrt);
}

function filePaste()
{
  if(getData('clip_task')=='move') ajaxRequest('moving', 'dirc='+getSwap(dvrt+dirc)+'&file='+getSwap(getData('clip_file'))+'&item=0&move='+getSwap(getData('clip_from')));
  else ajaxRequest('copied', 'dirc='+getSwap(dvrt+dirc)+'&file='+getSwap(getData('clip_file'))+'&from='+getSwap(getData('clip_from')));
}

function filePasteDone(data)
{
  if(getData('clip_task')=='move')
  {
    var a=data.split('|');

    for(var i=0; i<(a.length-1); i++)
    {
      var b=a[i].split(':');
      fileDraw(b[0], b[1], b[2]);
    }

    setData('clip_file', '');
    setData('clip_from', '');
    setData('clip_task', '');
    menuGenerate('P');
    fileSort();
  }
  else fileDeleteDone(data);
}

function filePick()
{
  for(var i=1; i<=maxs; i++)
  {
    if(obj=get(id='item'+i))
    {
      if(obj.className=='mark')
      {
	get(i+'').className='drag';

	if(i==over)
	{
	  drag=i;
	  hX=hY=0;
	  dY=parseIt(obj.style.top);
	  dX=parseIt(obj.style.left);
	  obj.style.zIndex=(zI++);
	  if(!rdir) userTips(4);
	}
      }
    }
  }

  obj=get('pointer').style;
  obj.left=0+'px';
  obj.top=0+'px';
}

function fileProperty(loct)
{
  var file='';
  atrc=atrd=0;

  for(var i=1; i<=maxs; i++)
  {
    if(loct) break;
    if(obj=get('item'+i))
    {
      if(obj.className=='mark')
      {
	atrc++;
	if(!file) atrd=i;
	file+=fileList[i][0]+':';
      }
    }
  }

  ajaxRequest('attrib', 'dirc='+getSwap(loct? prop=loct:dvrt+dirc)+'&file='+getSwap(atrb=file));
}

function filePropertyLoad(data)
{
  var a=data.split(':');

  flag=fileList[atrd][1]=='folder'? 1:0;
  get('S59').disabled=flag? false:true;
  display('S69', mark && rdir? 1:0);
  opacity('S60', flag? 1:0.5);

  syst=1;
  exts=atrc>1? atrb.replace(/:/g, ',').substr(0, 30)+'...':fileTypeName(atrd);
  name=atrc>1? 'Multiple Files ('+atrc+')':(prop? 'My Folder':fileName(atrd));

  formPopulate1(a[2]);
  writeAt('S50', name);
  writeAt('S52', name);
  writeAt('S53', exts);
  writeAt('S54', a[3]);
  writeAt('S55', a[4]);
  writeAt('S56', fileSize(a[5]));
  writeAt('S57', a[0]=='0'? '':a[0]+' in group '+a[1]);
  get('S51').src='images/'+(atrc>1? 'file':fileList[atrd][3])+'.gif';

  iX=250;
  iY=330;
  obj=get('S5').style;
  obj.left=(oX+iX<mX? oX:mX-iX)+'px';
  obj.top=(oY+iY<mY? oY:mY-iY)+'px';
  userSystem(5);
  prop=0;
}

function filePropertySave()
{
  userSystemHide();

  ajaxRequest('modify', 'dirc='+getSwap(dvrt+dirc)+'&file='+getSwap(atrb)+'&cmod=0'+get('S58').value+'&each='+(get('S59').checked? 1:0));
  get('S58').checked='';
}

function fileRename(flag)
{
  if(sver && !rdir && !sdir && !tdir && !renm && (obj=get('item'+sver)))
  {
    if(obj.className=='mark')
    {
      if(flag)
      {
	writeAt('item'+(renm=sver)+'-name', '<input id="item'+sver+'-edit" type="text" class="fname" value="'+fileList[sver][0]+'" onblur="fileRenaming()" onfocus="edit=3" />');
	get('item'+sver+'-edit').select();
	edit=3;
      }
      else rtmr=setTimeout('fileRename(1)', menu? 0:800);
    }
  }
}

function fileRenameDone(name)
{
  if(name && rens) writeAt('item'+rens+'-name', fileList[rens][0]=name);

  fileExts(rens);
  fileImage(rens);
}

function fileRenaming()
{
  if(rdir || sdir || tdir) return;

  var id='item'+(rens=renm);
  var name=get(id+'-edit').value;
  writeAt(id+'-name', fileList[renm][0]);

  if(name && name!=fileList[renm][0])
  {
    ajaxRequest('rename', 'dirc='+getSwap(dvrt+dirc)+'&file='+getSwap(fileList[renm][0])+'&name='+getSwap(name));
  }

  edit=renm=0;
}

function fileRestore()
{
  var file='', item='';

  for(var i=1; i<=maxs; i++)
  {
    if(obj=get('item'+i))
    {
      if(obj.className=='mark')
      {
	file+=fileList[i][0]+'|';
	item+=i+'|';
      }
    }
  }

  if(item) ajaxRequest('restore', 'dirc='+getSwap(dvrt+dirc)+'&file='+getSwap(file)+'&item='+item);
}

function fileRestoreAll()
{
  fileSelectAll();
  fileRestore();
}

function fileSearch()
{

  var look='';
  if(stop) return;
  userSystemHide();

  switch(get('look').value)
  {
    case '0': fileSearchLocal(); return;
    case '1': look=dirc; break;
    case '2': look=''; break;
  }

  if(rdir) return;

  sdir=stop=1;
  hX=hY=edit=hold=mark=over=renm=tdir=0;
  ajaxRequest('search', 'dirc='+getSwap(dvrt+look)+'&find='+get('find').value+'&hist='+getSwap(dvrt+dirc)+'&save='+sort+':'+view);
  dirc=look;
  getDirc();
}

function fileSearchLocal()
{
  data=get('find').value.toLowerCase();

  for(var i=1; i<=maxs; i++)
  {
    if(get(id='item'+i)) display(id, (fileList[i][0].toLowerCase().indexOf(data)!=-1? 1:0));
  }

  fileSort();
}

function fileSelect(id)
{
  if(obj=get('item'+(id=id? id:over)))
  {
    if(obj.className!='mark' || keys!=2)
    {
      mark=park=id;
      fileDetail(id);
      obj.className='mark';

      obj1=get('pointer').style;
      obj1.left=obj.style.left;
      obj1.top=obj.style.top;
      obj1.display='block';
    }
    else obj.className='item';
  }
}

function fileSelectAll()
{
  var item=size=0;

  for(var i=1; i<=maxs; i++)
  {
    if(obj=get('item'+i))
    {
      if(!obj.style.display || obj.style.display=='block')
      {
	item++;
	mrk1+=':'+i+':';
	size-=fileList[i][1]=='folder'? 0:-fileList[i][1];
	obj.className='mark';
      }
    }
  }

  mark=1;
  mrk2=mrk1;
  menuGenerate('P');
  writeAt('detail', item? item+' Items selected<br /><br />Total Size: '+fileSize(size):'');
}

function fileSelectBox()
{
  var x1=0, x2=0, y1=0, y2=0, item=0, size=0;
  move=hX;

  pX=cX+sX;
  pY=cY+sY;

  if(pX>hX){x1=hX; x2=pX;}
  else{x1=pX; x2=hX;}
  if(pY>hY){y1=hY; y2=pY;}
  else{y1=pY; y2=hY;}

  if(x1<nX) x1=nX;
  if(x2>mX) x2=mX;
  if(y1<nY) y1=nY;
  if(y2>mY) y2=mY;

  obj=get('select').style;
  obj.top=y1+'px';
  obj.left=x1+'px';
  obj.width=x2-x1+'px';
  obj.height=y2-y1+'px';
  obj.display='block';

  for(var i=1; i<=maxs; i++)
  {
    if(obj=get('item'+i))
    {
      if(!obj.style.display || obj.style.display=='block')
      {
	var temp='', tX=parseIt(obj.style.left), tY=parseIt(obj.style.top);

	var isin=x2>tX-2 && x1<tX+zX && y2>tY-2 && y1<tY+zY? 1:0;
	var isit=mrk2.indexOf(':'+i+':')!=-1? 1:0;

	if(temp=mrk1.indexOf(':'+i+':')==-1? (isin? 'mark':(!isit? 'item':'')):(isin? (keys==2 && isit? 'item':'mark'):((keys==1 && isit) || (keys==2 && isit)? 'mark':'item'))) obj.className=temp;
	if(temp=='mark')
	{
	  item++;
	  mrk1+=':'+i+':';
	  size-=fileList[i][1]=='folder'? 0:-fileList[i][1];
	}
      }
    }
  }

  if(item)
  {
    mark=1;
    writeAt('detail', item+' Items selected<br /><br />Total Size: '+fileSize(size));
  }
}

function fileSelectNone()
{
  mark=0;
  for(var i=1; i<=maxs; i++)
  {
    if(obj=get('item'+i)) obj.className='item';
  }
}

function fileSent()
{
  var file='';

  for(var i=1; i<=maxs; i++)
  {
    if(obj=get('item'+i))
    {
      if(obj.className=='mark')
      {
	file+=fileList[i][0]+'|';
      }
    }
  }

  ajaxRequest('copied', 'dirc='+getSwap(path)+'&file='+getSwap(file)+'&from='+getSwap(dvrt+dirc)+'&hide=1');
}

function fileShare()
{
  ajaxRequest('screate', 'dirc='+getSwap(dvrt+dirc)+'&file='+getSwap(fileList[sver][0])+'&user='+usnm);
}

function fileShareList()
{
  dvrt='';
  stop=tdir=1;
  hX=hY=edit=hold=mark=over=renm=0;

  ajaxRequest('sloader', '');
}

function fileSize(data)
{
  var i=0, xtra=0;

  while(data>1024)
  {
    xtra=data%1000;
    data/=1024;
    i++;
  }

  return Math.round(data-0.49)+(i? '.'+(xtra>99? '':(xtra>9? '0':'00'))+Math.round(xtra):'')+' '+fileByte[i];
}

function fileSort()
{
  var j=sum=0, rX=nX, rY=nY;
  rows=0;

  for(var i=1; i<=maxs; i++)
  {
    if(obj=get('item'+i))
    {
      obj=obj.style;

      if(!obj.display || obj.display=='block')
      {
	if(!j) rows++;
	obj.left=rX+'px';
	obj.top=rY+'px';

	if(nX+rX+zX*1.8>wX)
	{
	  j=1;
	  rX=nX;
	  rY+=zY+10;
	}
	else rX+=zX+10;
      }
    }
  }

  if(done) userScreen();
}

function fileSortLoad(type)
{
  sort=type;

  var temp=new Array();
  var k=type=='name'? 0:(type=='size'? 1:(type=='date'? 2:3));

  for(var i=1; i<=maxs; i++)
  {
    if(obj1=get(id='item'+i))
    {
      for(var j=(i+1); j<maxs; j++)
      {
	if(fileList[i][1]!='folder' && fileList[j][1]!='folder')
	{
	  vi=k==1 || k==2? parseInt(fileList[i][k]):fileList[i][k];
	  vj=k==1 || k==2? parseInt(fileList[j][k]):fileList[j][k];


	  if(vi>vj)
	  {
	    temp=fileList[i];
	    fileList[i]=fileList[j];
	    fileList[j]=temp;
	  }
	}
      }
    }
  }

  fileDrawBulk();
}

function fileTime(id, flag)
{
  date=new Date();
  date.setTime(fileList[id][2]*1000);

  var a=String(date).split(mode? ' U':' G');

  if(flag)
  {
    return (date.getMonth()+1)+'/'+date.getDate()+'/'+a[0].substr(-13);
  }
  else return a[0];
}

function fileTitle(i)
{
  var name=fileList[i][0];

  if(rdir) return 'Deleted at: '+name.replace(/\$/g, '/').slice((name.indexOf('^')+1), -11);
  if(sdir) return 'Located at /'+dirc+name.slice(0, name.lastIndexOf('/')+1);
  if(tdir) return 'Located at '+fileList[i][4];

  return '';
}

function fileType(id)
{
  var exts=fileList[id][3];
  exts=view=='icon' && (exts=='gif' || exts=='ico' || exts=='jpg' || exts=='jpeg' || exts=='png')? '---':exts;

  switch(exts)
  {
	case '---':	return '';
	case 'adp':	return 'adp';
	case 'avi':	return 'mp3';
	case 'bmp':	return 'bmp';
	case 'css':	return 'css';
	case 'dir':	return 'dir';
	case 'dll':	return 'dll';
	case 'doc':	return 'doc';
	case 'exe':	return 'exe';
	case 'gif':	return 'gif';
	case 'htm':
	case 'html':	return 'htm';
	case 'ico':	return 'gif';
	case 'js':	return 'js';
	case 'jpg':
	case 'jpeg':	return 'jpg';
	case 'log':	return 'txt';
	case 'mdb':	return 'adp';
	case 'mdw':	return 'adp';
	case 'mov':	return 'mov';
	case 'mp3':	return 'mp3';
	case 'pdf':	return 'pdf';
	case 'png':	return 'gif';
	case 'php':	return 'txt';
	case 'ppt':	return 'ppt';
	case 'psd':	return 'psd';
	case 'pub':	return 'pub';
	case 'rar':	return 'zip';
	case 'rtf':	return 'doc';
	case 'swf':	return 'swf';
	case 'sql':	return 'txt';
	case 'ttf':	return 'ttf';
	case 'txt':	return 'txt';
	case 'vdx':	return 'vdx';
	case 'vsd':	return 'vsd';
	case 'wav':	return 'mp3';
	case 'wma':	return 'mp3';
	case 'wmv':	return 'mp3';
	case 'xls':	return 'xls';
	case 'xml':	return 'xml';
	case 'zip':	return 'zip';
	default:	return 'non';
  }
}

function fileTypeName(id)
{
  var exts=fileList[id][3];
  var data=!syst && (exts=='gif' || exts=='ico' || exts=='jpg' || exts=='jpeg' || exts=='png')? '<br /><img id="view" alt="" src="'+root.substr(3)+dvrt+dirc+fileList[id][0]+'" />':'';

  switch(exts)
  {
	case 'adp':	return 'Microsoft Access Project';
	case 'avi':	return 'Video Clip';
	case 'bmp':	return 'Bitmap Image';
	case 'css':	return 'Cascading Style Sheet';
	case 'dir':	return 'File Folder';
	case 'dll':	return 'Dynamic Link Library';
	case 'doc':	return 'Microsoft Document';
	case 'exe':	return 'Executable File';
	case 'gif':	return 'GIF Image'+data;
	case 'htm':
	case 'html':	return 'HTML Document';
	case 'ico':	return 'Icon Image'+data;
	case 'js':	return 'Java Script';
	case 'jpg':
	case 'jpeg':	return 'JPEG Image'+data;
	case 'log':	return 'Text Document';
	case 'mdb':	return 'Microsoft Access Application';
	case 'mdw':	return 'Microsoft Access Workgroup';
	case 'mov':	return 'Adobe Quick Player';
	case 'mp3':	return 'MPEG Audio Stream';
	case 'pdf':	return 'Adobe Acrobat Document';
	case 'png':	return 'PNG Image'+data;
	case 'php':	return 'PHP File';
	case 'ppt':	return 'Microsoft Powerpoint';
	case 'psd':	return 'Adobe Photoshop Format';
	case 'pub':	return 'Microsoft Publish';
	case 'rar':	return 'WinRaR Archive';
	case 'rtf':	return 'Rich Text Format';
	case 'sql':	return 'SQL File';
	case 'swf':	return 'Adobe Flash';
	case 'ttf':	return 'TrueType Font';
	case 'txt':	return 'Text Document';
	case 'vdx':	return 'Vector Graphic File';
	case 'vsd':	return 'Microsoft Visio Drawing';
	case 'wav':	return 'Waveform Audio';
	case 'wma':	return 'Windows Media Audio';
	case 'wmv':	return 'Windows Media Video';
	case 'xls':	return 'Microsoft Excel';
	case 'xml':	return 'XML Document';
	case 'zip':	return 'Zip Archive';
	default:	return 'File';
  }
}

function fileView(data)
{
  switch(view=data)
  {
    case 'list':
	zC=0;
	zD=0;
	zX=550;
	zY=16;
	break;

    case 'icon':
	zC=1;
	zD=0;
	zX=104;
	zY=104;
	break;

    case 'tile':
	zC=0;
	zD=1;
	zX=180;
	zY=32;
	break;
  }

  obj=get('pointer').style;
  obj.width=zX-(mode? 0:2)+'px';
  obj.height=zY-(mode? 0:2)+'px';
}

function fileViewLoad(data)
{
  fileView(data);

  for(var i=1; i<=maxs; i++)
  {
    if(obj=get(id='item'+i))
    {
      obj.style.width=mode? zX+'px':'auto';
      obj.style.height=zY+'px';

      get(id+'-icon').className=data;
      get(id+'-name').style.textAlign=zC? 'center':'';
      display(id+'-data', zD);
      fileImage(i);
    }
  }

  if(done) fileSort();
}

function fileUpload()
{
  if(!halt && !stop) frame.document.form.submit();
}

function fileWallpaper(name, flag)
{
  name=(flag? '':dvrt+dirc)+(name!=undefined? name:fileList[sver][0]);
  get('body').style.backgroundImage='url(../'+setData('wallpaper', name)+')';
}

function fileZip(flag)
{
  fileSelectNone();
  ajaxRequest('zip-'+(flag? 'out':'in'), 'dirc='+getSwap(dvrt+dirc)+'&file='+getSwap(fileList[sver][0]));
}

function fileZipDone(data)
{
  if(data)
  {
    var a=data.split(':');
    fileDraw(a[0], a[1], a[2]);
    fileSort();
  }
}