//-- User bar call back related function.
//-- Add event handler
function kzcb_userbar_addevent( oObj, sEventId , fn  )
{
  if ( oObj.addEventListener)
    oObj.addEventListener(sEventId,fn,false);
  else if ( oObj.attachEvent)
    oObj.attachEvent('on'+sEventId,fn);
}

//-- Remove event handler
function kzcb_userbar_removeevent( oObj, sEventId , fn  )
{
  if ( oObj.removeEventListener)
  {
    try
    {
      oObj.removeEventListener(sEventId,fn,false);
    }
    catch(e)
    {
      //eat_exception   FireBox report error if no event handler ever attach to specified event id.
    }
  }
  else if ( oObj.detachEvent)
  {
    oObj.detachEvent('on'+sEventId,fn);
  }
}

// Dynamically gen by user bar control.
//function kzcb_userbar_callserver(arg,context)

var kzcb_submitting_form = false;
function kzcb_userbar_winunload(e)
{
  if ( !kzcb_submitting_form )
    kzcb_userbar_callserver('kz_clientwin_unload','clientwin_unload');
}

function kzcb_userbar_remove_winunload_event()
{
  kzcb_userbar_removeevent(window,'unload',kzcb_userbar_winunload);
}

function kzcb_form_onsubmit()
{
  //-- Logic only works if no other then ASP.NET validation is hook on OnSubmitStatement
  //-- unless they come before us. Worse case is we can't clear state.
  kzcb_submitting_form = false;
  if (typeof(ValidatorOnSubmit) == "function" )
  {
  	var result = ValidatorOnSubmit();
  	if ( result == false )
  		return false;
  }
  kzcb_submitting_form = true
  return true;
}

function kzcb_handle_syserror( o , context)
{
  if ( o.status == 1 || o.status == 2 )
  {
    // 1 = Session time out. 2 == Page out of sync.
    kzcb_userbar_remove_winunload_event();
    window.location.href = o.arg;
  }
}

function kzcb_userbar_result(arg , context)
{
  eval('var o = '+arg);
  if ( o.status >= 1 && o.status <= 100 )
    kzcb_handle_syserror( o ,context );
  else if (o.status == 0 )
  {
    if ( context == 'userbar_redirect' && o.arg && o.arg != '' )
    {
      kzcb_userbar_remove_winunload_event();
      window.location.href = o.arg;
    }
    else if ( context == 'userbar_closewin' )
    {
      kzcb_userbar_remove_winunload_event();
    }
  }
}
function kzcb_userbar_error(arg , context)
{
  window.alert(arg);
}

function kzcb_userbar_closewin(e)
{
  if ( window.opener != null && window.opener != window.self )
  {
    try
    {
      kzcb_userbar_callserver('kz_userbar_closewin','userbar_closewin');
    }
    catch( exp )
    {
      //EAT_EXCEPTION.
    }
    window.close(); // This kind of logic cause IE to crash.
  }
}


function kzcb_hide_ifcantclose_win(sId)
{
  if ( window.opener == null || window.opener == window.self )
  {
    var o = document.getElementById(sId);
    if ( o )
    {
      if ( o.runtimeStyle )
        o.runtimeStyle.display = 'none';
      else if ( o.style )
        o.style.display = 'none';
    }
  }
}
