//Portal Analytical Chemistry in Russia (Copyright)
//-------------------------------------------------
//Menu functions
//To make working copy, save additioanlly this file AS MENU.ASP !!!
//==================================================================
//
/*Versions: 
		November, 01, 2002  (vpk) css is used
		November, 10, 2002  (vis) setting of links
		March,    03, 2003  (vpk) asp links are included
		March,    23, 2003  (vpk) visitors/session counter is added
		April,    03, 2003  (vpk) removing of some items not used anymore (loke some Introductions)
		April,	  11, 2003  (vpk) Oborudovanie via *.asp
		April,    14, 2003  (vpk) possibility to load frame as external page (start from any page)
		April,    14, 2003  (vpk) conferences
		June,     18, 2003  (vis) Publications item is commented
		March,    01, 2004  (vis) Slide changhing of menu
		June,	    07, 2004  (vpk) new page, set as news_js_faster.asp (instead of news_js.asp)
		October,  15, 2009   (vpk) WSS site link- is on, Search- is off
*/
// This global array holds all the tree nodes
var nodes_array = new Array()

// This global variable holds the currently displayed document
var current_document = -1

//Open folders (2 levels from level 1)
var Folder1= "Главная папка"
var Folder2= ""
var FolderBanner= Folder1
var szNsakhShort= "НСАХ РАН"
var szNsakhFull= "Научный Совет по аналитической химии РАН (НСАХ РАН)"
var iVisitorsCounter
var iSessionCounter

// Pre-load the images
var temp_image = new Image(22, 16)
temp_image.src = "open.gif"
var temp_image = new Image(22, 16)
temp_image.src = "closed.gif"
var temp_image = new Image(18, 13)
temp_image.src = "plus.gif"
var temp_image = new Image(18, 13)
temp_image.src = "minus.gif"
var temp_image = new Image(22, 16)
temp_image.src = "open_page.gif"
var temp_image = new Image(22, 16)
temp_image.src = "closed_page.gif"
//Place for direct code


// This function creates a node in the tree with the following arguments:
//    level - The level within the tree hierarchy (0 = top)
//    index - The node's index within the global nodes_array
//    text  - The text displayed in the tree for this node
//    state - Folder: "open" (expanded) or "closed" (collapsed)
//            Document: "open" (displayed) or "closed" (hidden)
//    url   - For a document, the address it will display when clicked

function node_data (level, index, text, state, url) 
{
    this.level = level
    this.index = index
    this.text = text
    this.state = state
    this.url = url
}

// This function creates a node in the tree; the
// arguments are used by the node_data() function

function create_node(level, text, state, url) 
//============================================
{

    // Create a new node array
    var new_node = new Array()
    
    // Put it in the global nodes_array
    var nodes_index = nodes_array.length
    nodes_array[nodes_index] = new_node

    // The first item in the array is the node_data object
    new_node[0] = new node_data(level, nodes_index, text, state, url)
    
    // Return the array
    return new_node
}

// This function adds a child to an existing parent node
function add_child(parent_node, child_node) 
//============================================

{

    // We're adding an item to the parent's array, so the array's
    // current length represents the next index of that array
    var next_index = parent_node.length
    
    // Add the child node to the parent's array
    parent_node[next_index] = child_node
    
    // Return the child
    return child_node
}

// This function builds the node of the navigation tree
function build_tree() 
//============================================

{

    // Begin with the main node
    main_node = create_node(0, " ", "open", "") //*****was closed
    
        // Add the child nodes
        level1_node = add_child(main_node, create_node(1, "Новости", "closed", "news_js.asp"))
        level1_node = add_child(main_node, create_node(1, "О портале", "closed", "about.htm"))
        //level1_node = add_child(main_node, create_node(1, "Поиск на сайте", "closed", "Search_form.htm"))
        level1_node = add_child(main_node, create_node(1, "Интерактивные (wss) сайты", "closed", "http://194.67.119.6:83/wss/default.aspx"))
        level1_node = add_child(main_node, create_node(1, "Регистрация", "closed", "ClientLog/ClientEnter.asp"))
        
        level1_node = add_child(main_node, create_node(1, szNsakhShort, "closed", "")) //"НСАХ РАН"
            level2_node = add_child(level1_node, create_node(2, "Предисловие", "closed", "nsach/about.htm"))
            level2_node = add_child(level1_node, create_node(2, "Бюро Совета", "closed", "nsach/Burea_ns.htm"))
            level2_node = add_child(level1_node, create_node(2, "Члены Совета", "closed", "nsach/Members_ns.htm"))
            level2_node = add_child(level1_node, create_node(2, "Комиссии", "closed", "nsach/Commissions/list_comissions.htm"))
            level2_node = add_child(level1_node, create_node(2, "Отделения", "closed", "nsach/Divisions/list_divisions.htm"))
            level2_node = add_child(level1_node, create_node(2, "Ассоциации", "closed", "nsach/Associations/Content_assosiations.htm"))
            level2_node = add_child(level1_node, create_node(2, "Рабочие группы", "closed", "nsach/Work_group/list_work_group.htm"))
            level2_node = add_child(level1_node, create_node(2, "Организации", "closed", "nsach/Organizations/List_organizations.htm"))
            level2_node = add_child(level1_node, create_node(2, "Годичные сессии", "closed", "nsach/Annual sessions/List of annual sessions.htm"))
            level2_node = add_child(level1_node, create_node(2, "Документы", "closed", ""))
				level3_node = add_child(level2_node, create_node(3, "Отчеты", "closed", "nsach/Reports/List of Reports.htm"))
	            
        level1_node = add_child(main_node, create_node(1, "Кто есть кто...", "closed", ""))
        	level2_node = add_child(level1_node, create_node(2, "О справочнике", "closed", "who_is_who/about.htm"))
			level2_node = add_child(level1_node, create_node(2, "Предисловие", "closed", "who_is_who/about_who.htm"))
        	level2_node = add_child(level1_node, create_node(2, "Указатель", "closed", "who_is_who/pointer.htm"))
        	level2_node = add_child(level1_node, create_node(2, "Доктора наук", "closed", "who_is_who/pointer_doctor.htm"))

        level1_node = add_child(main_node, create_node(1, "Журналы", "closed", ""))
        	level2_node = add_child(level1_node, create_node(2, "ЖАХ", "closed", "http://194.67.119.21:89"))
        	level2_node = add_child(level1_node, create_node(2, "Заводская лаб.", "closed", "http://phase.imet.ac.ru/zavlabor/"))
        	level2_node = add_child(level1_node, create_node(2, "Аналитика и контроль", "closed", "http://www.aik.ru/"))
        	//level2_node = add_child(level1_node, create_node(2, "Лабораторный журнал", "closed", "http://www.lab-press.ru/"))
        	level2_node = add_child(level1_node, create_node(2, "Все журналы", "closed", "Resources/GetResources.asp?IdN=20000&Table=ResourcesTypes"))
        	
        	      	
		level1_node = add_child(main_node, create_node(1, "Конференции, выставки", "closed", ""))  
			level2_node = add_child(level1_node, create_node(2, "Российские", "closed", "conferences.asp?Selection=RussiaOnly"))
		    level2_node = add_child(level1_node, create_node(2, "Все(по дате)", "closed", "conferences.asp?Selection=AllOpenDate"))
			level2_node = add_child(level1_node, create_node(2, "Все(по странам)", "closed", "conferences.asp?Selection=AllCountry"))
			level2_node = add_child(level1_node, create_node(2, "Выставки", "closed", "conferences.asp?Selection=JustExibitions"))
	        level2_node = add_child(level1_node, create_node(2, "Архив", "closed", "conferences.asp?Selection=Archive"))
	
		level1_node = add_child(main_node, create_node(1, "Московские семинары", "closed", ""))  
			level2_node = add_child(level1_node, create_node(2, "Планируемые", "closed", "nsach/seminar/MoscowSemsSQL_vb.asp"))
			level2_node = add_child(level1_node, create_node(2, "Архив", "closed", ""))
				level3_node = add_child(level2_node, create_node(3, "ГЕОХИ РАН", "closed", "nsach/seminar/Archive_Sem_GEOKHI.asp"))
				level3_node = add_child(level2_node, create_node(3, "МГУ", "closed", "nsach/seminar/Archive_Sem_MGU.asp"))
		
		level1_node = add_child(main_node, create_node(1, "Оборудование", "closed", ""))   
			//level2_node = add_child(level1_node, create_node(2, "Введение", "closed", "Equipment/list_quipment.htm"))
			level2_node = add_child(level1_node, create_node(2, "Приборы", "closed", "Resources/GetResources.asp?IdN=1000&Table=ClientProfile"))
   			level2_node = add_child(level1_node, create_node(2, "Лабораторное оборуд.", "closed", "Resources/GetResources.asp?IdN=2000&Table=ClientProfile"))
            level2_node = add_child(level1_node, create_node(2, "Реактивы", "closed", "Resources/GetResources.asp?IdN=1700&Table=ClientProfile"))
			level2_node = add_child(level1_node, create_node(2, "Средства защиты", "closed", "Resources/GetResources.asp?IdN=1800&Table=ClientProfile"))
			level2_node = add_child(level1_node, create_node(2, "Мебель", "closed", "Resources/GetResources.asp?IdN=1900&Table=ClientProfile"))

		level1_node = add_child(main_node, create_node(1, "Ресурсы WWW", "closed", ""))
			//level2_node = add_child(level1_node, create_node(2, "Введение", "closed", "Resources/about_res.htm")) 
			level2_node = add_child(level1_node, create_node(2, "Рубрикация", "closed", "Resources/ShowTypes.asp"))
	         
	    level1_node = add_child(main_node, create_node(1, "История", "closed", ""))
        	level2_node = add_child(level1_node, create_node(2, "Публикации", "closed", "History/publ-history.htm"))       

	    
    //show home page (News)
    if (current_document == 1) frames["content_frame"].location = "news_js_faster.asp"

    
    // Write the navigation menu
    timeout_id = setTimeout("write_menu()", 50)
}

function write_menu() 
//============================================
{
	Folder1= "Главная папка"
	Folder2= ""

    // Clear the frame and write the basic opening tags
    frames["tree_frame"].document.clear()
    //March, 23, 2003:
    frames["tree_frame"].document.writeln('<%@ LANGUAGE = "JScript" %>')
    
    frames["tree_frame"].document.writeln('<html>')
    frames["tree_frame"].document.writeln('<head>')
    frames["tree_frame"].document.writeln('<title>')
    frames["tree_frame"].document.writeln('Menu Frame')
    frames["tree_frame"].document.writeln('<\/title>')
       frames["tree_frame"].document.writeln('<LINK REL=STYLESHEET HREF= "css/rac_menu.css">')

    frames["tree_frame"].document.writeln('<\/head>')
    frames["tree_frame"].document.writeln('<body>')
    frames["tree_frame"].document.writeln('Меню:')

    frames["tree_frame"].document.writeln('<a href="javascript:parent.change_all(\'open\')"><img src="images/plus.gif" border="0"></a>')
    frames["tree_frame"].document.writeln('<a href="javascript:parent.change_all(\'closed\')"><img src="images/minus.gif" border="0"></a>')
    frames["tree_frame"].document.writeln('<hr>')
    
    // Create a table for each node
    frames["tree_frame"].document.writeln('<table border="0" cellspacing="0" cellpadding="0">')
/*    
    // Write the main node
    frames["tree_frame"].document.writeln('<tr>')
    frames["tree_frame"].document.writeln('<td valign="top">')
    frames["tree_frame"].document.writeln('<a href="javascript:parent.toggle_state(\'' + main_node[0].index + '\')">')
    
    if (main_node[0].state == "closed") {
        frames["tree_frame"].document.writeln('<img src="images/plus.gif" border="0"></a><img src="images/closed.gif">')
    }
    else {
        frames["tree_frame"].document.writeln('<img src="images/minus.gif" border="0"></a><img src="images/open.gif">')
    }
*/    
    frames["tree_frame"].document.writeln('<\/td>')
    frames["tree_frame"].document.writeln('<td>')
    frames["tree_frame"].document.writeln(main_node[0].text) //
    frames["tree_frame"].document.writeln('<\/td>')
    frames["tree_frame"].document.writeln('<\/tr>')
    frames["tree_frame"].document.writeln("<\/table>")

    // If the main node state is "open", write the child nodes
    if (main_node[0].state == "open") {
        write_children(main_node)
    }
   
    // Finish up
    //Web master e-mail and RFBR indication
    frames["tree_frame"].document.writeln('<hr>')
    frames["tree_frame"].document.writeln('<font style="font-size: 8pt; font-family: Arial, Helvetica">e-mail:')
	frames["tree_frame"].document.writeln('<a href="mailto:rusanalytchem@geokhi.ru">WebMaster</a>')
	frames["tree_frame"].document.writeln('<BR>При поддержке РФФИ')
	frames["tree_frame"].document.writeln('</font>')
	frames["tree_frame"].document.writeln('<hr>')
	//March, 23, 2003
	frames["tree_frame"].document.writeln('Copyright 2001<BR>')
	frames["tree_frame"].document.writeln('<BR>Счетчик посетителей:<BR>')
    frames["tree_frame"].document.writeln(iVisitorsCounter)
    frames["tree_frame"].document.writeln(' /')
    frames["tree_frame"].document.writeln(iSessionCounter)
    

	
    frames["tree_frame"].document.writeln('<\/body>')
     frames["tree_frame"].document.writeln('<\/html>')
    frames["tree_frame"].document.close()

}

// This function writes all the child node for whatever
// parent node is specified as the argument. Note that
// this function is called recursively whenever any
// child node has children of its own.

function write_children(parent_node) 
//============================================

{

    var child_node
    var indent_width
        
    // Run through all of the parent's child nodes
    // parent_node[0] refers to the parent node itself, so start at 1
    for (var counter = 1; counter < parent_node.length; counter++) {
    
        // Store the child node
        child_node = parent_node[counter]
        
        // First check to see if this is a folder or a document
        var its_a_folder = true
        if (child_node.length == 1) {
            its_a_folder = false
        }

        // Create a table for the child node
        frames["tree_frame"].document.writeln('<table border="0" cellspacing="0" cellpadding="0" >')
        frames["tree_frame"].document.writeln('<tr>')
        frames["tree_frame"].document.writeln('<td>')
        
        // Calculate and display the indentation
        indent_width = (child_node[0].level-1) * 20   //decrement is needed when node=0 is omitted
        if (!its_a_folder) {
            
            // Need a bit extra for a document
            indent_width += 20
        }
        frames["tree_frame"].document.writeln('<td >') //use background color
        frames["tree_frame"].document.writeln('<img src="images/invisible.gif" width="' + indent_width + '" height="10">')
        frames["tree_frame"].document.writeln('<\/td>')
        
        // Write the node text
        frames["tree_frame"].document.writeln('<td valign="top" >')

        // Handle folders and documents separately
        if (its_a_folder) {

            frames["tree_frame"].document.writeln('<a href="javascript:parent.toggle_state(\'' + child_node[0].index + '\')">')
            if (child_node[0].state == "closed") {
                 frames["tree_frame"].document.write('<img src="images/plus.gif" border="0"></a><img src="images/closed.gif">')
            }
            else {
                frames["tree_frame"].document.write('<img src="images/minus.gif" border="0"></a><img src="images/open.gif">')
            }
            frames["tree_frame"].document.writeln('<\/td>')
            frames["tree_frame"].document.writeln('<td>')
            frames["tree_frame"].document.writeln(child_node[0].text)
                     
            
            frames["tree_frame"].document.writeln('<\/td>')
            frames["tree_frame"].document.writeln('<\/tr>')
            frames["tree_frame"].document.writeln('<\/table>')
            
            //refresh parent's folder(s) name for active doc to show it in the banner frame
            if(child_node[0].level==1) Folder1= child_node[0].text
            //if(child_node[0].level==2) Folder2= child_node[0].text //this line should be updated !!!!

            // If this child's state is "open", recursively call
            // this function to write the child's children (if any)
            if (child_node[0].state == "open") {
                write_children(child_node)
            }
        }
        else {
        
            // Is it the currently displayed document?
            if (child_node[0].index == current_document) {
                frames["tree_frame"].document.writeln('<img src="images/open_page.gif">')
                frames["tree_frame"].document.writeln('<\/td>')
                frames["tree_frame"].document.writeln('<td>')
                frames["tree_frame"].document.writeln('<FONT color="#FF7F00">')
                frames["tree_frame"].document.writeln(child_node[0].text)
                frames["tree_frame"].document.writeln('</FONT>')
                
                //refresh header line in banner (show node1 level 1&2)
                if(Folder1 == szNsakhShort) Folder1= szNsakhFull
                if (Folder2 == "") szFolderBanner= Folder1
                else 
                {		szFolderBanner= Folder1+ "/ "+ Folder2
                		Folder2= ""
                }
                if(szFolderBanner != FolderBanner)
                {		//refresh var and reload page
                		FolderBanner= szFolderBanner
                		Folder2= ""
                		frames["banner"].location= 'Header_cont.htm'
                }
            }
            else {
                //********* select image for page 
                //===============================
               //alert(child_node[0].url)
               var szUrl= child_node[0].url
               var ext_pos= szUrl.lastIndexOf(".")
               var szExt= szUrl.substring(ext_pos+1, ext_pos+4)
               var szPrefix= szUrl.substring(0, 5)
				
  				 if(szPrefix== "http:")
               {
                frames["tree_frame"].document.writeln('<a href="javascript:parent.toggle_state(\'' + child_node[0].index + '\')">' + 
                '<img src="images/site_page.gif" border="0">')
               }
               else
               {
  				 
               	if(szExt == "htm")
               	{
                	frames["tree_frame"].document.writeln('<a href="javascript:parent.toggle_state(\'' + child_node[0].index + '\')">' + 
                	'<img src="images/htm_page.gif" border="0">')
               	}
               	if(szExt == "asp")
               	{
                	frames["tree_frame"].document.writeln('<a href="javascript:parent.toggle_state(\'' + child_node[0].index + '\')">' + 
                	'<img src="images/asp_page.gif" border="0">')
               	}
              	 else
         	       {	
               		if(szExt == "pdf")
               		{
                			frames["tree_frame"].document.writeln('<a href="javascript:parent.toggle_state(\'' + child_node[0].index + '\')">' + 
                			'<img src="images/pdf_page.gif" border="0">')
                		}
               		if(szExt == "doc")
               		{
                			frames["tree_frame"].document.writeln('<a href="javascript:parent.toggle_state(\'' + child_node[0].index + '\')">' + 
                			'<img src="images/doc_page.gif" border="0">')
               		}
               		if(szExt == "rtf")
               		{
                			frames["tree_frame"].document.writeln('<a href="javascript:parent.toggle_state(\'' + child_node[0].index + '\')">' + 
                			'<img src="images/doc_page.gif" border="0">')
               		}
               		if(szExt == "ppt")
               		{
                			frames["tree_frame"].document.writeln('<a href="javascript:parent.toggle_state(\'' + child_node[0].index + '\')">' + 
                			'<img src="images/ppt_page.gif" border="0">')
               		}
                 		if(szExt == "xls")
               		{
                			frames["tree_frame"].document.writeln('<a href="javascript:parent.toggle_state(\'' + child_node[0].index + '\')">' + 
                			'<img src="images/xls_page.gif" border="0">')
               		}
                  }		
     
                }
            
                frames["tree_frame"].document.writeln('<\/td>')
                frames["tree_frame"].document.writeln('<td>')
                frames["tree_frame"].document.writeln('<a href="javascript:parent.toggle_state(\'' + child_node[0].index + '\')">') 
                frames["tree_frame"].document.writeln(child_node[0].text + '</a>')
            }                        
            frames["tree_frame"].document.writeln('<\/td>')
            frames["tree_frame"].document.writeln('<\/tr>')
            frames["tree_frame"].document.writeln('<\/table>')
        }

        frames["tree_frame"].document.writeln('<\/td>')
        frames["tree_frame"].document.writeln('<\/tr>')
    }
}

function toggle_state(node_index) 
//============================================

{
    
    // Get the node from the global nodes_array
    var current_node = nodes_array[node_index]

    // Store the node's current state
    current_state = current_node[0].state
 
    
    //check if the current URL points to site (isolate first 5 letters: http:)
       var szPrefix= current_node[0].url.substring(0, 5)
       
   // Change it to the other state
    if (current_state == "open") {
        current_node[0].state = "closed"
    }
    else {
        current_node[0].state = "open"
    }
  
    // Is this a document?
    if (current_node.length == 1) {
        if (current_document != -1) {
            nodes_array[current_document].state = "closed"
        }
 
  		 if(szPrefix== "http:")
  		 //open external site in a new window 
  		 {	
  		 	//window.open(current_node[0].url, "RusAnalytChem_InteractiveSite", "location=yes, toolbar=yes")
  		 	window.open(current_node[0].url, "RusAnalytChem_InteractiveSite")
		 }
		 else  
		 {	current_document = current_node[0].index  //
		 	frames["content_frame"].location = current_node[0].url
		 }
    }
    
    // Rewrite the menu
    timeout_id = setTimeout("write_menu()", 50)
}

function change_all(new_state) 
//============================================
{
    var current_node

    // Run through the global nodes_array
    for (counter = 1; counter < nodes_array.length; counter++)  //Home level is opened
    {
    
        //Store the current node
        current_node = nodes_array[counter]
        
        // Work only with folders
        if (current_node.length > 1) {
            current_node[0].state = new_state
        }
    }

    // Rewrite the menu
    timeout_id = setTimeout("write_menu()", 50)

}

////////////////////////////////////////////////////////////////

function open_session(VCounter, SCounter)
{
iVisitorsCounter = VCounter
iSessionCounter =  SCounter
build_tree()
//register_visitor()
}
////////////////////////////////////////////////////////////////
