﻿//////////////////////////////////////////////////////////////////////////////////////////////////////////
// inline page editor functions
////////////////////////////////////////////////////////////////////////////////////////////////////////
					  			
function b2ipe_res( fn )
{  
	return b2ipe_info.root+fn+'.b2ipe';
}

function b2ipe_hover(fn)
{  
}

var b2ipe_visiblemenus = new Array();
var b2ipe_buttonvisible = false;
var b2ipe_menuvisible = false;

function b2ipe_mmove(ho)
{
	// alert( "mmove" );
	// b2ipe_buttonvisible = true;
}

function b2ipe_mdown(ho)
{
	if( b2ipe_menuvisible )
	{					  
		new Effect.Appear( 'ipemenu', { duration: 0.3 } ) ;		
		b2ipe_menuvisible = false;
	}
	else	
	{
		new Effect.Fade	( 'ipemenu', { duration: 0.3 } ) ;
		b2ipe_menuvisible = true;
	}
}		  

function b2ipe_mover(ho)
{	
	if( !b2ipe_buttonvisible && !b2ipe_menuvisible )
	{
		new Effect.Move( 'ipebutton', { duration: 0.25, mode:'absolute', x:0, y:0 } );	
		b2ipe_buttonvisible = true;		
	}
}	
			
function b2ipe_mout(ho)
{	   
	if( b2ipe_buttonvisible && !b2ipe_menuvisible )
	{
		new Effect.Move( 'ipebutton', { duration: 0.25, mode:'absolute', x:0, y:-30 } );		
		b2ipe_buttonvisible = false;		
	}
}

function b2ipe_action(act, args)
{
	alert( 'do action '+act+', args '+args );
}
	   
function b2ipe_showMenu(id)
{
//	if( id == "ipemenu1" )
//		b2ipe_ensureSitemap();
//	if( id == "ipemenu2" )
//		b2ipe_ensureActions();

//	new Effect.Move( id, { duration: 0.33, mode:'absolute', x:0, y:0 } );	
	new Effect.SlideDown( id, { duration: 0.5 } );
	b2ipe_visiblemenus[ id ] = true;
}
		

function b2ipe_hideMenu(id)
{
	// var dim = Element.getDimensions( id );
	// var toy = -dim.height + 30;
	// new Effect.Move( id, { duration: 0.33, mode:'absolute', x:0, y:toy } );	
	new Effect.SlideUp( id, { duration: 0.5 } );
	b2ipe_visiblemenus[ id ] = false;	
}


function b2ipe_toggleMenu(id)
{
	// alert('');
	 
	if( b2ipe_visiblemenus[ id ] != null && b2ipe_visiblemenus[ id ] == true )
	{					   
		b2ipe_hideMenu(id);
	}
	else	
	{	
		b2ipe_showMenu(id);
	}
}

function b2ipe_loadTreeNode()
{
}

function b2ipe_custominit2()
{
	document.title = document.title + ' - You\'re editing page {'+b2ipe_info.node+'}';
			
	var el4 = document.createElement( 'div' );   
	el4.id = 'ipemenubutton1';	
	var ht = '';	
	ht += '<div class=\"ipemenubutton\" style=\"left:40px;\">';				  
	ht += '<p><a href=\"javascript:b2ipe_toggleMenu(\'ipemenu1\');\"><img src=\"'+b2ipe_res( "treelogo_gif" )+'\"> Sitemap</a><br/></p>';	
	ht += '</div>';	 
	el4.innerHTML = ht;
	document.body.appendChild( el4 );	 
					 				 
	el4 = document.createElement( 'div' );   
	el4.id = 'ipemenubutton2';	
	ht = '';
	ht += '<div class=\"ipemenubutton\" style=\"left:300px;\">';		   
	ht += '<p><a href=\"javascript:b2ipe_toggleMenu(\'ipemenu2\');\"><img src=\"'+b2ipe_res( "editlogo_gif" )+'\"> Basecamp</a><br/></p>';	
	ht += '</div>';	 
	el4.innerHTML = ht;
	document.body.appendChild( el4 );	
							
	el4 = document.createElement( 'div' );   
	el4.id = 'ipemenucontainer1';	
	ht = '';	
	ht += '<div class=\"ipemenu\" id=\"ipemenu1\" style=\"left:40px; display: none;\">';				  
	ht += '<div class=\"ipemenupadding\" id=\"b2ipe_sitemap\"><p>Loading sitemap...</p></div>';	
	ht += '</div>';	 
	el4.innerHTML = ht;
	document.body.appendChild( el4 );	 
					 				 
	el4 = document.createElement( 'div' );   
	el4.id = 'ipemenucontainer2';	
	ht = '';
	ht += '<div class=\"ipemenu\" id=\"ipemenu2\" style=\"left:300px; display: none;\">';		   
	ht += '<div class=\"ipemenupadding\" id=\"b2ipe_actions\"><p>Loading actions ...</p></div>';	
	ht += '</div>';	 
	el4.innerHTML = ht;
	document.body.appendChild( el4 );	
	
	b2ipe_ensureSitemap();
	b2ipe_ensureActions(); 
	
	// b2ipe_hideMenu( 'ipemenu2' );
}	   
			   
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// inline field editing functions
////////////////////////////////////////////////////////////////////////////////////////////////////////

function b2ipe_enableInlineEditing( elementid, node, propertyname, editortype )
{
} 

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// action functions
////////////////////////////////////////////////////////////////////////////////////////////////////////

function b2ipe_onActions( r )
{	 
	$('b2ipe_actions').innerHTML = r.responseText;
	b2ipe_actionsloaded = true;		
}

var b2ipe_actionsloaded = false;
function b2ipe_ensureActions()
{	 
	if( !b2ipe_actionsloaded )
	{
		var url = b2ipe_info.api;
		url += "?nodekey="+b2ipe_info.node+"&ipepagemenuhtml=1";		
		new Ajax.Request( url, { onSuccess:b2ipe_onActions } );	
	}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////
// action functions
////////////////////////////////////////////////////////////////////////////////////////////////////////


  
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// shortcuts
////////////////////////////////////////////////////////////////////////////////////////////////////////

function B2EIPE( elementid, node, propertyname, editortype )
{
	b2ipe_enableInlineEditing( elementid, node, propertyname, editortype );
} 






//////////////////////////////////////////////////////////////////////////////////////////////////////////
// sitemap functions
////////////////////////////////////////////////////////////////////////////////////////////////////////
			
			
var b2ipe_nodeCache = [];	 
var b2ipe_treeCache = [];
var b2ipe_expandedNodes = [];
				 
function b2ipe_onSitemapTreeData( r )
{
	b2ipe_sitemaploaded = true;
	
	var parentnode = '';
	var lines = r.responseText.split('\n');
	for( var j=0; j<lines.length; j++ )
	{
		var line  = lines[j].split('|');
		
		if( line[0] == 'parentnode' )
		{
			parentnode = line[1];		
			b2ipe_treeCache[ parentnode ] = new Array();
		}
		
		if( line[0] == 'node' )
		{
			var nodeobj = {
				key: line[1],
				children: line[2],
				parentkey: parentnode,	
				expanding: false,			
				expanded: false,   
				link: line[4],
				linktarget: line[5],
				name: line[6]
			}
		
			b2ipe_treeCache[ parentnode ].push( nodeobj.key );
			b2ipe_nodeCache[ nodeobj.key ] = nodeobj;
		}
	}
	
	b2ipe_renderSitemap();
}

function b2ipe_ensureNodeCache( parent )
{
	if(	b2ipe_treeCache[ parent ] )
	{
		// finns cachat redan
		b2ipe_renderSitemap();
	}
	else
	{
		// finns inte cachat
		var url = b2ipe_info.api;
		url += "?ipegetnodes="+parent;		
		new Ajax.Request( url, { onSuccess:b2ipe_onSitemapTreeData } );		
	}
}


var b2ipe_sitemaploaded = false;
function b2ipe_ensureSitemap()
{
	if( !b2ipe_sitemaploaded )
	{	
		b2ipe_expandedNodes = b2ipe_info.nodepath;		   
		b2ipe_ensureNodeCache( '' );
	}	
}

function b2ipe_toggleSitemapNode( nodekey )
{
	var idx = b2ipe_expandedNodes.indexOf( nodekey ) ;
	if( idx == -1 )
		b2ipe_expandedNodes.push( nodekey );
	else
		b2ipe_expandedNodes.splice( idx, 1 );
		
	// alert( b2ipe_expandedNodes );	
	b2ipe_ensureNodeCache( nodekey );	
}
		 
function b2ipe_getSitemapHTML( parent, depth )
{	
	var ht = '';
	
	if( b2ipe_treeCache[ parent ] )
	{
		for( var j=0; j<b2ipe_treeCache[ parent ].length; j++ )
		{
			var node = b2ipe_nodeCache[ b2ipe_treeCache[ parent ][j] ];
			var nodeexp = (b2ipe_expandedNodes.indexOf( node.key ) != -1);
			
			ht += '<nobr>';
			for( var k=0; k<depth; k++ )
				ht += '&nbsp;&nbsp; ';
				
			if( node.children > 0 )
			{
				ht += '<a href=\"javascript:b2ipe_toggleSitemapNode(\''+node.key+'\');\">';
				if( nodeexp )
					ht += '-';
				else
					ht += '+';
				ht += '</a> ';
			}
			else
			{
				ht += '&raquo; ';
			}
				
				
			// ht += '<a href=\"javascript:b2ipe_toggleSitemapNode(\''+node.key+'\');\">'+node.name+'</a>';
			
			if( node.key == b2ipe_info.node )	
				ht += '<b>'+node.name+'</b>';
			else			
				ht += '<a href=\"'+node.link+'\" target=\"'+node.linktarget+'\">'+node.name+'</a>';
			ht += '</nobr><br/>';
			
			
			
			if( nodeexp )
			{
					ht += b2ipe_getSitemapHTML( node.key, depth+1 );
				
			}
	
		}
	}	
	else
	{
		ht += '<nobr>';
		for( var k=0; k<depth; k++ )
			ht += '&nbsp; ';
			
		ht += '... Loading ...';
		ht += '</nobr><br/>';
		
		b2ipe_ensureNodeCache( parent );
	}
	
	return ht;
}


function b2ipe_renderSitemap()
{
	var ht = '';
	
	ht += '<p>';
	ht += b2ipe_getSitemapHTML( '', 0 );
	ht += '</p>';
	
	ht += '<p>';
	ht += '<a href=\"'+b2ipe_info.adminroot+'Nodes/Sitemap.aspx\" target=\"_blank\">View entire sitemap...</a>';
	ht += '</p>';
	
	$('b2ipe_sitemap').innerHTML = ht;
}




