/**
 * Javascript file for treenode application
 * 
 * @author      Marko Manninen <marko@multimediastudio.fi>
 * @copyright   Copyright (c) 2006, Multimediastudio 
 * @license     LGPL - Lesser General Public License
 * @version     v. 1.0 2006/21/03 <marko@multimediastudio.fi>
 * @access 		public
 */

/*
	//získání id upravovaného typu
function getId_typu() {
	var id_typu = document.getElementById('predavac').innerHTML;
	return id_typu;
}
*/
/****************************************************************************
** Contextual menus
****************************************************************************/
//
var sContextualMenuId 		= ''
var sContextualMenuPrefix	= 'contextual_menu_'

// write contextual menu to the document
function printContextualMenu(mode,iNodeDepth,oblast,odkud) {
	var s = '<div id="'+sContextualMenuPrefix+mode+'" class="contextual_menu">'
	//alert(oblast);
	
	for( var k in aMenu[mode] ) {
    //upraveno
    if((k == "add") || (k == "edit")){
//  		s += '<a href="#" onclick="getId_typu()">'+aMenu[mode][k]+' '+k+' '+sNodeId+'</a>'
//  		s += '<a href="pridat.php?mod='+k+'&povolena_hloubka='+iNodeDepth+'&oblast='+oblast+'&height=500&width=600" class="thickbox" rel="nofollow">'+aMenu[mode][k]+'</a>'    
//  		s += '<a href="/dataset/default.php?middle=../sys_ad/menu/pridat&ctj=dataset&oblast=menu&mod='+k+'&ida=$ida&povolena_hloubka='+iNodeDepth+'&oblast='+oblast+'&mode=iframe&keepThis=true&TB_iframe=true&height=500&width=600" class="thickbox" rel="nofollow">'+aMenu[mode][k]+'</a>'    
//  		s += '<a href="pridat.php?mod='+k+'&ida=$ida&povolena_hloubka='+iNodeDepth+'&oblast='+oblast+'&odkud='+odkud+'&height=400&width=600" class="thickbox" rel="nofollow">'+aMenu[mode][k]+'</a>'    
  		s += '<a onclick="window.open(\'for_pridat.php?mod='+k+'&povolena_hloubka='+iNodeDepth+'&oblast='+oblast+'&odkud='+odkud+'&height=400&width=600\',\'\',\'width=500,height=600,resizable=1,scrollbars=1\')" style="cursor:pointer;" rel="nofollow">'+aMenu[mode][k]+'</a>'    
    }
    else if(k == "delete"){
//  		s += '<a href="#" onclick="getId_typu()">'+aMenu[mode][k]+' '+k+' '+sNodeId+'</a>'
  		s += '<a href="smazat.php?mod='+k+'&povolena_hloubka='+iNodeDepth+'&oblast='+oblast+'&odkud='+odkud+'&height=400&width=600" class="thickbox" rel="nofollow">'+aMenu[mode][k]+'</a>'    
    }
    else{
  		s += '<a href="#" onclick="contextualMenuAction(\''+k+'\');return false">'+aMenu[mode][k]+'</a>'
    } 
	}
	s += '</div>'
	document.write(s)
}

/****************************************************************************
** Contextual menu positioning
****************************************************************************/
// Detect browser If it is not IE, we assume that the browser is NS.
var IE = document.all ? true : false

// If NS -- that is, !IE -- then set up for mouse capture
if (!IE) document.captureEvents(Event.MOUSEMOVE)

// Set-up to use getMouseXY function onMouseMove
document.onmousemove = getMouseXY

// Temporary variables to hold mouse x-y pos.s
var tempX = 0
var tempY = 0

// Main function to retrieve mouse x-y pos.s
function getMouseXY(e) {
  if(IE) { // grab the x-y pos.s if browser is IE
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } else {  // grab the x-y pos.s if browser is NS
    tempX = e.pageX
    tempY = e.pageY
  }  
  // catch possible negative values in NS4
  if (tempX < 0){ tempX = 0 }
  if (tempY < 0){ tempY = 0 }  
  // show the position values in the form named Show
  // in the text fields named MouseX and MouseY
  return true
}

/****************************************************************************
** Node actions!!!
****************************************************************************/
// selected node
var sNodeId = null
var iNewNode = 0
var sTempNodeId = null
var sTempAction = null
var bOnlySubnodes = false
//
function contextualMenuAction(sActionName) {
	sContextualMenuId = sContextualMenuPrefix+sMenuMode
	var oMenuStyle = document.getElementById( sContextualMenuId ).style
	oMenuStyle.display = 'none'
	var sHref = '?action='+sActionName
	switch(sActionName) {
		case 'add':
			var sText = prompt( 'Give a name for a new node:' )
			if( sText ) {
				document.location.href = sHref+'&target_id='+sNodeId+'&node_title='+sText
			}
			if( document.getElementById(sNodeId) ) document.getElementById(sNodeId).className = '';
			break
			
		case 'edit':
			var sNodeName = document.getElementById(sNodeId).innerHTML
			var sText = prompt( 'Give a new name for a node ('+sNodeId+'):', sNodeName )
			if( sText ) {
				document.location.href = sHref+'&target_id='+sNodeId+'&node_title='+sText
			}
			if( document.getElementById(sNodeId) ) document.getElementById(sNodeId).className = '';
			break
			
		case 'delete_subnodes':
			bOnlySubnodes = true
			var sNodeName = document.getElementById(sNodeId).innerHTML
//			if( confirm( 'Are you sure you want to delete all subnodes for node ('+sNodeName+')?' ) ) {
			if( confirm( 'Opravdu chcete smazat všechny subpoložky položky ('+sNodeName+')?' ) ) {
				document.location.href = sHref+'&target_id='+sNodeId+'&only_subnodes='+bOnlySubnodes
			}
			if( document.getElementById(sNodeId) ) document.getElementById(sNodeId).className = ''
			break
			
		case 'delete':
			bOnlySubnodes = false
			var sNodeName = document.getElementById(sNodeId).innerHTML
//			if( confirm( 'Are you sure you want to delete node ('+sNodeName+') and all its subnodes?' ) ) {
			if( confirm( 'Opravdu chcete smazat položku ('+sNodeName+') a všechny její subpoložky?' ) ) {
				document.location.href = sHref+'&target_id='+sNodeId+'&only_subnodes='+bOnlySubnodes
			}
			if( document.getElementById(sNodeId) ) document.getElementById(sNodeId).className = ''
			break
		
		case 'move':
			// cannor move inside self node!
			sMenuMode 	= 'transfer'
			sTempNodeId = sNodeId
			bOnlySubnodes = false
			sTempAction = sActionName
			break
			
		case 'move_subnodes':
			// cannor move inside self node!
			sMenuMode 	= 'transfer'
			sTempNodeId = sNodeId
			bOnlySubnodes = true
			sTempAction = sActionName
			break
		
		case 'copy':
			sMenuMode 	= 'transfer'
			sTempNodeId = sNodeId
			bOnlySubnodes = false
			sTempAction = sActionName
			break
			
		case 'copy_subnodes':
			sMenuMode 	= 'transfer'
			sTempNodeId = sNodeId
			bOnlySubnodes = true
			sTempAction = sActionName
			break
			
		case 'order_up':		
		case 'order_down':
			document.location.href = sHref+'&target_id='+sNodeId
			if( document.getElementById(sNodeId) ) document.getElementById(sNodeId).className = ''
			break
		
		case 'custom':
			//document.location.href = sHref+'&target_id='+sNodeId
			if( document.getElementById(sNodeId) ) document.getElementById(sNodeId).className = ''
			break
		
		case 'here':
			// cannot move inside self node, but copy inside self is possible
			sMenuMode 	= 'full'
			if( document.getElementById(sNodeId) ) document.getElementById(sNodeId).className = '';
			if( document.getElementById(sTempNodeId) ) document.getElementById(sTempNodeId).className = ''
			if( ( sTempAction == 'move' || sTempAction == 'move_subnodes' ) && sNodeId == sTempNodeId ) {
//				alert( 'Cannot move node to itself!' )
				alert( 'Nelze přesunout položku samu do sebe!' )
			} else {
				document.location.href = '?action='+sTempAction+'&only_subnodes='+bOnlySubnodes+'&target_id='+sNodeId+'&source_id='+sTempNodeId
			}
			break
		
		case 'cancel':
			sMenuMode 	= 'full'
			if( document.getElementById(sNodeId) ) document.getElementById(sNodeId).className = '';
			if( document.getElementById(sTempNodeId) ) document.getElementById(sTempNodeId).className = ''
			break
	}
	
	//document.getElementById('tree_debug').value = document.getElementById('global_tree').innerHTML
}

/****************************************************************************
** Additional functions
****************************************************************************/
//
function removeChildrenFromNode(node) {
	if( node ) {
   		var len = node.childNodes.length
   		alert(len)
   		while (node.hasChildNodes()) node.removeChild(node.firstChild)
	}
}

//
function countNodes(oChilds) {
	if(oChilds) {
		return oChilds.childNodes.length
	} else {
		return 0
	}
}

var bMenuOpen = false
//
function swapNodee(lid) {
	if( bMenuOpen ) {
		bMenuOpen = false
		return false
	}
//	var uid = lid.replace(sLiPrefix,sUlPrefix)
    var uid = lid.replace("l_","u_")
	if( document.getElementById(uid) ) {
		oUlStyle = document.getElementById(uid).style
		oUlStyle.display = oUlStyle.display == 'block' || oUlStyle.display == '' ? 'none' : 'block'
	}
}
function swapNode(lid) {
	if( bMenuOpen ) {
		bMenuOpen = false
		return false
	}
//	var uid = lid.replace(sLiPrefix,sUlPrefix)
    var uid = lid.replace("l_","u_")
	if( document.getElementById(uid) ) {
		oUlStyle = document.getElementById(uid).style
		oUlStyle.display = oUlStyle.display == 'block' || oUlStyle.display == '' ? 'none' : 'block'
	}
}
// display contextual menu with mouse x y position
var sTempNodeIdX = null
//
function showContextualMenu( id ) {
	bMenuOpen = true
	var sContextualMenuId = sContextualMenuPrefix+sMenuMode
	if( document.getElementById(sTempNodeIdX) && sMenuMode != 'transfer' ) {
		document.getElementById(sTempNodeIdX).className = ''
	}
	sTempNodeIdX = id
	sNodeId = id
	document.getElementById(sNodeId).className = 'selected_node'
	var oMenuStyle = document.getElementById( sContextualMenuId ).style
	oMenuStyle.top = tempY-7
	oMenuStyle.left = tempX-10
	oMenuStyle.display = 'block'
	//upraveno - předání id položky do kontextového menu
	document.getElementById('predavac').innerHTML = id;
}
// show hide element
function swap(id) {
	var oStyle = document.getElementById(id).style
	oStyle.display = oStyle.display == 'block' || oStyle.display == ''|| oStyle.display == null || !oStyle.display ? 'none' : 'block'
}

