
(function($) {
    
    /**
     *
     */
    $.fn.TicketListExpander = function(opts) {
        
        return this.delegate('.prodlistingbtm div.expand', 'click', {options: opts}, expandTics);
    };

    /**
     *
     */    
    $.fn.TicketDescriptionExpander = function(opts) {

        return this.delegate('.ticket_name_bar div.ticket_info_expand', 'click', {options: opts}, displayTicInfo);
    };

    /**
     *
     */    
    $.fn.Tooltip = function() { 
        return this.each(function() {
            $(this).tooltip({
                tip:'#tooltip',
    		    position: 'top center',
    		    offset: [0, 20]    
            });    
        });   
    }
    
    /**
     *  @access private
     */
	function expandTics(e) {   
	    
        var elm = $(this),  
    		options = e.data.options, 
    		formInputNumber = options.formInputNumber,
    		siteID = options.siteID, 
    		activityList = $('#activity_list'),
    		parent = elm.parents('.prodlisting'),
    		hiddenTics = parent.find('.hidden_tickets'),  
    		attrID = parent.attr('attrid'),
    		button = parent.find('.button'),
    		textArea = elm.find('.expand_text'),
    		contentLength = hiddenTics.find('td').length;
  		
    	elm.toggleClass('open');

		if(elm.hasClass('open') && contentLength < 1) {
			elm.addClass('pending');
			
			$.ajax({ 
				type: 'POST', 
				url: siteID + '_xhr-proxy.html',
				success: function(data){
					hiddenTics.html(data).toggle('blind');
					elm.removeClass('pending');	
					$('.savings', hiddenTics).Tooltip(); 
					textArea.html('Close tickets'); 
					
					var selects = hiddenTics.find('select');
					
					if(selects.length > 0) {
					    button.css('display','inline'); 
					    
					    selects.each(function() {
					        $(this).trigger('rendered');        
					    });
					}
					
					var lastItem = $('.ticket_info_expand', hiddenTics).last();  
					formInputNumber = parseInt(lastItem.attr('counter'));
					activityList.attr('counter', formInputNumber + 1);
				},
				error: function(data) {
					elm.removeClass('pending open');
					alert('There has been a problem with your request.  Please try again later.');
					return false;
				},
				data: ({                   
				    'siteID': siteID,
				    'locationID':  options.locationID,
					'formInputNumber': activityList.attr('counter'),
					'rowNum': parent.find('.ticket_info_expand').length,
					'attractionID': attrID,
					'serviceType': 'unfeatured_tickets',
					'cartItems': options.cartItems
				})
			}); 
		} else {
			if(elm.hasClass('open') && contentLength >= 1) {     
				textArea.html('Close tickets');
				button.css('display','inline');
			} else {
				if(button.attr('featured')) {
					textArea.html('View tickets');
					button.css('display','none');
				} else {
					textArea.html('View all tickets');
				}
			} 
			
			hiddenTics.toggle('blind');
			
		} 
		
		return false;		
	} 
	
	function displayTicInfo(e) {
		var elm = $(this),  
		    options = e.data.options, 
		    siteID = options.siteID,
		    ticGroup = elm.parents('.ticket_group'),
		    ticInfo = ticGroup.find('.ticket_desc'),
		    ticketID = elm.attr('ticketID'),  
		    p = ticGroup.find('.ticket_desc_text p.tic_info_content');
		
		elm.toggleClass('open');
		
		if(elm.hasClass('open') && p.html() == '') {
		    
			$.ajax({ 
				type: 'POST', 
				url: siteID + '_xhr-proxy.html',
				success: function(data) {
					p.html(data);
					ticInfo.toggle('blind');
				},
				error: function(data) {
					elm.removeClass('open');
					alert('There has been a problem with your request.  Please try again later.');
				},
				data: ({ 
				    'siteID': siteID,
					'ticketID': ticketID,
					'serviceType': 'ticket_info'
				})
			}); 
		} else {
			ticInfo.toggle('blind');
		} 
		
		return false;
	} 

})(jQuery);

