function Category(){this.initialize.apply(this,arguments);}
Category.prototype={hundle_category:'.gourmet_category',hundle_cancel:'.gourmet_category_cancel',form_id:'',initialize:function(args){var $self=this;if(typeof args=='object'){$self.form_id=args.form_id;}
$self.bind_selects();$self.bind_cancels();},bind_selects:function(){var $self=this;var $parts=j$($self.hundle_category);for(var i=0;i<$parts.length;i++){var $elem=j$($parts[i]);$elem.bind("change",function(){var $selected=j$(this);$self.set($selected);});}},bind_cancels:function(){var $self=this;var $cancels=j$($self.hundle_cancel);for(var i=0;i<$cancels.length;i++){var $cancel=j$($cancels[i]);$cancel.bind("click",function(){var $clicked=j$(this);$self.cancel($clicked);});}},set:function($selected,$callback){var $self=this;$selected.attr('name').match(/^(([a-zA-Z\_\-]+)(\d*?))\_(\d+)$/);var base_name=RegExp.$1;var name=RegExp.$2;var number=RegExp.$3;var level=RegExp.$4;$self.clear_child(base_name,level);if($selected.attr('value')==undefined||$selected.attr('value')==''){for(var i=Math.max(2,level),o;i<=3;i++){if(o=document.getElementById("category_id_"+i+"_value"))
o.value="";}
return;}
var next_level=(eval(level)+1);var _selected=$selected.children("option[selected]");if(level==3){j$("#"+base_name).attr({value:_selected.val()});$self.set_value($selected);return;}
var next_item=j$("#"+base_name+'_'+next_level);var members=j$(eval('categories_'+next_level));var children=j$.grep(members,function(obj){return obj.parent_id==$selected.attr('value');});next_item.append(j$("<option>").html('選択してください').attr({value:''}));if(children.length>0){var next_value=j$("#"+next_item.attr("name")+"_value").val();for(var i=0;i<children.length;i++){var id_value=children[i].id,seled=!!(id_value==next_value);var option=j$("<option>").html(children[i].name).attr({value:children[i].id,selected:seled});next_item.append(option);}
$self.set_value(next_item);}
else{var option=j$("<option>").html(_selected.text()).attr({value:_selected.val(),selected:'selected'});j$("#"+base_name).attr({value:_selected.val()});next_item.append(option);$self.set_value(next_item);}
if(level==2)
$self.set_value($selected);next_item.parent().show();if(typeof $callback=='function')
$callback();},clear_child:function(base_name,level){j$("#"+base_name).attr({value:''});for(var i=3;i>level;i--){var $obj=j$("#"+base_name+'_'+i);$obj.children().remove();$obj.parent().hide();}},reset:function(base_name){var $self=this;$self.clear_child(base_name,1);var $root_category=j$("#"+base_name+'_'+1);$root_category.val('');$root_category.parent().show();},set_value:function($selected){var cv="#"+$selected.attr("id")+"_value";j$(cv).val($selected.val());},cancel:function($clicked){var $self=this;$clicked.attr('id').match(/^(([a-zA-Z\_\-]+)(\d*?))\_cancel\_link$/);var base_name=RegExp.$1;var name=RegExp.$2;var number=RegExp.$3;$clicked.parent().remove();$self.reset(base_name);}};