﻿if ( !window.gslb )
{
  window.gslb = function()
  {
  }
}

gslb.CFlagsExtracterTest = function()
{
}

gslb.CFlagsExtracterTest.URL_REQUEST = "CFlagExtracterClient.ashx";
gslb.CFlagsExtracterTest.ID_QUERY = "flags";

gslb.CFlagsExtracterTest.iValue = 0;
gslb.CFlagsExtracterTest.nStatus = null;

gslb.CFlagsExtracterTest.onLoad = function()
{
//  var nDivFold = null;
//  var iIndex = 0;
//  while ( ( nDivFold = document.getElementById( 'divFold' + iIndex++ ) ) )
//  {
//    gslb.CDhtmlFold.registerFoldingNode( nDivFold );
//    gslb.CDhtmlFold.fold( nDivFold.id );
//  }
}

gslb.CFlagsExtracterTest.onFlagChecked = function( nCheckbox )
{
  if ( nCheckbox.checked )
  {
    gslb.CFlagsExtracterTest.iValue += parseInt( nCheckbox.value, 10 );
  }
  else
  {
    gslb.CFlagsExtracterTest.iValue -= parseInt( nCheckbox.value, 10 );
  }
  
  var nTfValue = document.getElementById( "tfValue" );
  if ( nTfValue )
  {
    nTfValue.value = gslb.CFlagsExtracterTest.iValue;
  }
}

gslb.CFlagsExtracterTest.sendRequest = function()
{
  try
  {
    gslb.CFlagsExtracterTest.setStatus( "Sending request" );
    var nTfValue = document.getElementById( "tfValue" );
    if ( nTfValue
      && nTfValue.value
      && nTfValue.value.length > 0 )
    {
      if ( !gslb.CFlagsExtracterTest.oAjaxPox )
      {
        gslb.CFlagsExtracterTest.oAjaxPox = new gslb.CAjaxPox( gslb.CFlagsExtracterTest.URL_REQUEST );
      }
      
      var htParameters = new Object();
      htParameters[ gslb.CFlagsExtracterTest.ID_QUERY ] = nTfValue.value;
      htParameters[ "datetime" ] = ( new Date() ).getTime(); // Force request to go to the server (no cache)
      
      gslb.CFlagsExtracterTest.oAjaxPox.send( gslb.CAjaxPox.EMode.eGet,
        htParameters,
        gslb.CFlagsExtracterTest.sendRequestCallback );      
    }
    else
    {
      throw "Value not set";
    }
  }
  catch ( ex )
  {
    if ( typeof( ex ) == "string" )
    {
      gslb.CFlagsExtracterTest.setStatus( ex, true );      
    }
    else
    {
      if ( ex.message )
      {
        gslb.CFlagsExtracterTest.setStatus( ex.message, true );      
      }
      else
      {
        gslb.CFlagsExtracterTest.setStatus( "Undefined error in sendRequest", true );      
      }
    }
  }
}

gslb.CFlagsExtracterTest.sendRequestCallback = function( oResult )
{
  if ( oResult.m_iStatus != 200 )
  {
    gslb.CFlagsExtracterTest.setStatus( "Error (" + oResult.m_iStatus + "):"
      + oResult.m_strStatus, true );
    return;
  }
  
  var anError = oResult.m_docXml.getElementsByTagName( "error" );
  if ( anError
    && anError.length > 0 )
  {
    gslb.CFlagsExtracterTest.setStatus( anError[ 0 ].firstChild.nodeValue, true );
    return;
  }
  
  var anFlags = oResult.m_docXml.getElementsByTagName( "flags" );
  var strNames = "";
  if ( anFlags
    && anFlags.length > 0
    && anFlags[ 0 ].childNodes
    && anFlags[ 0 ].childNodes.length > 0 )
  {
    for ( var index = 0; index < anFlags[ 0 ].childNodes.length; index++ )
    {
      var nFlag = anFlags[ 0 ].childNodes[ index ];
      var strName = nFlag.getAttribute( "name" );
      if ( strName )
      {
        strNames += strName + ";";
      }
    }
  }
  else
  {
    strNames = "Empty";
  }
  
  document.getElementById( "spanNames" ).firstChild.nodeValue = strNames;
  gslb.CFlagsExtracterTest.setStatus( "Success", false );
}

gslb.CFlagsExtracterTest.showRequestProgress = function( strMessage )
{
  gslb.CFlagsExtracterTest.setStatus( strMessage, false );
}

gslb.CFlagsExtracterTest.setStatus = function( strMessage, bError )
{
  if ( !gslb.CFlagsExtracterTest.nStatus )
  {
    gslb.CFlagsExtracterTest.nStatus = document.getElementById( "spanStatus" );
    if ( !gslb.CFlagsExtracterTest.nStatus )
    {
      throw "Status message not found";
    }
  }
  
  if ( bError )
  {
    gslb.CFlagsExtracterTest.nStatus.style.color = "Red";
    gslb.CFlagsExtracterTest.nStatus.style.fontWeight = "bold";
  }
  else
  {
    gslb.CFlagsExtracterTest.nStatus.style.color = "#A3681C";
    gslb.CFlagsExtracterTest.nStatus.style.fontWeight = "normal";
  }
  
  gslb.CFlagsExtracterTest.nStatus.firstChild.nodeValue = strMessage;
}
