/**
 * functions for changing password
 * @namespace
 */
var changePassword =
{
	/**
	 * form to submit
	 * @type {HTMLelement}
	 */
	change_form: null,
	/**
	 * first password field
	 * @type {HTMLelement}
	 */
	pass_first: null,
	/**
	 * second password field
	 * @type {HTMLelement}
	 */
	pass_second: null,
	/**
	 * submit form with Ajax call
	 * @param {HTMLelement} form to submit
	 */
  checkPass: function( input_el )
  {
    if ( input_el.id == "u_password_a" &&
         Dom.get( "u_password_re" ).value == "" )
    {
      return false;
    }

    var pass_1 = Dom.get( "u_password_a" );
    var pass_2 = Dom.get( "u_password_re" );
    if ( pass_1.value != pass_2.value )
    {
      errorHandlers.hideErrorMsg( "u_password_a" );
      errorHandlers.hideErrorMsg( "u_password_re" );
      errorHandlers.showErrorMsg( "u_password_re", __("Nem egyforma a két beírt jelszó. Írd be őket újra.") );
      return false;
    }
    else
    {
      errorHandlers.hideErrorMsg( "u_password_a" );
      errorHandlers.hideErrorMsg( "u_password_re" );
      errorHandlers.showTrueFeedback( "u_password_a" );
      errorHandlers.showTrueFeedback( "u_password_re" );
      return true;
    }
    
    return true;
  },
	submit: function( el )
	{
		this.change_form = el;
    if ( !this.checkPass( el ) )
    {
      return false;
    }
		nw.ajaxForm( el, this.submitCallback );
	},
	/**
	 * callback object for ajax form send
	 * @param {Object} o
	 */
	submitCallback: 
	{
		success: function( o )
		{
			errorHandlers.hideErrorMsg( "u_password_a" );
			errorHandlers.hideErrorMsg( "u_password_re" );
			
			try 
      {
        var response = JSON.parse( o.responseText );
      }
      catch ( e ) 
      {
				nw.alert( __( "Az elküldés sikertelen volt. Kérjük próbálja meg újra!" ) );
        return false;
      }
			
			if( response.status == 1 )
			{
          nw.alert( response.message );
					Dom.get( "alert_button" ).onclick = function()
					{
						location.href = response.url;
					}
			}
			else
			{
        nw.alert( response.message );
			}
		},
		failure: function()
		{
			nw.alert( __( "Az elküldés sikertelen volt. Kérjük próbálja meg újra!" ) );
      return false;
		}
	}
}

my_clubs =
{
  a_el: null,
  act_sorted_column: null,
  act_sorted_type: 1,
  pager_max_page: null,
  _init: function()
  {
    if ( typeof init_data == "undefined" )
    {
      return false;
    }
    this.initSet();
  },
  initSet: function()
  { 
    this.act_sorted_column = init_data.sort_column;
    this.act_sorted_type = init_data.sort_type;
    this.pager_max_page = init_data.max_page;
    this.orderColumn( this.act_sorted_column, this.act_sorted_type );
  },
  /**
   * gets club list without ordering
   */
  getCallback:
  {
    success: function( o )
    { 
      indicator.hideIndicator();
      var response = JSON.parse( o.responseText );
      Dom.get( "n_myclubsnodewrap" ).innerHTML = response.results;
      if ( response.result_number != null )
      {
        Dom.get( "result_number" ).innerHTML = response.result_number;
      }
      response.pager = ( response.pager ) ? response.pager : "";
      Dom.get( "n_myclubspager" ).innerHTML = response.pager;
    },
    failure: function()
    {
      indicator.hideIndicator();
    }
  },
  /**
   * gets club list wit ordering 
   */
  getLockCallback:
  {
    success: function( o )
    {
      indicator.hideIndicator();
      
      if( Dom.hasClass( my_clubs.a_el, "n_unlockforumnode" ) )
      {
        Dom.addClass( my_clubs.a_el, "n_lockforumnode" );
        Dom.removeClass( my_clubs.a_el, "n_unlockforumnode" );
        
        Dom.removeClass( my_clubs.a_el.parentNode.parentNode.getElementsByTagName( "td" )[0], "n_unlockforumnode" );
      }
      else
      {
        Dom.addClass( my_clubs.a_el, "n_unlockforumnode" );
        Dom.removeClass( my_clubs.a_el, "n_lockforumnode" );
        
        Dom.addClass( my_clubs.a_el.parentNode.parentNode.getElementsByTagName( "td" )[0], "n_unlockforumnode" );
      }
    },
    failure: function()
    {
      indicator.hideIndicator();
    }
  },
  getOrderCallback:
  {
    success: function( o )
    {
      try
      {
        indicator.hideIndicator();
        var response = JSON.parse( o.responseText );
        
        Dom.get( "n_myclubsnodewrap" ).innerHTML = response.results;
        if ( response.result_number != null  )
        {
          Dom.get( "result_number" ).innerHTML = response.result_number;
        }
        response.pager = ( response.pager ) ? response.pager : "";
        Dom.get( "n_myclubspager" ).innerHTML = response.pager;
      }
      catch( e )
      {
        return false;
      }
    },
    failure: function()
    {
      indicator.hideIndicator();
    }
  },
  lock: function( a_el, url )
  {
    this.a_el = a_el;
    nw.openWaiting();
    nw.ajax( url, this.getLockCallback );
  },
  /**
   * handles column order
   * @param {Number} column column name<br />
   * 1-name
   * 2-szerep
   * @param {Number} type order type <br />
   * 1-ascending
   * 2-descending
   * @param {Boolean} if true sends an ajax request, if not definied only sets orders 
   */
  orderColumn: function( column, type, ajax )
  {

    this.act_sorted_column = column;
    this.act_sorted_type = type;
    
    Dom.get( "sort_column" ).value = column;
    Dom.get( "sort_type" ).value = type;
    
    var act_asc_button;
    var act_desc_button;
    
    switch ( column )
    {
      case 1:
       act_asc_button = Dom.get( "name_order_asc" );
       act_desc_button = Dom.get( "name_order_desc" );
       break;
      case 2:
       act_asc_button = Dom.get( "accentuated_order_asc" );
       act_desc_button = Dom.get( "accentuated_order_desc" );
       break;
      default:
       return false;
    }
    
    var asc_buttons = [];
    asc_buttons[0] = Dom.get( "name_order_asc" );
    asc_buttons[1] = Dom.get( "accentuated_order_asc" );
    
    for ( i_asc = 0; i_asc < asc_buttons.length; i_asc++ )
    {
      Dom.removeClass( asc_buttons[i_asc], "n_adjust_ascending_active");
      if ( asc_buttons[i_asc] == act_asc_button )
      {
        if ( type == "1" )
        {
          Dom.addClass( asc_buttons[i_asc], "n_adjust_ascending_active");
        }
      }
    }
    
    var desc_buttons = [];
    desc_buttons[0] = Dom.get( "name_order_desc" );
    desc_buttons[1] = Dom.get( "accentuated_order_desc" );
    
    for ( i_desc = 0; i_desc < desc_buttons.length; i_desc++ )
    {
      Dom.removeClass( desc_buttons[i_desc], "n_adjust_descending_active");
      if ( desc_buttons[i_desc] == act_desc_button )
      {
        if ( type == "2" )
        {
          Dom.addClass( desc_buttons[i_desc], "n_adjust_descending_active");
        }
      }
    }
    
    if ( ajax )
    {
      indicator.showIndicator( "n_midrightcolumn" );
      nw.ajaxForm( "myclubs_searchform", this.getOrderCallback );
    }

    return true;
  },
  resetFormFields: function()
  {
    Dom.get( "myclubs_search_keywords" ).value = "";
    Dom.get( "myclubs_search_from" ).value = "";
    Dom.get( "myclubs_search_to" ).value = "";
    if ( Dom.get( "myclubs_search_category" ).getElementsByTagName( "option" ).length != 0 )
    {
      Dom.get( "myclubs_search_category" ).getElementsByTagName( "option" )[0].selected = true;
    }
//    if ( Dom.get( "myclubs_search_where" ).getElementsByTagName( "option" ).length != 0 )
//    {
//      Dom.get( "myclubs_search_where" ).getElementsByTagName( "option" )[0].selected = true;
//    }
    Dom.get( "myclubs_search_member" ).checked = false;
    Dom.get( "myclubs_search_moderator" ).checked = false;
    Dom.get( "myclubs_search_leader" ).checked = false;
    this.submitForm();
    return true;
  },
  submitCallback:
  {
    success:function( o )
    {
      indicator.hideIndicator();
      try 
      {
          var response = JSON.parse( o.responseText );
      }
      catch ( e ) 
      {
          return false;
      }
      
      Dom.get( "n_myclubsnodewrap" ).innerHTML = response.results;
      if ( response.result_number != null  )
      {
        Dom.get( "result_number" ).innerHTML = response.result_number;
      }
      response.pager = ( response.pager ) ? response.pager : "";
      Dom.get( "n_myclubspager" ).innerHTML = response.pager;
      my_clubs.pager_max_page = response.max_page;
    },
    failure: function()
    {
      indicator.hideIndicator();
    }
  },
  submitForm: function()
  {
    indicator.showIndicator( "n_midrightcolumn" );
    nw.ajaxForm( "myclubs_searchform", this.submitCallback, "sort_column=" + this.act_sorted_column + "&sort_type=" + this.act_sorted_type );
  },
  submitFormWithPager: function( page )
  {
    indicator.showIndicator( "n_midrightcolumn" );
    Dom.get( "sort_column" ).value = this.act_sorted_column;
    Dom.get( "sort_type" ).value = this.act_sorted_type;
    nw.ajaxForm( "myclubs_searchform", this.submitCallback, "page=" + page );
  },
  submitJump: function()
  {
    var text = Dom.get( "jump_to_page" ).value;
    if ( YAHOO.lang.trim( text ) == "" ||
         !parseInt( text ) )
    {
      Dom.get( "jump_to_page" ).value = "";
      return false;
    }
    
    if ( parseInt( text ) < 1 ||
         parseInt( text ) > this.pager_max_page  )
    {
      Dom.get( "jump_to_page" ).value = "";
      return false;
    }
    
    this.submitFormWithPager( text );
    return false;
  },
  /**
   * starts search runs after clicked on search button
   */
  submit: function()
  {
    Dom.get( "sort_column" ).value = "2";
    Dom.get( "sort_type" ).value = "2";
    this.orderColumn( 2, 2 );
    
    indicator.showIndicator( "n_midrightcolumn" );
    nw.ajaxForm( "myclubs_searchform", this.getCallback );
    return true;
  },
  
  back: function( e )
  {
    e = Event.getEvent( e );
    Event.stopEvent( e );
    my_clubs.resetFormFields();
    return true;
  }
}

Event.onDOMReady( function()
{
  my_clubs._init();
} );