/**
 * Файловый менеджер.
 */
var cFileManager = function()
{
    this.folder_div_id = 'file_manager_folders';
    this.path_id = 'file_manager_path';
    this.init_callback = function() {  };
    this.draw_folders_callback = function() {  };

    // текущая папка.
    this.current_folder = '';

    this.folders = new Array();

    // Идентификтор элемента куда будет помещаться путь к файлу.
    this.target_elem_id = false;
}

cFileManager.prototype.init = function()
{
    // Вызываем call_back функцию инициализации.
    this.init_callback();
}

/**
 *  Устанавливает target_elem_id
 *  @param String target_elem_id идентификатор элемента назначения.
 */
cFileManager.prototype.set_target_elem_id = function(target_elem_id)
{
    this.target_elem_id = target_elem_id;
}

cFileManager.prototype.add_folder = function(folder)
{
    if (folder != undefined) {
        if (folder != '') {
            this.folders.push(folder);
        }
    }
    
}

/**
*	Обновление области просмотра каталогов.
*	@parem string folder - папка, которую мы открываем
*/
cFileManager.prototype.refresh = function(folder)
{
    this.add_folder(folder);

    var path = this.folders.join('/');

    this.get_folder_content( path );
}

/**
*	Запускает ajax-плагин для получения содержимого заданной папки.
*	@param String folder путь к папке, содержимое которой нужно получить.
*/
cFileManager.prototype.get_folder_content = function( folder )
{
    var elem = hydra.get('s_file_manager_image_target_dir');
    elem.value = this.folders.join('/');
    


	var elem = document.getElementById( this.folder_div_id );
    //addEvent(elem, 'click', function(){ alert('serg'); });
    elem.onserg = function(){file_manager_refresh();  clearInterval(progess_bar_interval_id)};

    
	if (elem)
	{
		elem.innerHTML = 'Загрузка...';
		
		var params = new Array();
		params['s_path'] = folder;
		call_ajax('file_manager_dir_content', this.folder_div_id, params);
	}
}

cFileManager.prototype.draw_parent_folder = function()
{
    this.folders.pop();
    var path = this.folders.join('/');
    this.get_folder_content( path );
    return;

	//debugger;
	var path_elem = document.getElementById( this.path_id );
	if (!path_elem)
	{
		return false;
	}

	var path_value = path_elem.value;
	var paths = path_value.split('/');
	
	// Чистим путь
	var new_path = new Array();
	for (var i=0; i<paths.length-1; i++)
	{
		if (paths[i].length > 0)
		{
			new_path.push( paths[i] );
		}
	}
	//delete paths[ paths.length-1 ];
	path_value = new_path.join('/');

	this.get_folder_content( path_value );
}

cFileManager.prototype.add_image = function()
{
 //   var iframe_doc = hydra_wysiwyg_editor.get_iframe_doc();
    
  //  var selection = iframe.contentWindow.getSelection();
   // var selection = iframe_doc.getSelection(); //
   // theRange = selection.createRange(); //getRangeAt(0);
   //   theRange.collapse(false);

   // Получаем элемент, где хранится путь к файлу.
   var file_elem = document.getElementById('file_manager.current_file');
   if (!file_elem)
   {
       return false;
   }

   
   if (this.target_elem_id)
   {
       // Если у нас элемент назначения редактор
       if (this.target_elem_id == 'iframe')
       {
            var iframe = hydra_wysiwyg_editor.get_iframe_elem();
            if(iframe)
            {
                iframe.contentWindow.document.execCommand('InsertImage', false, PROJECT_URL+'upload/'+file_elem.value);
                return true;
            }
       }
       else
       {
           //alert('"'+this.target_elem_id+'"');
           // Получаем элемент для помещения туда пути к файлу.
            var input = document.getElementById(this.target_elem_id);
            //alert(input);
            if (input)
            {
                input.value = /*PROJECT_URL+*/'upload/'+file_elem.value;
            }
            else {
                alert("Не могу найти элемент для вставки "+this.target_elem_id);
            }
            
            return true;
       }
   }



/*
    var theImageNode = iframe.contentWindow.document.createElement("img");

    //alert(PROJECT_URL);
    var file_elem = document.getElementById('file_manager.current_file');
    theImageNode.setAttribute('src', PROJECT_URL+'upload/'+file_elem.value); //PROJECT_URL+
 //theImageNode.alt = 'sadsad';

 iframe.contentWindow.document.body.appendChild(theImageNode);*/
}

cFileManager.prototype.delete_file = function()
{
   var file_elem = document.getElementById('file_manager.current_file');
   if (!file_elem)
   {
       return false;
   }
   var params = new Array();
    params['s_delete_file_name']=file_elem.value;
    call_ajax('file_manager_delete_file', '', params);
    //alert(file_elem.value);
    return true;
 //   var iframe_doc = hydra_wysiwyg_editor.get_iframe_doc();

  //  var selection = iframe.contentWindow.getSelection();
   // var selection = iframe_doc.getSelection(); //
   // theRange = selection.createRange(); //getRangeAt(0);
   //   theRange.collapse(false);

   // Получаем элемент, где хранится путь к файлу.
   /*var file_elem = document.getElementById('file_manager.current_file');
   if (!file_elem)
   {
       return false;
   }

   if (this.target_elem_id)
   {
       // Если у нас элемент назначения редактор
       if (this.target_elem_id == 'iframe')
       {
            var iframe = hydra_wysiwyg_editor.get_iframe_elem();
            if(iframe)
            {
                iframe.contentWindow.document.execCommand('InsertImage', false, PROJECT_URL+'upload/'+file_elem.value);
                return true;
            }
       }
       else
       {
           // Получаем элемент для помещения туда пути к файлу.
            var input = document.getElementById(this.target_elem_id);
            if (input)
            {
                input.value = 'upload'+file_elem.value;
            }

            return true;
       }
   }*/



/*
    var theImageNode = iframe.contentWindow.document.createElement("img");

    //alert(PROJECT_URL);
    var file_elem = document.getElementById('file_manager.current_file');
    theImageNode.setAttribute('src', PROJECT_URL+'upload/'+file_elem.value); //PROJECT_URL+
 //theImageNode.alt = 'sadsad';

 iframe.contentWindow.document.body.appendChild(theImageNode);*/
}

cFileManager.prototype.set_current_file = function(file_name)
{
    var current_file_elem = document.getElementById('file_manager.current_file');
    current_file_elem.setAttribute('value', file_name);
}

/**
 * Создает директорию.
 **/
cFileManager.prototype.create_folder = function()
{
    
    var folder = prompt("Введите имя директории : ");
    var path = get_element('file_manager_path').value;

    var params = new Array();
    params['s_folder'] = folder;
    params['s_path'] = path;
    call_ajax('file_manager_create_folder', '', params);

}

/**
*	Выводит содержимое папки на основании данных из data 
*	@param Object data
*/
cFileManager.prototype.draw_folders = function(data)
{
	// Создаем div в котором будем выводить папки и файлы
	var div_elem = document.getElementById( this.folder_div_id );
	if ( !div_elem )
	{
		return false;
	}
	div_elem.innerHTML = '';
	
	if (data.folders != undefined)
	{
		var len = data.folders.captions.length;
		for (i=0; i<len; i++)
		{
			var folder_caption = data.folders.captions[i];
			var elem = document.createElement('a');

			elem.setAttribute('href', 'javascript: file_manager.refresh("' + folder_caption + '")');
			elem.setAttribute('class', 'folder');
			elem.textContent = folder_caption;
		
			div_elem.appendChild( elem );

			var br_elem = document.createElement('br');
			div_elem.appendChild( br_elem );
		}
	}
	
	if (data.files != undefined)
	{
		var len = data.files.captions.length;
		for (i=0; i<len; i++)
		{
			var elem = document.createElement('a');
			var file_caption = data.files.captions[i];

			elem.setAttribute('href', 'javascript:file_manager.set_current_file("'+data.path+'/'+file_caption+'");');
			elem.setAttribute('class', 'file');
			elem.textContent = file_caption;
		
			div_elem.appendChild( elem );

                        var elem = document.createElement('span');
                        elem.textContent = data.files.size[i];
                        div_elem.appendChild( elem );

			var br_elem = document.createElement('br');
			div_elem.appendChild( br_elem );
		}
	}
	
        
	// создание path.
	var path_elem = document.createElement('input');
	path_elem.setAttribute('type', 'hidden');
	path_elem.setAttribute('name', 'path');
	path_elem.setAttribute('id', 'file_manager_path');
	path_elem.setAttribute('value', data.path);
	div_elem.appendChild( path_elem );
	

	// Создание folder up.
	if (data.path!='false')
	{
		var image_elem = document.createElement('img');
		image_elem.setAttribute('src', '../_components/widgets/file_manager/i/up.ico');
		//image_elem.setAttribute('onclick', 'file_manager.refresh("' + data.path + '");');
		image_elem.setAttribute('onclick', 'file_manager.draw_parent_folder();');
		
		div_elem.appendChild( image_elem );

	}


    var br_elem = document.createElement('br');
    div_elem.appendChild( br_elem );
    var current_file_elem = document.createElement('input');
    current_file_elem.setAttribute('type', 'text');
	current_file_elem.setAttribute('name', 'current_file');
	current_file_elem.setAttribute('id', 'file_manager.current_file');
	current_file_elem.setAttribute('value', '');
	div_elem.appendChild( current_file_elem );

	this.draw_folders_callback();
}

function file_manager_refresh()
{
    if (file_manager != undefined)
    {
        file_manager.refresh();
    }
}

function set_file_upload_target_dir()
{
	var path_elem = document.getElementById('file_manager_path');
	if (!path_elem)
	{
		return false;
	}
	//alert(path_elem.value);

	
	var target_dir_elem = document.getElementById('s_file_manager_image_target_dir');
	if (!target_dir_elem)
	{
	
		return false;
	}

    var target = document.getElementById('s_file_manager_image_div');
    var target_dir = target.getAttribute('target_dir');
    //alert(target_dir);

	target_dir_elem.value = target_dir + path_elem.value + '/';
	//alert(target_dir_elem.value);
}

// Инстанцирование класса
file_manager = new cFileManager();
// Устанавливаем call-back функцию
file_manager.init_callback = function() {run_widgets('file_manager');};
file_manager.draw_folders_callback = function() {set_file_upload_target_dir();};