<!--
// ==============================================================================
// File Name           : index_databases.html
// Description         : index  Databases
// Author(s)           : Baskaran V
// Date created        : 2009.01.05
// Last reviewed by    : 
// Last date of review : 
// Copyright           : (c) 2008, Sharp Software Development India Pvt Ltd., All rights reserved.
//                       All rights are reserved. Reproduction or transmission in whole or in part, in
//                       any form or by an means, electronic, mechanical or otherwise, is prohibited
//                       without the prior written consent of the copyright owner.

// ==============================================================================

-->

<html xmlns:sds="">
<head>
	<title>Index Databases</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
	<link href="style.css" rel="stylesheet" type="text/css" />
	<script defer type="text/javascript" src="pngfix.js"></script>
	<link rel="stylesheet" href="search.css"/>
	<script language="JavaScript" src="search_errors.js"></script>
	<script language="VBScript" src="vb_utils.js"></script>
	<script language="JavaScript" src="external_io.js"></script>
	<script language="JavaScript" src="ui_utils.js"></script>
	<script language="JavaScript" src="math_utils.js"></script>
	<script type="text/javascript" src="Themes.js"></script>
</head>

<body leftmargin="0" topmargin="0" rightmargin="0" class="Centerbg">
<script language="JavaScript" src="search_index.js"></script>
<script language="JavaScript" src="system_io.js"></script>

<script language="JavaScript">
var MAX_NUM_OF_DATABASES = 20;
var MAX_NUM_OF_INDEX_CHARS = 24;
var MAX_FILE_PATH_LENGTH = 50;

var database_name = "";
//var suggested_database_name = "New Database";
var suggested_database_name = /*IDS_NEW_DATABASE*/"Nieuwe database";
var enable_create = true;

function UpdateDatabaseDisplay()
{
  SetListItems(document.all.database_list, GetIndexNames());
}

function UpdateButtonDisplay()
{
  database_name = GetListBox(document.all.database_list);
  
  if(IsIndexing())
  {
    document.all.create_button.disabled = true;
    document.all.edit_button.disabled = true;
	document.all.delete_button.disabled = true;

    document.all.index_all_button.disabled = true;
    document.all.index_selected_button.disabled = true;
	document.all.stop_button.disabled = false;
        document.all.stop_button.focus();
  }
  else
  {
    document.all.create_button.disabled = false; 
    document.all.create_button.focus();
	
    if(database_name == "")
    {
      document.all.edit_button.disabled = true;
	  document.all.delete_button.disabled = true;
    }
    else
    {
      document.all.edit_button.disabled = false;
	  document.all.delete_button.disabled = false;
    }

    if(MATH_Gt(GetNumOfIndexes(), 0))
      document.all.index_all_button.disabled = false;
	else
      document.all.index_all_button.disabled = true;
	
	if(database_name == "") 
      document.all.index_selected_button.disabled = true; 
	else
      document.all.index_selected_button.disabled = false; 
	
    document.all.stop_button.disabled = true;
  }
}

function OnLoadPage()
{
  UpdateDatabaseDisplay();
  UpdateButtonDisplay();
  
  try
  {
	AttachIndexHandler(document.all.handler, null);
  }
  catch(e)
  {
    alert("error attaching index handler: " + e.number + " - " + e.description);
  }
  
  document.all.indexing_status.readOnly = true;
}

function OnUnloadPage()
{  
  try
  {
    // detach index handler
	// (for dtSearch, this is previously stored callback)
	DetachIndexHandler(document.all.handler);
  }
  catch(e)
  {
    alert("error detaching index handler: " + e.number + " - " + e.description);
  } 
}

function RunProcessStarted()
{
  enable_create = true;
}

function CreateDatabase()
{
  // cancel default processing of this event first
  event.returnValue = false;
  
  if(!enable_create)
    return;
  
  if(MATH_GtEq(GetNumOfIndexes(), MAX_NUM_OF_DATABASES))
  {
    /*alert("Maximum number of index databases already exist.\n" +
          "Please consider deleting existing one or editing existing one.\n");*/
	alert(/*IDS_E_MAXINDEX1*/"Maximumaantal indexdatabases bestaat reeds.\n" +
          /*IDS_E_MAXINDEX2*/"Misschien kunt u de bestaande verwijderen of de bestaande bewerken.\n");
    return;
  }
 
  try
  {
    // run Search Wizard process to create new Index Database
    var process = "SDSearchWizard.exe";
	var parameters = "/config /n" + "\"" + suggested_database_name + "\"";
    RunProcess(process, parameters);
	
	// disable Create Button to avoid multiple wizard to be launched.
	// After 2 sec. enable Create Button assuming wizard has been launched.
	// Attempting to launch another one, then, is detected by wizard itself.
	enable_create = false;
	setTimeout("RunProcessStarted()", 2000);
  }
  catch(e)
  {
    alert("Error: Failed to create index: " + e.number + " - " + e.description);
  }
}

function EditDatabase()
{
  // find out which index database to be edited
  var selected_option = GetListBox(document.all.database_list);
  if(selected_option == "")
    return;
  
  // then load individual index database page with appropriate data populated  
  var opt=escape(selected_option)
  {
  	location.href = "individual_index_database.htm?"+'Theme='+getCookie('opt').substring(0,1) + escape(selected_option);
	//Themes and URL value
  }
  
}
function DeleteDatabase()
{
  // find out which index database to be deleted
  var selected_option = GetListBox(document.all.database_list);
  if(selected_option == "")
    return;
	
  // confirm the user of his/her intent
  var yes = confirm(/*IDS_E_DELETE_INDEX*/"Weet u zeker dat u de indexdatabase wilt verwijderen '" +
                  selected_option + "'?");
  if(yes)
  {
	var num_items = GetNumOfListItems(document.all.database_list);
    var item_index = GetListSelection(document.all.database_list);
	
	// if selected (and will be deleted) one is the last one,
	// select new last one in the list
	if(item_index == (num_items - 1))
	  item_index--;

    try
    {
	  DeleteIndex(selected_option);
    }
    catch(e)
    {
      alert("Error: Failed to delete index: " + e.number + " - " + e.description);
    }
	
	SetListSelection(document.all.database_list, item_index);
	DisplayIndexingStatus("");
  }
}

function OnIndexAllButtonClick()
{
  // build all existing indexes
  BuildAllIndexes();  
  
  // update enable/disable states of buttons
  UpdateButtonDisplay();
}

function OnIndexSelectedButtonClick()
{ 
  if(database_name == "")
    return;
	
  SetActiveIndex(database_name);
   
  // incrementally build index
  BuildIndexIncremental();
  
  // update enable/disable states of buttons
  UpdateButtonDisplay();
}

function OnStopButtonClick()
{
  document.all.stop_button.disabled = true;    

  if(IsIndexing())
    StopIndexing();
}

// order of calls in this function is significant.
// Need to be the exact order.
function OnEndCreateIndex(index, status)
{
  UpdateDatabaseDisplay();

  // only when Database is successfully created
  // (i.e. not cancelled)
  if(status == true)
  {
    SetListBox(document.all.database_list, index);
    UpdateButtonDisplay();
  }
}

function DisplayIndexingStatus(text)
{
  document.all.indexing_status.value = text;
}

// trancate text.  if text is larger than
// specified length, return "partial_text..."
function TrancateText(text, length)
{
  var subtext = "";
  
  if(MATH_LtEq(text.length, length))
    subtext = text;
  else
  {
    subtext = text.slice(0, length - 3);
	subtext += "...";
  }
	
  return subtext;
}

// make the entire file path fits into specified length.
//
// 1. if the entire file path fits, leave it alone.
// 2. if partial path fits, return "folder\...\file"
// 3. if neither of 1 and 2, return "partial_file_name..."
//
function TrancateFilePath(folder, file, length)
{
  var file_path = "";
  var folder_len = folder.length;
  var file_len = file.length;
  var num_chars = folder_len + file_len + 1;
  
  // if the entire path fits...
  if(MATH_Lt(num_chars, length))
    file_path = folder + "\\" + file;
  else
  {
    // traverse from end to beginning of folder string
	// to find '\' character
    var pos = folder_len - 1;
	while(MATH_GtEq(pos, 0))
	{
	  // if up to this '\' of path plus file name fits...
	  if(MATH_And((folder.charAt(pos) == '\\'), MATH_Lt(pos + file_len, length - 3)))
	  {
	    file_path = folder.slice(0, pos + 1) + "...\\" + file;
		break;
	  }	  
	  pos--;
	}
	
	// folder name is too long, did not fit,
	// so trancate file name to fit
	if(MATH_Lt(pos, 0))
	  file_path = TrancateText(file, length);
  }
  
  return file_path;
}
</script>

<script language="JavaScript" for="window" event="onload()">
OnLoadPage();
</script>

<script language="JavaScript" for="window" event="onunload()">
OnUnloadPage();
</script>

<script language="JavaScript" for="create_button" event="onclick()">
CreateDatabase();
</script>

<script language="JavaScript" for="edit_button" event="onclick()">
if(!IsIndexing())
  EditDatabase();
</script>

<script language="JavaScript" for="delete_button" event="onclick()">
DeleteDatabase();
UpdateButtonDisplay();
</script>

<script language="JavaScript" for="database_list" event="onchange()">
UpdateButtonDisplay();
</script>

<script language="JavaScript" for="database_list" event="ondblclick()">
if(!IsIndexing())
  EditDatabase();
</script>

<script language="JavaScript" for="index_all_button" event="onclick()">
OnIndexAllButtonClick();
</script>

<script language="JavaScript" for="index_selected_button" event="onclick()">
OnIndexSelectedButtonClick();
</script>

<script language="JavaScript" for="stop_button" event="onclick()">
OnStopButtonClick();
</script>

<script language="JavaScript" for="handler" event="OnEndCreateIndex(index, status)">
OnEndCreateIndex(index, status);
</script>

<script language="JavaScript" for="handler" event="OnEndDeleteIndex(index, status)">
UpdateDatabaseDisplay();
</script>

<script language="JavaScript" for="handler" event="OnStartIndexing(index)">
//DisplayIndexingStatus("Started updating index database '" + index + "'.");
DisplayIndexingStatus(/*IDS_STATUS_STARTED_UPDATING*/"Gestart met bijwerken van indexdatabase '" + index + /*IDS_STATUS_STARTED_UPDATING2*/"'.");
</script>

<script language="JavaScript" for="handler" event="OnStartIndexFile(index, folder, file, percent)">
//DisplayIndexingStatus("Indexing " + TrancateFilePath(folder, file, MAX_FILE_PATH_LENGTH));
DisplayIndexingStatus(/*IDS_STATUS_INDEXING*/"Bezig met indexeren " + TrancateFilePath(folder, file, MAX_FILE_PATH_LENGTH));
</script>

<script language="JavaScript" for="handler" event="OnEndIndexFile(index, folder, file, percent)">
//DisplayIndexingStatus("Indexed " + TrancateFilePath(folder, file, MAX_FILE_PATH_LENGTH));
DisplayIndexingStatus(/*IDS_STATUS_INDEXED*/"Gendexeerd " + TrancateFilePath(folder, file, MAX_FILE_PATH_LENGTH));
</script>

<script language="JavaScript" for="handler" event="OnEndIndexing(index, num_files)">
if(num_files > 0)
 // DisplayIndexingStatus("Completed to index '" + index + "'.  " + num_files + " files indexed.");
  DisplayIndexingStatus(/*IDS_STATUS_COMPLETED_TO_INDEX*/"Klaar met indexeren van '" + index + /*DUMMY1*/"'.  " + num_files + /*IDS_STATUS_FILES_INDEXED*/" bestanden gendexeerd.");
else
  //DisplayIndexingStatus("Index '" + index + "': no new files are indexed.");
  DisplayIndexingStatus(/*IDS_STATUS_INDEX*/"Index '" + index + /*DUMMY2*/"': " + /*IDS_STATUS_NO_NEW_FILES_ARE*/"er worden geen nieuwe bestanden gendexeerd.");
</script>

<script language="JavaScript" for="handler" event="OnIndexFileOpenFail(index, folder, file)">
//DisplayIndexingStatus("Failed to open " + TrancateFilePath(folder, file, MAX_FILE_PATH_LENGTH - 5));
DisplayIndexingStatus(/*IDS_STATUS_FAILED_TO_OPEN*/"Openen mislukt " + TrancateFilePath(folder, file, MAX_FILE_PATH_LENGTH - 5));
</script>

<script language="JavaScript" for="handler" event="OnCheckIndexFiles(index)">
//DisplayIndexingStatus("Checking index " + index + " for files.");
DisplayIndexingStatus(/*IDS_STATUS_CHECKING_INDEX*/"Bezig met controleren van index " + index + /*IDS_STATUS_FOR_FILES*/" voor bestanden.");
</script>

<script language="JavaScript" for="handler" event="OnMergeInProgress(index)">
//DisplayIndexingStatus("Merging index " + index + ".");
DisplayIndexingStatus(/*IDS_STATUS_MERGING_INDEX*/"Bezig met samenvoegen van index " + index + ".");
</script>

<script language="JavaScript" for="handler" event="OnCompressInProgress(index)">
//DisplayIndexingStatus("Compressing index " + index + ".");
DisplayIndexingStatus(/*IDS_STATUS_COMPRESSING_INDEX*/"Bezig met comprimeren van index " + index + ".");
</script>

<script language="JavaScript" for="handler" event="OnStartUpdateIndexes(indexes, num_indexes)">
// update enable/disable states of buttons
UpdateButtonDisplay();

//DisplayIndexingStatus("Started to index '" + TrancateText(indexes, MAX_NUM_OF_INDEX_CHARS) + "'");
DisplayIndexingStatus(/*IDS_STATUS_STARTED_TO_INDEX*/"Gestart met indexeren van '" + TrancateText(indexes, MAX_NUM_OF_INDEX_CHARS) + "'");
</script>

<script language="JavaScript" for="handler" event="OnEndUpdateIndexes(indexes, num_indexes, num_files, status)">
if(MATH_Gt(num_files, 0))
{
  DisplayIndexingStatus(/*IDS_STATUS_COMPLETED_TO_INDEX*/"Klaar met indexeren van '" +
    TrancateText(indexes, MAX_NUM_OF_INDEX_CHARS) + /*DUMMY1*/"'.  " +
  	num_files + /*IDS_STATUS_FILES_IN_TOTAL_ARE*/" bestanden in totaal worden gendexeerd.");
}
else
{
  var index_str;
  if(num_indexes == 1)
    index_str = /*IDS_STATUS_HEAD_INDEX*/"Index";
  else
    index_str = /*IDS_STATUS_HEAD_INDEXES*/"Indexen";
	
  DisplayIndexingStatus(index_str + " '" +
    TrancateText(indexes, MAX_NUM_OF_INDEX_CHARS) + /*DUMMY2*/"': " + /*IDS_STATUS_NO_NEW_FILES_ARE*/"er worden geen nieuwe bestanden gendexeerd.");
}

// update enable/disable states of buttons
UpdateButtonDisplay();
</script>

<script language="JavaScript" for="handler" event="OnErrorIndexing(index, code, text, arg1, arg2)">
DisplayIndexingStatus(/*IDS_STATUS_ERROR_INDEXING*/"Fout tijdens het indexeren van '" + index + "': " + text);

// display alert box to indicate severe Indexing errors
// (severe error means Indexing for that Index DB is terminated
// without updating it).  If error is not "severe", no alert box
// will be displayed.
DisplaySevereIndexError(index, code);
</script>

<object id="handler" classid="CLSID:0AAD0735-3F61-42EF-B35B-7072A410129B" width="0" height="0"></object>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td height="53" align="left" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0" class="Default_top" height="53">
  <tr> 
    <td width="6%" align="center">
	  <a id="home_link" onClick="GoToPage('default')" class="Normaltext" >
	    <img src="Images/search_home.png" border="0" title="Terug naar Zoekintroductie" width="32" height="32" style="position:relative; top:2;" loc="title:id=IDS_BACK_TO_SEARCH_HOME"/> 
      </a>
	</td>
    <td> 
      <div id="page_title_area" align="center">
	<b><loc id="IDS_INDEXING_SCHEDULE">Indexeringsplanning</loc></b>
	  </div>
    </td>
    <td width="180" class="class1"> 
      <div id="page_link_area" align="right">
	  <a onClick="GoToPage('indexing_schedule')" class="Normaltext"><loc id="IDS_INDEXING_SCHEDULE">Indexeringsplanning</loc> &nbsp; </a>
	  </div>
    </td>
  </tr>
</table>
</td>
  </tr>
  <tr>
    <td class="bgcolor_3" height="1" align="left" valign="top"></td>
  </tr>
   <tr>
    <td height="10" align="left" valign="top"></td>
  </tr>
 
  <tr>
    <td height="48" align="left" valign="top"><blockquote> 
  <blockquote>
      <fieldset><legend>
      <loc id="IDS_GROUP_AVAILABLE_DB">Momenteel beschikbare databases</loc></legend> 
      <table width="99%" border="0" cellspacing="5" cellpadding="5" height="56">
        <tr> 
          <td width="50%"> 
            <select name="database_list" size="5">
            </select>
          </td>
          <td width="50%"> 
            <p align="center"> 
              <input type="button" class="button_style" name="create_button" value="Aanmaken" loc="value:id=IDS_BUTTON_CREATE"/>
            </p>
            <p align="center"> 
              <input type="button" class="button_style" name="edit_button" value="Bewerken" loc="value:id=IDS_BUTTON_EDIT"/>
            </p>
            <p align="center"> 
              <input type="button" class="button_style" name="delete_button" value="Verwijderen" loc="value:id=IDS_BUTTON_DELETE"/>
            </p>
          </td>
        </tr>
      </table>
	  </fieldset>
  </blockquote>
</blockquote>
<blockquote> 
   <blockquote> <fieldset><legend><loc id="IDS_GROUP_INDEXING">Bezig met indexeren</loc></legend> 
    <table width="95%" border="0" cellspacing="5" cellpadding="5">
      <tr> 
        <td colspan="3"><loc id="IDS_EDIT_STATUS">Status:</loc>
          <input type="text" name="indexing_status" size="90"/>
        </td>
      </tr>
      <tr> 
        <td width="33%"> 
          <div align="center"> 
           <input type="button" class="button_style1" name="index_all_button" value="Alles indexeren" loc="value:id=IDS_BUTTON_INDEX_ALL"/>
          </div>
        </td>
        <td width="33%"> 
          <div align="center"> 
            <input type="button" class="button_style2" name="index_selected_button" value="Selectie indexeren" loc="value:id=IDS_BUTTON_INDEX_SELECTED"/>
          </div>
        </td>
        <td width="33%"> 
          <div align="center"> 
            <input type="button" class="button_style1" name="stop_button" value="Stoppen" loc="value:id=IDS_BUTTON_STOP"/>
          </div>
        </td>
      </tr>
    </table>
    </fieldset> </blockquote>
</blockquote>
</td>
  </tr>
  
</table>
</body>
</html>
