var PerformanceSelector = new Class ({

    Implements: Options,

    options: {},

    initialize: function (element, options)
    {
        this.setOptions(options);

        this.calendar_element = $(element);
        this.order_element = $(this.options.order_container);
    },

    generate: function (element, multi, perf)
    {
        // set date_picked class for active element
        this.disableHover();
		this.hideMore();
        
        // create new select box for time
        if(multi === true)
        {
          this.enableHover(element);

          var params = {
              'perf_ids': perf,
              'production_id': this.options.production_id,
              'only_day': true,
              'div_id_order': this.options.order_container
            }
			
            var req = new Request.HTML({
              'url': this.options.url,
                'method': 'get',
                'data': params,
                'update': $(this.options.more_container)
            }).send();
            
            $(this.options.more_container).set('class', '');
        }
        // change links
        else
        {
            if(perf[0])
          {
              this.enableHover(element);

              // change performance id in ticket-link
              this.changeTicketLink(perf[0].ticket, perf[0].abo);

              // change donate link
              this.changeDonateLink(perf[0].ticket);

              // change remind link
              this.changeRemindLink(perf[0].id);

              // change my cal link
              this.changeMyCalLink(perf[0].id);
          }
          else
          {
              // change performance id in ticket-link
                this.changeTicketLink(0);

                // change donate link
                this.changeDonateLink(0);

                // change remind link
                this.changeRemindLink(0);

                // change my cal link
                this.changeMyCalLink(0);
          }
        }
    },

  // disable the hover for all selected dates
    disableHover: function()
    {
        // remove all date_picked classes
        if(this.calendar_element != false)
        {
            $each(this.calendar_element.getElements('.date_picked'), function (item, idx)
            {
                var list_element = item.getParent('li');
		        if(list_element)
		        {
			        var radio = list_element.getElement('input');
			        if(radio)
			        {
				        radio.set('checked', '');
			        }
		        }
		        else
		        {
	                 item.removeClass('date_picked');
		        }
                 
                 
            });
        }
    },

  // enable the hover for the selected date
    enableHover: function (element)
    {
        var list_element = $(element).getParent('li');
        if(list_element)
        {
	        var radio = list_element.getElement('input');
	        if(radio)
	        {
		        radio.set('checked', 'checked');
	        }
        }
        else
        {
	        $(element).addClass('date_picked');
        }
    },

  // change the ticket link, check that all information are set or generate default error link
    changeTicketLink: function(id, abo)
    {
        var link_element = this.order_element.getElement('.buy');
        if(link_element != false)
        {
            var index_php_text = this.checkHref(link_element);
            
            if(id == 0)
            {
              	link_element.addClass('smoothbox');
              	link_element.set('href', index_php_text+this.options.lang+'/order/error?keepThis=true&TB_iframe=true&height=200&width=430');
              	link_element.onclick = TB_bind;
            }
            else
            {
	            if(abo != null && abo != '')
				{
					link_element.addClass('smoothbox');
					var href = index_php_text+this.options.lang+'/buy/'+this.options.production_ticket_id+'/'+id+'/'+abo+'/?keepThis=true&TB_iframe=true&height=200&width=430'
				    link_element.set('href', href);
				}
				else
				{
					link_element.removeClass('smoothbox');
					var href = index_php_text+this.options.lang+'/service/ticketshop/id/'+this.options.shop_id+'/lang/'+this.options.ticket_lang+'/production/'+id;
					
					if(this.options.production_ticket_id)
					{
					    href = href+'/event/'+this.options.production_ticket_id;
				    }
				    
				    link_element.set('href', href);
				    link_element.onclick = function(){
				    	window.location = href;
				    };
				}
            }
            
            /**
            var link_href = link_element.get('href');
            if(link_href.indexOf("&gotoperformance") != -1)
            {
                link_href = link_href.slice(0,link_href.indexOf("&gotoperformance"));
            }

            if(id == 0)
            {
              link_element.set('href', link_href);
            }
            else
            {
                link_element.set('href', link_href + '&gotoperformance='+id);
            }
            **/
        }
    },

  // change the donate link, check that all information are set or generate default error link
    changeDonateLink: function(id)
    {
        var link_element = this.order_element.getElement('.give');
        if(link_element != false)
        {
            var index_php_text = this.checkHref(link_element);
            if(id == 0 || this.options.production_id == 0)
            {
              link_element.set('href', index_php_text+this.options.lang+'/donate?keepThis=true&TB_iframe=true&height=300&width=430');
            }
            else
            {
                link_element.set('href', index_php_text+this.options.lang+'/donate/'+this.options.production_id+'/'+id+'?keepThis=true&TB_iframe=true&height=300&width=430');
            }
        }
    },

  // change the remind link, check that all information are set or generate default error link
    changeRemindLink: function(id)
    {
        var link_element = this.order_element.getElement('.remind');
        if(link_element != false)
        {
            var index_php_text = this.checkHref(link_element);
            if(id == 0)
            {
              link_element.set('href', index_php_text+this.options.lang+'/reminder?keepThis=true&TB_iframe=true&height=500&width=430');
            }
            else
            {
                link_element.set('href', index_php_text+this.options.lang+'/reminder/'+id+'?keepThis=true&TB_iframe=true&height=500&width=430');
            }
        }
    },

  // change the my cal link, check that all information are set or generate default error link
    changeMyCalLink: function(id)
    {
        var link_element = this.order_element.getElement('.my_cal');
        if(link_element != false)
        {
            var index_php_text = this.checkHref(link_element);
            if(id == 0 || this.options.production_id == 0)
            {
              	link_element.set('href', index_php_text+this.options.lang+'/ical?keepThis=true&TB_iframe=true&height=600&width=430');
            }
            else
            {
                link_element.set('href', index_php_text+this.options.lang+'/ical/'+this.options.production_id+'/'+id+'?keepThis=true&TB_iframe=true&height=600&width=430');
            }
        }
    },
    
    checkHref: function(element)
    {
    	var index_php_text = "";
    	
    	var link_href = element.get('href');
    	if(link_href.contains("index.php"))
    	{
    		index_php_text = "index.php/";
    	}
    	
    	index_php_text = $('base_href').getAttribute('href')+index_php_text;
    	
    	return index_php_text;
    	
    },
    
    hideMore: function()
    {
    	if($(this.options.more_container))
		{
			$(this.options.more_container).set('class', 'hideme');
		}
    }
    
    
});

PerformanceSelector.contentFields = new Hash();

PerformanceSelector.get = function(id)
{
    return this.contentFields.get(id);
}

PerformanceSelector.setContentField = function(id, field)
{
    this.contentFields.set(id, field);
}
