/*
 * Main.js
 * front side logic for dns marketplace
 */

//declare global scope variables.
var curOffset = 0; // this is used to determine the proper search results position
var cycleRecentsInterval = 2000;    // ms 

(function($){
// callback for multiple animations
$.waitForNAnimations = function(numberOfAnimations,callback) {
	var count = 0;
	function cb() {
		count++;
		if ( count == numberOfAnimations) {
			count = 0;
			callback();
		}
	}
	return cb;
}
})(jQuery);

$(document).ready(function(){
	
	setTimeout('cycleRecents()', cycleRecentsInterval);
	
	/* initiate our tickers */
	$("#top_ticker").webTicker({travelocity: .07, direction: 1});	
	$("#bottom_ticker").webTicker({travelocity: .08, direction: 1});
	$("#sn_ticker").webTicker({travelocity: .06, direction: 1});
	
	/* setup our sortable drag and drop widgetes */
	$('ul.widget-list').sortable({
		handle : '.handle',
		connectWith: 'ul.widget-list',
		placeholder	: 'placeholder'
	});
	
	
		
	// event handler for collapsable widgets
	/*
	$('.widget-title, .main-widget-title').dblclick(function(){
		
		if($(this).parent().height() > 40) {
			
			//save the original height to an attribute on the el
			$(this).parent().attr("rel", $(this).parent().height());	
			$(this).parent().find(".widget-content").hide();
			$(this).parent().find(".main-widget-content").hide();
			$(this).parent().animate({ height: "40px"});			
		
		} else {
			$(this).parent().animate({ height: $(this).parent().attr("rel") + "px"});
			$(this).parent().find(".widget-content").show();
			$(this).parent().find(".main-widget-content").show();
			
		}
	});
	*/
	
	
	// list of sold names 
	var sold_names_list = {};
	sold_names_list.$list = $('#sold_names_list');
	sold_names_list.page_num = 1;
	sold_names_list.results_per_page = 50;
	sold_names_list.loading = false;
			
	setupSoldNamesScroller(sold_names_list);
	
	
	
	
	//whois search event handler
    var soldname_search = {};
    soldname_search.$search = $('#soldname_search');
    soldname_search.terms = '';
    soldname_search.offset = 0;
    soldname_search.names_per_page = 20;

	// setup the date range picker for sold names
	setupDateRangePicker(soldname_search.$search);
    setupSoldNameSearch(soldname_search);

   
    // display email ver
    if(emailVerificationHTML && emailVerificationHTML.length > 0) {   
        $.fancybox(
            emailVerificationHTML,
            {
                'autoDimensions'	: false,
                'padding'           : 20,
                'width'         	: '500',
                'height'        	: 'auto',
                'transitionIn'		: 'none',
                'transitionOut'		: 'none',
                'overlayColor'      : '#000',
                'scrolling'         : false  
            }
        );
    }                    
	
	
	//domain search form event handler
	$("#domain_search_form").submit(function(){		
		
		if($("#searchterms").val() == "") {
			alert("Please enter a search term");
    		return false;
		}
		
		
		//we need to reset our offset
		curOffset = 0;
		
		var data = {};
		data['offset'] = curOffset; //add our curOffest to our ajax URL
		
		$("#domain_search_form select").each(function(index, element) {
			if($(element).val() != ""){
				data[$(element).attr("name")] = $(element).val();
			}
        });
		
		$("#domain_search_form input[type=text]").each(function(index, element) {
			if($(element).val() != "" && $(element).val() != $(element).attr("rel") ){
				data[$(element).attr("name")] = $(element).val();
			}
        });			
		
		var dataStr = $.param(data);

		//show our preloader
		$("#domain_name_search_preloader").show();
					
		$.ajax({
		  url: "/sell/ajax/search",
		  data: dataStr
		}).done(function( json ) {	
			
			$("#domain_name_search_preloader").hide();

			var items = [];
			var newmsg;				
			
			var list;
			if (json.results == null || json.results.length == 0) {
			    list = '<h2>No Results</h2>';
		    } else {
    			for(field in json.results){
    			 	//newmsg += field + " = " + json.results[field].domain	 + "\n";
    				items.push('<li id="si_' + field + '"><a style="color:black" target="_blank" href="http://domainnamesales.com/domain/'+ json.results[field].domain +'">' + json.results[field].domain + '</a></li>');	
    			}
			
    			list = "<ul id='search_results'>" + items.join('') + '</ul>';
			    
				list += "<p style='margin-top: 15px;'><a id='prev_search' href='Javascript: prevSearchResults()' style='float:left; color:black; display:none'>< Prev</a>\n";
			    			    
			    if ((json.offset + json.results.length) < json.total_names) {
				    list += "<a id='next_search' href='Javascript: moreSearchResults()' style='float:right; color:black'>More ></a>";
			    }
			    list += "</p>";
			}
		    $.fancybox(
				list,
				{
					'autoDimensions'	: true,
					'padding'           : 20,
					'width'         	: 'auto',
					'height'        	: 'auto',
					'transitionIn'		: 'none',
					'transitionOut'		: 'none',
					'overlayColor'      : '#000',
					'scrolling'         : false
				}
			);
			
		});
		return false;
		
	});
	
	
	//whois search event handler
	$("#whois_form").submit(function() {
		
		var domain = $("#whoisterms").val();
		
		if(domain == "") {
			alert("Please enter a domain name");
			return false;
		}
		
		//show our prelaoder
		$("#whois_search_preloader").show();
		
		$.ajax({
			  url: "/sell/dmp_api/w",
			  data: {domain: domain} 
			}).done(function( json ) {
				// hide the preloader
				$("#whois_search_preloader").hide();
				
				$.fancybox(
					json.whois.replace(/\n/g, '<br />'),
					{
						'autoDimensions'	: true,
						'padding'           : 20,
						'width'         	: 400,
						'height'        	: 'auto',
						'transitionIn'		: 'none',
						'transitionOut'		: 'none',
						'overlayColor'      : '#000',
						'scrolling'         : false
					}
				);
				
			});
			
		return false;
	
	});
	
	//auto clear for input form
	$(".widget-input-text").focus(function(){
		if(this.value == $(this).attr("rel")) {	
			this.value = "";
		}
	});
	
	$(".widget-input-text").blur(function(){
		if(this.value == "") {
			this.value = $(this).attr("rel");	
		}
	});
	
	//initiate our timer for our refreshFeeds ajax function
	setTimeout("refreshFeeds(1)", refreshRate);
	setTimeout("refreshFeeds(2)", refreshRate);
	//setTimeout("refreshFeeds(3)", refreshRate);
});

var timeoutID = null;
function refreshFeeds(i){
	
	clearTimeout(timeoutID);
	switch(i){
		
		case 1: //top & bottom ticker
		case 2:
		
		// start with the ticker feeds		
		var ticker, q, num_results; 
		
		if (i==1) {
		    ticker = "top_ticker";
		    q = 'rqt';
		    num_results = 10;
		} else {
		    ticker = "bottom_ticker";
		    q = 'rat';
		    num_results = 50;
		}
		
		$.ajax({
		  url: "/sell/dmp_api",
		  data: {q: q, num_results: num_results}
		}).done(function( json ) {
			var msg = "";
			var domains = json["domain_list"];
			
			//remove current li elements
			$("#" + ticker + " li").remove();
			 
			for(var field in domains){
				
				$("#"+ticker).append("<li><a href='"+  domainURL + domains[field]["domain"] + "' target='_blank'>"+ domains[field]["domain"]+"</a> Q=" + domains[field]["quality_score"] + ", T="+domains[field]["traffic_score"] + (ticker=="top_ticker" ? " " + domains[field]["price_range"] : "") + "</li>");
			}
			
			//iterate to the next feed to refresh
			//refreshFeeds(i+1);
			clearTimeout(timeoutID);
			setTimeout("refreshFeeds("+i+")", refreshRate);
			return false;	
		});
		break;
	
		case 3: // news ticker
		// start with the ticker feeds	
		$.ajax({
		  url: "/sell/dmp_api/news",
		  data: {num_results: 60}
		}).done(function( news ) {
			
			if(news){
				//remove current li elements
				$("#news_ticker li").remove();
				
				for(var field in news){
					//msg += field + "=" + news[field] + "\n";
					$("#news_ticker").append("<li><a href='"+ news[field]["link"] + "' target='_blank'>" + news[field]["title"] + "</a></li>");
				}
			}else{
				alert("there was an error refreshing the news ticker feed");	
			}
			
			//refreshFeeds(i+1);
			
			setTimeout("refreshFeeds("+i+")", refreshRate);
		
		});
		break;
		
		/*
		case 4: //recent_quotes
		// start with the ticker feeds
		$.ajax({
		  url: "proxy.php",
		  data: "q=recent_quotes"
		}).done(function( data ) {
			
			var json = eval("(" + data + ")");
			
			var domains = json["domain_list"];
			
			//remove current li elements
			$("#recent_quotes_list li").remove();
			 
			for(var field in domains){
				//msg += field + "=" + domains[field] + "\n";
				$("#recent_quotes_list").append("<li><a href='"+  domainURL + domains[field]["domain"] + "'>" + domains[field]["domain"] + "</a> " + domains[field]["price_range"] + "</li>");
			}
			
			//iterate to the next feed to refresh
			refreshFeeds(i+1);
		
		});
		break;
		
		case 5: //inquiry_stream
		// start with the ticker feeds
		$.ajax({
		  url: "proxy.php",
		  data: "q=inquiry_stream"
		}).done(function( data ) {
			
			var json = eval("(" + data + ")");
			
			var domains = json["domain_list"];
						
			//remove current li elements
			$("#inquiry_stream_list li").remove();
			 
			for(var field in domains){
				//msg += field + "=" + domains[field] + "\n";
				$("#inquiry_stream_list").append("<li><a href='"+  domainURL + domains[field]["domain"] + "'>" + domains[field]["domain"] + "</a> Q=" + domains[field]["quality_score"] + " T=" + domains[field]["traffic_score"] + "</a></li>");
			}
			
			//iterate to the next feed to refresh
			refreshFeeds(i+1);
		
		});
		break;
		
		case 6: //sold_names
		// start with the ticker feeds
		$.ajax({
		  url: "proxy.php",
		  data: "q=sold_names"
		}).done(function( data ) {
			
			var json = eval("(" + data + ")");
			
			var domains = json["domain_list"];
						
			//remove current li elements
			$("#sold_names_list li").remove();
			 
			for(var field in domains){
				$("#sold_names_list").append("<li>" + domains[field]["domain"] + " - " + domains[field]["date"] + " " + domains[field]["price_range"] + "</li>");
			}
			
			//iterate to the next feed to refresh
			setTimeout("refreshFeeds(1)", refreshRate);
			return false;
		
		});
		break;
		*/
		default : 
		return false;
		break;
	}
	
}


function inquiryDay(date){
	
	$.ajax({
	  url: "/sell/dmp_api/ra",
	  data: {date : date}
	}).done(function( json ) {
		
		if(!json) {
			alert("Sorry there was an error retrieving the results for that day");
			return false;	
		}
				
		
		if(json["domain_list"].length < 1) {
			alert("There are no results for that day");	
			return false;
		}
		else {
			var domains = json["domain_list"];
						
			//remove current li elements
			$("#inquiry_stream_list li").remove();
			 
			for(var field in domains){
				//msg += field + "=" + domains[field] + "\n";
				$("#inquiry_stream_list").append("<li><a href='"+  domainURL + domains[field]["domain"] + "' target='_blank'>" + domains[field]["domain"] + "</a> Q=" + domains[field]["quality_score"] + " T=" + domains[field]["traffic_score"] + 
				                                 " <em>"+ getDispTimestamp(domains[field]['ts'], domains[field]['days'], domains[field]['secs']) +"</em></li>");
			}
			
			//now update our prev and next day links
			$("#inquiryPrev").attr("href", "Javascript: inquiryDay('"+ json['prev_date'] +"')");
			$("#inquiryNext").attr("href", "Javascript: inquiryDay('"+ json['next_date'] +"')");
			
			$("#cur_inquiry_date").html(json["cur_date"]);
			//if date requested is less than today show our next button
			
		}
	});
		
}


function quote_page(date){

	$.ajax({
	  url: "/sell/dmp_api/rq",
	  data: { date : date }
	}).done(function( json ) {
				
		var domains = json["domain_list"];
		
		
		if(domains.length < 1 ){
			alert("There are no results");
			return;	
		}
		//remove current li elements
		$("#recent_quotes_list li").remove();
		 
		for(var field in domains){
			//msg += field + "=" + domains[field] + "\n";			
			$("#recent_quotes_list").append("<li><a href='"+  domainURL + domains[field]["domain"] + "' target='_blank'>" + domains[field]["domain"] + "</a> " + domains[field]["price_range"] + 
			                                " <em>" + getDispTimestamp(domains[field]['ts'], domains[field]['days'], domains[field]['secs']) +"</em></li>");
		}		
				
		//now update our prev and next day links
		$("#quotePrev").attr("href", "Javascript: quote_page('"+ json['prev_date'] +"')");
				
		$("#quoteNext").attr("href", "Javascript: quote_page('"+ json['next_date'] +"')");
		
		//update our date field
		$("#cur_quote_date").html(date);
			
	});
}

function sold_page(pagenum){

	$.ajax({
	  url: "/sell/dmp_api/sn",
	  data: {page_num : pagenum, results_per_page : 50}
	}).done(function( json ) {
		
		var domains = json["domain_list"];
					
		//remove current li elements
		$("#sold_names_list li").remove();
		 
		for(var field in domains){
			$("#sold_names_list").append("<li>" + domains[field]["domain"] + " - " + domains[field]["date"] + " " + domains[field]["price_range"] + "</li>");
		}
		
		//hide or show our prev button
		if( pagenum == 0){
			$("#soldPrev").hide();	
		}else{
			$("#soldPrev").show();	
		}
				
		//now update our prev and next day links
		$("#soldPrev").attr("href", "Javascript: sold_page("+ (pagenum - 1) +")");
				
		$("#soldNext").attr("href", "Javascript: sold_page("+ (pagenum + 1) +")");
	
	});
		
}

function moreSearchResults(){
	
	var data = {};
	data['offset'] = curOffset + 50; //add our curOffest to our ajax URL
	
	$("#domain_search_form select").each(function(index, element) {
		if($(element).val() != ""){
			data[$(element).attr("name")] = $(element).val();
		}
	});
	
	$("#domain_search_form input[type=text]").each(function(index, element) {
		if($(element).val() != "" && $(element).val() != $(element).attr("rel") ){
			data[$(element).attr("name")] = $(element).val();
		}
	});			
	
	var dataStr = $.param(data);
			
	$.ajax({
	  url: "/sell/ajax/search",
	  data: dataStr
	}).done(function( json ) {	
							
		var items = [];	// to store our domain li's
		
		var newmsg = ''; //for debugging
		var maxwidth = 0;
		
		for(field in json.results){
			//newmsg += field + " = " + json.results[field].domain	 + "\n";
			items.push('<li id="si_' + field + '"><a style="color:black" target="_blank" href="http://domainnamesales.com/domain/'+ json.results[field].domain +'">' + json.results[field].domain + '</a></li>');	
			
			//widths.push(json.results[field].domain.length * 10); 
			maxwidth = 	(json.results[field].domain.length * 9 > maxwidth ? json.results[field].domain.length * 9 : maxwidth);
		}
		
		if(items.length < 1){
			alert("There are no more search results");
			return;	
		}
								
		$('#search_results li').remove();
		
		$("#fancybox-wrap").width(maxwidth);
		$("#search_results").width(maxwidth);
		$("#fancybox-content").css("background-color", "#fff");
		$("#fancybox-outer").width(maxwidth + 40);
		$("#fancybox-content").width(maxwidth);
				
		$("#search_results").html(items.join(''));
	
		
		$("#prev_search").show();
		
		//alert(newmsg);
		
		
		//update our curOffset
		curOffset += 50;
	});
			
}

function prevSearchResults(){
	
	var data = {};
	data['offset'] = curOffset - 50; //add our curOffest to our ajax URL
	
	$("#domain_search_form select").each(function(index, element) {
		if($(element).val() != ""){
			data[$(element).attr("name")] = $(element).val();
		}
	});
	
	$("#domain_search_form input[type=text]").each(function(index, element) {
		if($(element).val() != "" && $(element).val() != $(element).attr("rel") ){
			data[$(element).attr("name")] = $(element).val();
		}
	});			
	
	var dataStr = $.param(data);
	
	$.ajax({
	  url: "/sell/ajax/search",
	  data: dataStr
	}).done(function( json ) {	
		
		var items = [];		
		var maxwidth = 0;
		
		for(field in json.results){
			//newmsg += field + " = " + json.results[field].domain	 + "\n";
			items.push('<li id="si_' + field + '"><a style="color:black" target="_blank" href="http://domainnamesales.com/domain/'+ json.results[field].domain +'">' + json.results[field].domain + '</a></li>');	
			maxwidth = 	(json.results[field].domain.length * 9 > maxwidth ? json.results[field].domain.length * 9 : maxwidth);
		}
		
		if(items.length < 1){
			alert("There are no more search results");
			//show our previos button
			$("#prev_search").hide();	
			return;	
		}
								
								
		$('#search_results li').remove();
		
		$("#fancybox-wrap").width(maxwidth);
		$("#search_results").width(maxwidth);
		$("#fancybox-content").css("background-color", "#fff");
		$("#fancybox-outer").width(maxwidth + 40);
		$("#fancybox-content").width(maxwidth);
				
		$("#search_results").html(items.join(''));
		
		//update our curOffset
		curOffset -= 50;
		
		if(curOffset == 0){
			$("#prev_search").hide();	
		}
		
	});
			
}


function cycleRecents() {
    var cb, cycleNext, numAnimations;        
    
    cycleNext = function(id) {
        var $currItem, $nextItem;
        $currItem = $(id + ' li:visible');
        $nextItem = $currItem.next();
        if($nextItem.length < 1) {
            $nextItem = $(id + ' li').first();  // back to the top 
        }        
        $currItem.fadeOut('slow', function() {
            $nextItem.fadeIn('slow', function() {
                cb();
            });
        });
    }
     
    numAnimations = 2;      // must match number of cycleNext calls 
    cb = $.waitForNAnimations(numAnimations, function () {
        setTimeout('cycleRecents()', cycleRecentsInterval);
    });       
    
    cycleNext('#recent_searches');
    cycleNext('#recent_whois');
}




function getDispTimestamp(timestamp, days, secs) {
    if(days > 0) {        
        return days + 'd ago';
    } else {
        if(secs < 60) {
            ts = secs + "s ago";
        } else if(secs < 3600) {
            minutes = Math.floor(secs / 60);
            ts = minutes + "m ago";            
        } else {
            hours = Math.floor(secs / 3600);
            ts = hours + "h ago";
        }
        return ts;
    }
}


function setupSoldNamesScroller(sold_names_list) {
	sold_names_list.$list.closest('.center-widget-scroller').scroll(function() {
	    // check to see if we are loading 	    	    
	    if(sold_names_list.loading) {
	        return;
	    }
	    
	    // see if we are at bottom of scroller
	    if(Math.ceil($(this).height() - sold_names_list.$list.offset().top + $(this).offset().top) + 1 >= 
	       sold_names_list.$list.outerHeight()) {
	        
	        sold_names_list.loading = true;	        
	        sold_names_list.$list.find('.throbber').show();
	        
	        // load more names 
	     	$.ajax({
              url: "/sell/dmp_api/sold",
              data: {
                        page_num : sold_names_list.page_num, 
                        results_per_page : sold_names_list.results_per_page
                    }
            })
            .done(function( json ) {                
                var html, $tbody = sold_names_list.$list.find('tbody');                                
	            sold_names_list.page_num++;
	            
                $.each(json.domain_list, function(idx, sold_name) {
                    $tbody.append( makeSoldNameRow(sold_name) );
/*                    html = '<tr>';
                    html += '<td>';
                    
                    if (/^dns$/.test(sold_name.source)) {
                        html += '<a href="' + domainURL + sold_name.domain + '" target="_blank">' 
                                + sold_name.domain 
                                + "</a>";
                    } else {
                        html += sold_name.domain;
                    }
                    html += '</td>';
                    html += '<td>' + sold_name.price_range + '</td>';
                    html += '<td>' + sold_name.date_label + '</td>';
                    html += '<td>' + sold_name.source + '</td>';                    
                    html += '</tr>';
                    $tbody.append( html );
                    */
                    
                });
            })
            .fail(function() {
                alert('Failed to load more sold names');
            })
            .always(function() {
                sold_names_list.loading = false;
	            sold_names_list.$list.find('.throbber').hide();
            });
	    }	    
	});
}



function makeSoldNameRow(sold_name) {
    var html, is_dns_name = false;
    
    html = '<tr>';
    html += '<td class="nobr">';
    
    if (/^dns$/i.test(sold_name.source)) {
        html += '<a href="' + domainURL + sold_name.domain + '" target="_blank">' 
                + sold_name.domain 
                + "</a>";
        is_dns_name = true;
    } else {
        html += sold_name.domain;
    }
    html += '</td>';
    html += '<td class="nobr">' + sold_name.price_range + '</td>';
    html += '<td class="date">' + sold_name.date_label + '</td>';
    html += '<td class="source">';
    if(is_dns_name) {
        html += '<a href="' + domainURL + sold_name.domain + '" target="_blank">'
                + sold_name.source 
                + '</a>';
    } else {
        html += sold_name.source;
    }            
    html += '</td>';                    
    html += '</tr>';
    
    return html;    
}


function setupSoldNameSearch(soldname_search) {
	soldname_search.$search.submit(function() {		
		var $this_ref = $(this);
				
		soldname_search.terms = $(this).find('input[name=terms]').val();
		soldname_search.start_date = $(this).find('input[name=start_date]').val();
		soldname_search.end_date = $(this).find('input[name=end_date]').val();			
		soldname_search.offset = 0;
                
		if(!soldname_search.terms || /^$/.test(soldname_search.terms)) {
			alert("Please enter a search term");
			return false;
		}
						
		// show our prelaoder		
		$(this).find('.throbber').show();
				
		soldSearch( 
		    soldname_search, 
    		function(json) {    		
    		    var html = '', items = [];	
            
                if (json.results == null || json.results.length == 0) {
                    html = '<h2>No Results</h2>';
                } else {
                    $.each(json.results, function(idx, sold_name) {     
                        items.push(makeSoldNameRow(sold_name));
                        //items.push('<tr><td>'+sold_name.domain +'</td><td>'+sold_name.price_range+'</td><td>'+sold_name.date_label+'</td><td>'+sold_name.source+'</td></tr>');                                                 
                    });
                                                                    
                    html = "<table id='soldname_results'>";
                    html += '<thead><tr>';
                    html += '   <th>Domain</th>';
                    html += '   <th>Price</th>';
                    html += '   <th>Date</th>';
                    html += '   <th>Source</th>';
                    html += '</tr></thead>';
                    html += '<tbody>' + items.join('') + '</tbody>';
                    html += '<tfoot><tr><td colspan="4">';
                                        
                    html += "<p style='margin-top: 15px;'><a class='prev' href='#' style='float:left; color:black; display:none'>< Prev</a>\n";                    
                    if ((json.offset + json.results.length) < json.total_names) {
                        html += "<a class='next' href='#' style='float:right; color:black'>More ></a>";
                    }
                                    
                    html += '</td></tr></tfoot>';
                    html += '</table>';
                }                                            
                
		        $.fancybox(
                    html,
                    {
                        'autoDimensions'	: false,
                        'padding'           : 20,
                        'width'         	: 660,
                        'height'        	: 'auto',
                        'transitionIn'		: 'none',
                        'transitionOut'		: 'none',
                        'overlayColor'      : '#000',
                        'scrolling'         : false
                    }
                );		
                
                
                var $soldname_results = $('#soldname_results');                
                $soldname_results.delegate('.next', 'click', function(e) {
                    e.preventDefault();        
                    var $this_ref = $(this), items = [];
                    
                    soldname_search.offset += soldname_search.names_per_page;        
                    soldSearch( 
                        soldname_search, 
                        function(json) {	                                        
                            $.each(json.results, function(idx, sold_name) {                        
                                items.push(makeSoldNameRow(sold_name));
                                //items.push('<tr><td>'+sold_name.domain +'</td><td>'+sold_name.price_range+'</td><td>'+sold_name.date_label+'</td><td>'+sold_name.source+'</td></tr>');                                                 
                            });
                                                        
                            $soldname_results.find('tbody tr').remove();                                        
                            //$("#fancybox-content").css("background-color", "#fff");
                                    
                            $soldname_results.find('tbody').append(items.join(''));                
                                            
                            $soldname_results.find('.prev').show();                
                            if((json.offset + json.results.length) >= json.total_names) {
                                $this_ref.hide();
                            }
                        });        
                });	
                
                
                $soldname_results.delegate('.prev', 'click', function(e) {
                    e.preventDefault();
                    var $this_ref = $(this), items = [];
                                        
                    soldname_search.offset -= soldname_search.names_per_page;        
                    soldSearch( 
                        soldname_search, 
                        function(json) {	            
                            $.each(json.results, function(idx, sold_name) {  
                                items.push(makeSoldNameRow(sold_name));                      
                                //items.push('<tr><td>'+sold_name.domain +'</td><td>'+sold_name.price_range+'</td><td>'+sold_name.date_label+'</td><td>'+sold_name.source+'</td></tr>');                                                 
                            });
                                        
                            $soldname_results.find('tbody tr').remove();		        		        		        		
                            //$("#fancybox-content").css("background-color", "#fff");
                                    
                            $soldname_results.find('tbody').html(items.join(''));                
                            
                            $soldname_results.find('.next').show();
                            if(soldname_search.offset == 0) {
                                $this_ref.hide();
                            }
                        });        
                });
                
	    	},
	    	function() {
	    	    $this_ref.find('.throbber').hide();
	    	});		
											
		return false;		
	
	});
}


function setupDateRangePicker($picker) {
    var dates = $picker.find( 'input[name="start_date"], input[name="end_date"]' ).datepicker({
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 2,
        onSelect: function( selectedDate ) {
            var option = this.name == "start_date" ? "minDate" : "maxDate",
                instance = $( this ).data( "datepicker" ),
                date = $.datepicker.parseDate(
                    instance.settings.dateFormat ||
                    $.datepicker._defaults.dateFormat,
                    selectedDate, instance.settings );
            dates.not( this ).datepicker( "option", option, date );
        }
    }).datepicker("option", "dateFormat", "yy-mm-dd");
              
}



function soldSearch(soldname_search, done_cb, always_cb) {
    $.ajax({
          url: "/sell/ajax/soldsearch",
          data: {
            terms : soldname_search.terms,
            start_date : soldname_search.start_date,
            end_date : soldname_search.end_date,
            offset : soldname_search.offset,
            names_per_page : soldname_search.names_per_page, 
          }
        })
        .done(function( json ) {        
            done_cb(json);                        
        })
        .fail(function() {
            alert('Search failed');			    			    
        })
        .always(function() {
            if(always_cb) {
                always_cb();
            }
        });
        
}




