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.folder = '';

    // Идентификтор элемента куда будет помещаться путь к файлу.
    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.refresh = function(folder)
{
	//debugger;
    if (folder!=undefined)
    {
        this.folder = folder;
    }
    else
    {
        folder = this.folder;
    }
	
	var path_elem = document.getElementById( this.path_id );
	if (path_elem)
	{
		var path_elem_value = path_elem.getAttribute('value');
		if (path_elem_value != 'false')
		{
			this.get_folder_content( path_elem_value + '/' + folder );
			return;
		}
		
	}
	this.get_folder_content( folder );
}

/**
*	Запускает ajax-плагин для получения содержимого заданной папки.
*	@param String folder путь к папке, содержимое которой нужно получить.
*/
cFileManager.prototype.get_folder_content = function( folder )
{
	//debugger;
	var elem = document.getElementById( this.folder_div_id );
    //addEvent(elem, 'click', function(){ alert('serg'); });
    elem.onserg = function(){ file_manager_refresh(); };

    //elem.onserg();
	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()
{
	//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
       {
           // Получаем элемент для помещения туда пути к файлу.
            var input = document.getElementById(this.target_elem_id);
            if (input)
            {
                input.value = /*PROJECT_URL+*/'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.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)
{
	//debugger;
	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 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(); };