/**
 * Search component.
 *
 * @author gege
 */
var xc_search = 
{
  changeRegion: function( element, id )
  {
    if ( element.value == 0 )
    {
      //should show the cities
      xc.show("search_city_option_" + id);
    }
    else
    {
      //should hide the cities
      Dom.get("ci").value = "";
      xc.hide("search_city_option_" + id);
    }
    
  }, 
  
  changeTab: function( id )
  {
    switch( id )
    {
      case 1:
          Dom.removeClass("search_tab_2", "active");
          Dom.addClass("search_form_2", "invisible");
        break;
        
      case 2:
          Dom.removeClass("search_tab_1", "active");
          Dom.addClass("search_form_1", "invisible");
        break;
        
      default:
        break;
    }
    
    Dom.addClass("search_tab_" + id, "active");
    Dom.removeClass("search_form_" + id, "invisible");
  }
}

/**
 * Special offer rapid search.
 * 
 * @author gege
 */
xc_search.special_offer = 
{
  rapidSearch: function()
  {
    Dom.get("sp_da").value = Dom.get("sp_da_arrival").value;
    Dom.get("sp_ni").value = Dom.get("sp_ni_nights").value;
    Dom.get("sp_gu").value = Dom.get("sp_gu_guest").value;
    Dom.get("sp_we").checked = Dom.get("sp_we_wellness").checked;
    if ( Dom.get("sp_sc_subcategory") && Dom.get("sp_sc_subcategory").checked && Dom.get("sp_sc_subcategory").value > 0 )
    {
      Dom.get("sp_sc").value = Dom.get("sp_sc_subcategory").value;
    }
    Dom.get("search_form_special_offer").submit();
  }
}

/**
 * Partner services.
 * 
 * @author gege
 */
xc_search.partner_service = 
{
  submit: function(url)
  {
    return true;
  }
}

/**
 * Accomodation's page.
 *
 * @author gege
 */
var accomodation = 
{
  /**
   * Show contact advertising manager.
   *
   * @author gege
   */
  showContact: function( url, id )
  {
    this.sendCallback = 
    {
      success: function( o )
      {
        try
        {
          eval( "var response_error = '" + JSON.parse(o.getResponseHeader['Errormsg']) + "';" );
        }
        catch(e)
        {
        }
        
        if ( typeof response_error != "undefined" )
        {
          xc.alert( response_error );
          return false; 
        }
        
        xc.show(this.id);
        Dom.get(this.id).innerHTML = ": "+o.responseText;
        Dom.get("link_" + this.id).onclick = function onclick(event) {
          this.blur();
          return false;
        }
      },
      failure: function()
      {
      },
      scope: this
    }
    
    this.id = id;
    xc.ajax( url, this.sendCallback, 'get' );
    
  }
}

/**
 * User.
 * 
 * @author gege
 */
var user =
{
  
  sendUserDataForm: function(form_el, update, redirect_url)
  {
    this.sendCallback = 
    {
      success: function( o )
      {
        indicator.hideIndicator();
        
        try
        {
          eval( "var response_error = '" + JSON.parse(o.getResponseHeader['Errormsg']) + "';" );
        }
        catch(e)
        {
        }
        
        if ( typeof response_error != "undefined" )
        {
          xc.alert( response_error );
          return false; 
        }
        
        try
        {
        	//it should be in JSON format (type, message)
          if ( o.responseText.match(/^\{/) )
          {
            eval( "var response = " + o.responseText );
          }
          else
          {
            var response = JSON.parse(o.responseText);
          }
          if ( response.type == 0 )
          {
            xc.alert( response.message );
            return false;
          }
          else if ( response.type == 1 )
          {
            if ( redirect_url )
            {
              document.location.href = redirect_url;
            }
            else
            {
              xc.alert( __("Sikeres művelet.") );
            }
            return false;
          }
        }
        catch(e)
        {
        }
        
        Dom.get(this.update).innerHTML = o.responseText;
      },
      failure: function()
      {
        indicator.hideIndicator();
        
        xc.alert( __("Sikertelen művelet.") );
      },
      scope: this
    }
    
    this.update = update;
    indicator.showIndicator( update );
    xc.ajaxForm( form_el, this.sendCallback );
  }
  
}


/**
 * Booking handler
 *
 * @author gege
 */
var booking = 
{
  /**
   * Check booking form to send booking or offer request.
   *
   * @author gege
   */
  checkOnlineBookingForm: function()
  {
    var is_ok = false;
    
    var elements = Dom.getElementsByClassName("room", "select", "infotable_body");
    
    for ( var i = 0; i < elements.length; i++ )
    {
      if ( elements[i][elements[i].selectedIndex].value != "0" )
      {
        is_ok = true;
        break;
      }
    }
    
    if ( !is_ok )
    {
      xc.alert(__("Válasszon legalább egy szobát!"));
      return false;
    }
    
    return true;
  }, 
  
  contract_check: function()
  {
    if ( !Dom.get("ob_contract").checked )
    {
      xc.alert(__("A Foglalási feltételek elfogadása kötelező!"));
      
      return false;
    }
    
    return true;
  }
  
}

booking.send_message = 
{
  checkForm: function()
  {
    if ( Dom.get("send_message_ob_text").value == "" )
    {
      xc.alert(__("Az üzenet szövegének kitöltése kötelező!"));
      return false;
    }
    
    return true;
  }, 
  
  sendForm: function(form_el, hide_el)
  {
    this.sendCallback = 
    {
      success: function( o )
      {
        indicator.hideIndicator();
        
        try
        {
          //it should be in JSON format (type, message)
          if ( o.responseText.match(/^\{/) )
          {
            eval( "var response = " + o.responseText );
          }
          else
          {
            var response = JSON.parse(o.responseText);
          }
          if ( response.type == 0 )
          {
            if ( typeof response.message != "undefined" )
            {
              xc.alert( response.message );
            }
            return false;
          }
          else if ( response.type == 1 )
          {
            document.location.reload();
            return false;
          }
        }
        catch(e)
        {
        }
      },
      failure: function()
      {
        indicator.hideIndicator();
        
        xc.alert( __("Sikertelen művelet.") );
      },
      scope: this
    }
    
    //check form
    if ( this.checkForm() )
    {
      indicator.showIndicator( hide_el );
      xc.ajaxForm( form_el, this.sendCallback );
    }
  }
}

/**
 * online map
 */
var onlineMap = 
{
  toggle: function(box, category)
  {
    if ( box.checked )
    {
      onlineMap.show(gmarkers_map, category);
    }
    else
    {
      onlineMap.hide(gmarkers_map, category);
    }
  }, 
  
  show: function(gmarkers, category)
  {
    for (var i = 0; i < gmarkers.length; i++)
    {
      if ( gmarkers[i].category == category )
      {
        gmarkers[i].show();
      }
    }
  }, 
  
  hide: function(gmarkers, category)
  {
    for (var i = 0; i < gmarkers.length; i++)
    {
      if (gmarkers[i].category == category)
      {
        gmarkers[i].hide();
      }
    }
    map.closeInfoWindow();
  }
  
}

/* comments */
var comment = {}

comment.add_comment = 
{
  checkForm: function()
  {
    if ( Dom.get("comment_message").value == "" )
    {
      xc.alert(__("Az üzenet szövegének kitöltése kötelező!"));
      return false;
    }
    
    return true;
  }, 
  
  sendForm: function(form_el, hide_el)
  {
    this.sendCallback = 
    {
      success: function( o )
      {
        indicator.hideIndicator();
        
        try
        {
          //it should be in JSON format (type, message)
          if ( o.responseText.match(/^\{/) )
          {
            eval( "var response = " + o.responseText );
          }
          else
          {
            var response = JSON.parse(o.responseText);
          }
          if ( response.type == 0 )
          {
            if ( typeof response.message != "undefined" )
            {
              xc.alert( response.message );
            }
            return false;
          }
          else if ( response.type == 1 )
          {
            document.location.reload();
            return false;
          }
        }
        catch(e)
        {
        }
      },
      failure: function()
      {
        indicator.hideIndicator();
        
        xc.alert( __("Sikertelen művelet.") );
      },
      scope: this
    }
    
    //check form
    if ( this.checkForm() )
    {
      indicator.showIndicator( hide_el );
      xc.ajaxForm( form_el, this.sendCallback );
    }
  }
}