<script language="php">

$me 
"index.php3"//Must assign this global within functions.

require('./config.inc.php3');
require(
'./language.inc.php');
require(
'./lucid.inc.php3');
require(
'./changeNodeTextBox.php');
require(
'./binaryData.inc.php');



###################################################################
# MAIN
###################################################################


    
$debugmessage ""// Clear debug message so functions can add to it.

    //Connect to the MySQL database once per page.
    //Must asssign $mysqlconnection as global in each function that uses it
    
$mysqlconnection mysql_pconnect($hostname,$username,$password);

    if (
$mysqlconnection 0) { // Connection established
        
mysql_select_db($dbname);
    } else { 
// Connection to MySQL server failed
         
DIE("Failed to connect to database");
    }


    
    if (!isset(
$NodeID)) { // No NodeID isssued to $me
        
$NodeID findlowestnode();
    }
    if (!isset(
$request)) { // No request issued to $me
        
$request "displaypage";
    }

    
$displaypage 1;
    
$redirect    0;
    
$mode "view";
    
$passthruText "";

    switch(
$request) {
        case 
"changenodetext":
            
$success changenodetext($NodeID,$NodeText);
            
$redirect 1;
            break;
        case 
"appendnodetext":
            
$success changenodetext($NodeID,$NodeText"append");
            
$redirect 1;
            break;
        case 
"addpin":
            
$success modifypins("add",$NodeID,$username);    
            break;
        case 
"removepin":
            
$success modifypins("remove",$NodeID,$username);
            break;
        case 
"findnode":
            
$mode "passthru";
            
$passthruText searchNodes($searchfor$NodeID$orderSTR$dirSTR$reportFormat);
            
$success 1;
            
$displaypage 1;
            break;
        case 
"deletenode":
            
$success deletenode($NodeID,$confirmation);
            if (
$success 0) { // Note that the first time this function is called it returnd
                        // a value of zero and puts a big confirmation form in the $debugmessage
                        // When the user selects yes, then deletenode is called again and the
                        // return value will show positive results
                
$NodeID findlowestnode();
            }
            break;
        case 
"exporttables":
            
exporttables($exporttype);
            
$sucess 1;
            
$displaypage 0;
            break;
        case 
"exportXML":
            echo 
exportXML();
            
$success 1;
            
$displaypage 0;
            break;
        case 
"exportMySQLDump":
            echo 
exportMySQLDump();
            
$success 1;
            
$displaypage 0;
            break;
        case 
"modifylinks":
            
$success modifylinks($NodeID,$ReferenceType,$NodeTitle);
            if (
$success 0) { // Node added or link added
                
$NodeID $success// go to the newly added link
                
$mode "edit";
            } elseif (
$success 0) { // Link removed
                
$success 1;
                
            } else { 
// failure
                
$success 0;
            }
            break;
        case 
"editnode":
            
$success=1;
            
$mode="edit";
            break;
        case 
"displaypage":
            
$success=1;
            break;
        case 
"setlayout":
            
$processresult processLayoutForm($layouttype$nodeID);
            echo 
$processresult;
            
$success=1;
            
$displaypage=0;
            break;
        case 
"getBinaryData":
            
getBinaryData($dataID);
            
$displaypage=0;
            
$success=1;
            break;
        case 
"displayBinaryUploadForm":
            echo 
displayBinaryUploadForm($NodeID);
            
$displaypage=0;
            
$success=1;
            break;
        case 
"uploadBinaryFile":
            if ( 
uploadBinaryFile($form_data$form_description$form_data_name$form_data_size$form_data_type$NodeID) ) { // File Uploaded
                
$displaypage=1;
                
$success=1;
                
$redirect=1;
            } else { 
// Failed upload
                
$displaypage=1;
                
$success=0;
            }
            break;
        case 
"deleteAttachment":
            if ( 
deleteAttachment($dataID) ) { // Success
                
$displaypage=1;
                
$success=1;
                
$redirect=1;
            } else { 
// Failed to delete attachment
                
$displaypage=1;
                
$success=0;
            }

        }




    if (
$success and $displaypage 0) {
        if ( 
$redirect == ) { // Just show the page. Don't worry about the details in the location bar of the web browser.
            
displaypage($NodeID,$mode,$passthruText);
        } else { 
// Redirect the page so the web browser location bar gets reset nicely.
            // this prevents problems with the back button showing post form data errors.
            
header("Location: $me?request=displaypage&NodeID=$NodeID");        
        }


    } elseif (
$success <= and $displaypage 0) { // Something's wrong
                            // Or this could be the deletenode confirmation dialogue
        
echo $debugmessage;
    } else { 
// Success, but don't display the page (as directed above)
        
if ( $redirect == ) { // reset the title of the page to $me&request=displaynode&NodeID=$NodeID
            
header("Location: $me?request=displaypage&NodeID=$NodeID");        
        }
    }

    
// mysql_close($mysqlconnection);



</script>