/*js*/
var _CURRENT_FOLDER_ID = false, _evt = YAHOO.util.Event, _dom = YAHOO.util.Dom, _connect = YAHOO.util.Connect;
_evt.onDOMReady
(
	function()
	{
		_evt.on(_dom.get('np-add-link'),'click',toggleTools,{id:'np-add-link', action:GetFolderSelect},true);
		_evt.on(_dom.get('np-add-folder'),'click',toggleTools,{id:'np-add-folder', action:GetFolders}, true);
		_evt.on(_dom.get('np-add-folder-new'),'click',addNewFolder);
		
		initFolderCloudLinks();
	}
);


function OpenNP(link)
{

	if(_dom.get('np')){
	
		var np = _dom.get('np');
		
		
		if(np.offsetHeight != 0) CloseNP();

		var html = document.documentElement, body = document.getElementsByTagName('body')[0];
		np.style.visibility = 'hidden';
		np.style.display = '';
		np.style.left = Math.round((html.offsetWidth - np.offsetWidth)/2) + 'px';
		scrollFix = html.scrollTop ? html.scrollTop : body.scrollTop;
		np.style.top = scrollFix + 0 + 'px';
		np.style.visibility = 'visible';
		
		if(link) _dom.get('new_link_url').value = _dom.get('np-current-url').innerHTML = link;
		
		GetLinks();
		GetFolders();
	}	

}

function CloseNP(){
	_dom.get('np').style.display = 'none';
}

function toggleTools()
{
	var tools = _dom.get(this.id + '-tools'), head = _dom.get(this.id).firstChild;
	
	if(tools.offsetHeight == 0)
	{	
		tools.style.display = '';
		head.style.color = '#c00';
		head.style.borderColor = '#c00';
		var toolsArray = _dom.getElementsByClassName('tools-block', 'div', 'np');
		for(var i = 0, l = toolsArray.length; i < l; i++)
		{
			if(toolsArray[i].id != this.id + '-tools') 
			{
				var tmp = _dom.get(toolsArray[i].id.replace('-tools',''));
				if(tmp)
				{
					var span = tmp.firstChild;
					span.style.color = '#333';
					span.style.borderColor = '#333';
				}
				toolsArray[i].style.display = 'none';
			}
		}
		this.action();
	}
	else
	{
		tools.style.display = 'none';
		head.style.color = '#333';
		head.style.borderColor = '#333';
	}
}

/*#####################################################################################*/
/*#####################################################################################*/
/*############################			FOLDERS		#####################################*/
/*#####################################################################################*/
/*#####################################################################################*/

function initFoldersTools()
{
	var ef = _dom.getElementsByClassName('edit-tools','img','np-add-folder-form'),
		df = _dom.getElementsByClassName('delete-tools','img','np-add-folder-form');
	
	_evt.on(_dom.get('np-folders-sort'),'click',SortFolders);
	
	for(var i = 0, len = ef.length; i < len; i++)
	{
		_evt.on(ef[i],'click',editFolder,{obj:ef[i], mode:'edit'},true);
		_evt.on(df[i],'click',deleteFolder,{obj:df[i]},true);
		
	}
}

function addNewFolder(e)
{
	_evt.stopPropagation(e);
	_evt.preventDefault(e);
	if(_dom.getElementsByClassName('editing','td','np-add-folder-table').length == 0) addNewRow();
}

function initFolderCloudLinks(){

	var links = _dom.getElementsByClassName('ajax-link','span','np-cloud-list');
	for(var i = 0, len = links.length; i < len; i++)
	{
		_evt.on(links[i],'click',GetLinks,{folderId:links[i].id.replace('folder_link_','')},true);
	}
}



function addNewRow()
{
	var table = _dom.get('np-add-folder-table');
	_utils.removeOdds(table);
	var	tRow = getNewRow(),
		nameCell = tRow.firstChild,
		nameCellInput = nameCell.firstChild,
		editCell = nameCell.nextSibling,
		deleteCell = editCell.nextSibling.nextSibling;
	nameCell.id = 'folder_' + Math.ceil(Math.random()*10000);
	_dom.addClass(nameCell,'editing');
	_dom.insertAfter(tRow,table.firstChild.firstChild);
	editCell.innerHTML = '<img src="/notepad/i/edit.gif" alt="Редактировать" title="Редактировать" class="edit-tools" id="'+nameCell.id+'-e" />';	
	deleteCell.innerHTML = '<img src="/notepad/i/delete.gif" alt="Редактировать" title="Редактировать" class="delete-tools" id="'+nameCell.id+'-d"  />';
	_evt.on(nameCellInput,'blur', saveFolder, { inp:nameCellInput, fid:nameCell.id, mode:'add' },true);
	_evt.on(editCell.firstChild,'click', editFolder, { obj : editCell.firstChild },true);
	_evt.on(deleteCell.firstChild,'click', deleteFolder, { obj : deleteCell.firstChild },true);
	nameCellInput.focus();
}

function getNewRow()
{
	var newRow = document.createElement('tr'),
		nameCell = document.createElement('td'),
		editCell = document.createElement('td'),
		sortCell = document.createElement('td'),
		deleteCell = document.createElement('td'),
		nameCellInput = document.createElement('input'),
		sortCellInput = document.createElement('input');
	
	nameCellInput.type = 'text';
	nameCellInput.name = 'new_folder_name';
	nameCellInput.value = 'Новая папка';
	sortCellInput.type = 'text';
	sortCellInput.value = '';
	_dom.addClass(nameCell,'name editing');
	nameCell.id = 'folder_'+Math.ceil(Math.random()*10000);
	_dom.addClass(newRow,'tools-row');
	_dom.addClass(editCell,'tools');
	_dom.addClass(deleteCell,'tools');
	_dom.addClass(sortCell,'sort');
	
	nameCell.appendChild(nameCellInput);
	sortCell.appendChild(sortCellInput);
	
	newRow.appendChild(nameCell);
	newRow.appendChild(editCell);
	newRow.appendChild(sortCell);
	newRow.appendChild(deleteCell);
	return newRow;
}


function editFolder(e)
{
	_evt.stopPropagation(e);
	var id = this.obj.id.replace('-e',''), cell = _dom.get(id);
	if(!/editing/.test(cell.className))
	{
		_dom.addClass(cell,'editing');
		var txt = cell.firstChild.nodeValue, i = document.createElement('input');
		i.name = 'new_folder_name';
		i.type = 'text';
		i.value = txt;
		_evt.on(i,'blur', saveFolder, {inp:i, fid:id, mode:'edit'},true);
		cell.removeChild(cell.firstChild);
		cell.appendChild(i);
		i.focus();
	}
	
}

function deleteFolder(e)
{	
	_evt.stopPropagation(e);
	var id = this.obj.id.replace('-d','').replace('folder_','');
	if (confirm('Удаление папки приведет к удалению всех ссылок в ней, продолжить?')) DeleteFolder(id);
}

function saveFolder(e)
{
	_evt.stopPropagation(e);
	if(this.mode == 'add') AddFolder(); else if(this.mode == 'edit') EditFolder(this.fid.replace('folder_',''));
}

/*работа с папками*/

/*#####################################################################################*/
/*#####################################################################################*/
/*#################################			LINKS		#################################*/
/*#####################################################################################*/
/*#####################################################################################*/

function initLinksTools()
{
	_evt.on(_dom.get('np-links-sort'),'click',SortLinks);
	var el = _dom.getElementsByClassName('edit-tools','img','np-cloud-link-form'),
		dl = _dom.getElementsByClassName('delete-tools','img','np-cloud-link-form');
	for(var i = 0, len = el.length; i < len; i++)
	{
		_evt.on(el[i],'click',editLink,{obj:el[i]},true);
		_evt.on(dl[i],'click',deleteLink,{obj:dl[i]},true);
	}
}

function editLink(e)
{
	_evt.stopPropagation(e);
	var id = this.obj.id.replace('-e',''), cell = _dom.get(id);
	if(!/editing/.test(cell.className))
	{
		_dom.addClass(cell,'editing');
		var a = cell.firstChild,
			txt = a.firstChild.nodeValue,
			i = document.createElement('input');
		
		i.name = 'new_link_name';
		i.type = 'text';
		i.value = txt;
		_evt.on(i,'blur', saveLink, {inp:i, fid:id, link:a, mode:'edit'},true);
		a.style.display = 'none';
		cell.appendChild(i);
		i.focus();
	}
	
}

function saveLink(e)
{
	_evt.stopPropagation(e);
	EditLink(this.fid.replace('link_',''));
}

function deleteLink(e)
{
	_evt.stopPropagation(e);
	var id = this.obj.id.replace('-d','').replace('link_','');
	if (confirm('Удалить ссылку?')) DeleteLink(id);
}


function showMask()
{
	var panel = _dom.get('xxx-x-panel'), np = _dom.get('np');
	panel.style.visibility = 'hidden';
	panel.style.display = '';
	panel.style.width = (np.offsetWidth - 3) + 'px';
	panel.style.height = (np.offsetHeight - 3) + 'px';
	_dom.setStyle(panel,'opacity',0.3);
	panel.style.visibility = 'visible';
}

function hideMask()
{
	_dom.get('xxx-x-panel').style.display = 'none';
}

function AjaxQuery(query, successCallback, errorCallback, formId)
{
	showMask();
	if(formId) _connect.setForm(formId);
	var c = 
		{ 
			success : function(o)
			{
				hideMask();
				var result = _utils.getXMLcontent(o);
				if(result['error']) errorCallback(result);
				else successCallback(result);
			}, 
			failure : function(o)
			{
				hideMask();
				errorCallback(false,o)
			} 
		};
	query += '&cash='+Math.random();
	_connect.asyncRequest('POST', query, c);
}

function alertError(result, o)
{
	if(result) alert(result['error']); 
	else alert('Сервер www.good-cook.ru не отвечает. Попробуйте еще раз.'); 
}




function GetLinks()
{ 
	_CURRENT_FOLDER_ID = this.folderId;
		if(_CURRENT_FOLDER_ID){
		var	toolsArray = _dom.getElementsByClassName('tools-block', 'div', 'np');
		for(var i = 0, l = toolsArray.length; i < l; i++)
		{
			if(toolsArray[i].id != this.id + '-tools') 
			{
				var tmp = _dom.get(toolsArray[i].id.replace('-tools',''));
				if(tmp)
				{
					var span = tmp.firstChild;
					span.style.color = '#333';
					span.style.borderColor = '#333';
				}
				toolsArray[i].style.display = 'none';
			}
		}

		this.folderId = (typeof(this.folderId) != 'undefined') ? this.folderId : 0;
		AjaxQuery('/notepad/ajax/notepad.ajax.php?func=get_links&folder_id='+this.folderId, UpdateLinks, alertError);
	}
}

function GetFolders(){ _CURRENT_FOLDER_ID = 0; AjaxQuery('/notepad/ajax/notepad.ajax.php?func=get_folders', UpdateFolders, alertError); }


function GetFolderSelect(){	_CURRENT_FOLDER_ID = 0; AjaxQuery('/notepad/ajax/notepad.ajax.php?func=get_folders_select', UpdateFolderSelect, alertError); }
function UpdateFolderSelect(result)
{ 
	_dom.get('np-add-link-folders').innerHTML = result['folders_select_html']; 
	if(result['folders_cloud_html']) UpdateFoldersCloud(result);
}


function UpdateLinks(result)
{
	_dom.get('np-cloud-link-tools').style.display = '';
	_dom.get('np-cloud-link-tools').innerHTML = result['links_html'];
	initLinksTools();
	
	if(result['folders_cloud_html']) UpdateFoldersCloud(result);
}

function UpdateFolders(result)
{
	_dom.get('np-add-folder-table-c').innerHTML = result['folders_html'];
	initFoldersTools();
	
	if(result['folders_cloud_html']) UpdateFoldersCloud(result);
}

function UpdateFoldersCloud(result)
{
	_dom.get('np-cloud-list').innerHTML = result['folders_cloud_html'];
	initFolderCloudLinks();
}


function AddLink(){ 
	_CURRENT_FOLDER_ID = _dom.get('add_link_folder_select').options[_dom.get('add_link_folder_select').selectedIndex].value;
	AjaxQuery('/notepad/ajax/notepad.ajax.php?func=add_link&cur_folder_id='+_CURRENT_FOLDER_ID, UpdateLinks, alertError, 'np-add-link-form'); 
	_dom.get('np-add-link-tools').style.display = 'none';
}

function AddFolder() { AjaxQuery('/notepad/ajax/notepad.ajax.php?func=add_folder&cur_folder_id='+_CURRENT_FOLDER_ID, UpdateFolders, alertError, 'np-add-folder-form'); }


function SortFolders() { AjaxQuery('/notepad/ajax/notepad.ajax.php?func=sort_folders', UpdateFolders, alertError, 'np-add-folder-form'); }
function SortLinks() { AjaxQuery('/notepad/ajax/notepad.ajax.php?func=sort_links'+'&cur_folder_id='+_CURRENT_FOLDER_ID, UpdateLinks, alertError, 'np-cloud-link-form'); }


function EditLink(id){ AjaxQuery('/notepad/ajax/notepad.ajax.php?func=edit_link&id='+id+'&cur_folder_id='+_CURRENT_FOLDER_ID, UpdateLinks, alertError, 'np-cloud-link-form'); }
function EditFolder(folderId){ AjaxQuery('/notepad/ajax/notepad.ajax.php?func=edit_folder&folder_id='+folderId+'&cur_folder_id='+_CURRENT_FOLDER_ID, UpdateFolders, alertError, 'np-add-folder-form'); }


function DeleteFolder(folderId)
{
	AjaxQuery('/notepad/ajax/notepad.ajax.php?func=delete_folder&folder_id='+folderId+'&cur_folder_id='+_CURRENT_FOLDER_ID, UpdateFolders, alertError);
	if(folderId == _CURRENT_FOLDER_ID)
	{ 
		GetLinks();
		_dom.get('np-cloud-link-tools').innerHTML = '';
	}
}

function DeleteLink(id){ AjaxQuery('/notepad/ajax/notepad.ajax.php?func=delete_link&id='+id+'&cur_folder_id='+_CURRENT_FOLDER_ID, UpdateLinks, alertError); }
