$j = jQuery.noConflict();

UserContacts = function(params) {
    var obj = {};
    
    var searchInput = $j('#recommend-box .search input');
    var clearSearch = $j('#recommend-box .search .clear');
    var contactList = $j('#recommend-box .contact-list p');
    
    var defaultSearchText;
    
    var init = function() {
        defaultSearchText = searchInput.val();
        
        bindEvents();
    };
    
    var bindEvents = function() {
        searchInput.focus(function() {
            if ($j(this).val() == defaultSearchText) {
                $j(this).val('');
            }
        });
        
        searchInput.blur(function() {
            if (!$j(this).val()) {
                $j(this).val(defaultSearchText);
            }            
        });
        
        searchInput.keyup(function() {
            var val = $j(this).val();
            
            if (val.length) {
                filterList(val);
            } else {
                showAll();
            }
        });
        
        clearSearch.click(function() {
            searchInput.val('');
            searchInput.focus();
            showAll();
        });
        
        contactList.each(function() {
            var t = $j(this);
            
            t.click(function() {
                sendRecommendation(t, t.find('span.gg').text());
            });
            
            t.mouseover(function() {
                t.css('cursor', 'pointer');
            });
            
            t.mouseout(function() {
                t.css('cursor', 'default');
            });
        });
    };
    
    var showAll = function() {
        contactList.each(function() {
            $j(this).show();
        });
    };
    
    var filterList = function(val) {
        var re = new RegExp(escape(val), "i");
            
        contactList.each(function() {
            var contactName = escape($j(this).text()); 
            
            if (re.test(contactName)) {
                $j(this).show();
            } else {
                $j(this).hide();
            }           
        });
    };    
    
    var sendRecommendation = function(contactObject, recipientNumber) {
        $j.ajax({
            url:  params.url,
            type: 'GET',
            data: { recipient: recipientNumber, addonId: params.id },
            success: function(response) {
                updateStatus(response, contactObject);                            
            },
            error: function() {
            }
        });
    };
    
    var updateStatus = function(status, contactObject) {
        if (status == 'success') {
            contactObject.unbind();
            contactObject.css('cursor', 'default');
            contactObject.addClass('disabled');
        }
    };
    
    init();
    
    return obj;
}