var Event = YAHOO.util.Event,
    Dom   = YAHOO.util.Dom;

/* panel (lightbox) */
var panel =
{
  yuipanel:null,
  options: {
    iframe: true,
    visible: false,
    constraintoviewport: true,
    fixedcenter: true,
    modal: true,
    width: '508px',
    height: '376px',
    zindex: 99
  },
  create: function()
  {
    panel.yuipanel = new YAHOO.widget.Panel('yuipanel', this.options);
    panel.yuipanel.render();
    panel.yuipanel.showEvent.subscribe(function(){Dom.removeClass('yuipanel', 'invisible');});
    panel.yuipanel.hideEvent.subscribe(function(){Dom.addClass('yuipanel', 'invisible');});
  },
  init: function()
  {
    panel.create();
  }
}

var products =
{
  ex : null,
  callbacks:
  {
    success: function( o )
    {
      try
      {
        Dom.get('content').className = 'page1';
        products.Ex.paginator.destroy();
        Dom.get('content').innerHTML = o.responseText;
        products.setPager();
        products.formCheck();
      } 
      catch( x )
      {
        alert( 'JSON Parse failed!' );
        return false;
      }
    }
  },
  search: function( form_id )
  {
    var formObject = Dom.get( form_id );
    YAHOO.util.Connect.setForm( formObject );
    YAHOO.util.Connect.asyncRequest( formObject.method, formObject.action, products.callbacks );
  },
  setPager: function()
  {
    products.Ex = YAHOO.namespace('example');
    products.Ex.content = YAHOO.util.Dom.get('content');

    products.Ex.handlePagination = function (state) {
      products.Ex.content.className = 'page' + state.page;
      products.Ex.paginator.setState(state);
    };

    products.Ex.paginator = new YAHOO.widget.Paginator({
      rowsPerPage : 1,
      totalRecords : Dom.getElementsByClassName('page', 'div').length,
      containers : 'paging'
    });

    products.Ex.paginator.subscribe('changeRequest', products.Ex.handlePagination);
    products.Ex.paginator.render();
  },
  openCard: function(url)
  {
    Dom.get('yuipanel_body').innerHTML = '';
    products.updateCard(url);
    Dom.removeClass('yuipanel', 'invisible');
    panel.yuipanel.show();
  },
  updateCard: function(url)
  {
    var transaction = YAHOO.util.Connect.asyncRequest('post', url, products.updateCardCallback);
    return transaction;
  },
  updateCardCallback:
  {
    success: function(o)
    {
      try
      {
        Dom.get('yuipanel_body').innerHTML = o.responseText;
      }
      catch(x)
      {
        return;
      }
    },
    failure: function()
    {
      return false;
    }
  },
  formCheck: function() {
    var num = 0;
    $('#box_product_type label').each(function() {
      if ($(this).hasClass('checked')) {
      }
      else {
        num += 1;
      }
    });
    $('#dogsize label').each(function() {
      if ($(this).hasClass('selected')) {
        num += 1;
      }
    });
    if($('#dogage_year').val() != '' || $('#dogage_month').val() != '' || num > 0) {
      narrow.buttonChange();
    }
    else {
      narrow.buttonReChange();
    }
  }
}

Event.onDOMReady(function () {
  panel.init();
  products.setPager();
})


/* narrow */
var narrow = {
  pType: function(el) {
    var label = $(el).parents('label');

    if (label.hasClass('checked')) {
      label.removeClass('checked');
      el.checked = false;
    }
    else {
      label.addClass('checked');
      el.checked = true;
    }
    products.search('form_products');
  },
  dogSize: function(el) {
    var label = $(el).parents('label');

    if (label.hasClass('selected')) {
    }
    else {
      $('#dogsize .selected input').removeAttr('checked');
      $('#dogsize .selected').removeClass('selected');

      label.addClass('selected');
      el.checked = true;
    }
    products.search('form_products');
  },
  showAll: function() {
    $('#box_product_type label').addClass('checked');
    $('#box_product_type input').attr('checked', 'checked');

    $('#dogsize .selected input').removeAttr('checked');
    $('#dogsize .selected').removeClass('selected');

    $('#dogage_year').val('');
    $('#dogage_month').val('');
    narrow.buttonReChange();

    products.search('form_products');
  },
  buttonChange: function() {
    $('#products_search').addClass('invisible');
    $('#products_all').removeClass('invisible');
  },
  buttonReChange: function() {
    $('#products_all').addClass('invisible');
    $('#products_search').removeClass('invisible');
  }
}
