var CategorySelector = new Class( 
{
	initialize:function(input, multiple)
	{
		this.input = input;
		this.container = new Element( 'div');
	    this.container.injectAfter( input);
	    this.multiple=multiple;
	    this.selected = new Array();
		this.showCategories();
	},
	select:function( id, go)
	{
		if( !$('cat'+id))
		    return;
	    $('cat'+id).toggleClass( 'selected');
		if( this.selected[id] && this.selected[id]!=0)
		{
			this.selected[id]=0;
		}
		else
		{
			if( !this.multiple)
			    this.selected = new Array();
		    this.selected[id]=id;
	        if( !go && !this.multiple)
	            this.save();
		}
	},
	openSelected:function()
	{
	    $$( ".selected").each( function( el,idx) 
	    {
	        el.getParent().getParent().removeClass( 'closed')
	    });
	},
	save:function()
	{
		var result='';
		this.selected.forEach( function( item,index) { if( item && item!=0)result+=(item+",")});
		this.input.value = result;
		MOOdalBox.close();
		this.showCategories();
	},
	remove:function( id)
	{
		this.selected[id]=0;
		this.save();
	},
	openWindow:function()
	{
		this.selected = new Array();
		var al = this.input.value.split( ','); 
		al.forEach( function( item, index) 
		{
			if( item!='')
			    this.select( item, true);
		}.bind( this));
		this.openSelected();
	},
	showCategories:function()
	{
        if( this.input.value != '')
        var myAjax = new Request.HTML({url:'/backend/categories/ajax/showcats.xl?cats='+this.input.value, update:this.container}).get();
	},
    toggleCat:function ( id)
    {
        var el = $( 'selc'+id);
        var a  = $( 'seltoggler'+id);
        el.toggleClass( "closed");
        a.toggleClass( "togglerclosed");
    }	
});

var BirdoCategorySelector = new Class( 
{
	initialize:function(container, multiple, field)
	{
		this.container = container;
	    this.multiple=multiple;
	    this.selected = new Array();
	    this.fieldname = field;
		this.info = new Element( 'div');
	    this.info.injectInside( container);
		this.showCategories();
	},
	select:function( id, go)
	{
		if( !$('cat'+id))
		    return;
	    $('cat'+id).toggleClass( 'selected');		
		if( this.selected[id] && this.selected[id]!=0)
		{
			this.selected[id]=0;
		}
		else
		{
			if( !this.multiple)
			    this.selected = new Array();
		    this.selected[id]=id;
	        if( !go && !this.multiple)
	            this.save();
		}
	},
	save:function()
	{
	    this.container.getElements( 'input').each( function( el, idx){el.destroy()});
		var result='';
		this.selected.forEach( function( item,index) 
		{ 
		    if( item && item!=0)
		    {
    		    el = new Element( 'input');
    		    el.setAttribute( 'name', this.fieldname);
    		    el.setAttribute( 'type', 'hidden');
    		    el.setAttribute( 'value', item);
    		    el.injectInside( this.container);
		    }
		}.bind( this));
		MOOdalBox.close();
		this.showCategories();
	},
	remove:function( id)
	{
		this.selected[id]=0;
		this.save();
	},
	openSelected:function()
	{
	    $$( ".selected").each( function( el,idx) 
	    {
	        el.getParent().getParent().removeClass( 'closed')
	    });
	},	
	openWindow:function()
	{
		this.selected = new Array();
		this.getValues().forEach( function( item, index) 
		{
			if( item!='')
			    this.select( item, true);
		}.bind( this));
		this.openSelected();
	},
	getValues:function()
	{
	    var els = new Array();
        this.container.getElements( 'input').each( function( el, idx){els.push( el.value);});
        return els;	    
	},	
	showCategories:function()
	{
	    var str="";
	    if( this.getValues().length==0)
	        return;
        this.getValues().forEach( function( item, index) 
		{
			if( item!='')
			    str+=item+",";
		});
        var myAjax = new Request.HTML({url:'/backend/categories/ajax/showcats.xl?cats='+str,update:this.info}).get();
	},
    toggleCat:function ( id)
    {
        var el = $( 'selc'+id);
        var a  = $( 'seltoggler'+id);
        el.toggleClass( "closed");
        a.toggleClass( "togglerclosed");
    }	
});

