var query = new searchObject();
var sr_curr = 1;
var is_loading = false;

$zoeken = jQuery.noConflict();
$zoeken(document).ready(function()
{
	init_zoeken();
	
	$zoeken("#search-options-refine li").die().live('mouseup', function() {
		if(query.type == 'alle-regisseurs') $zoeken("#search-options-refine li").attr("class", "");
		$zoeken(this).toggleClass("selected");
		if( $zoeken("#search-options-refine li.selected").size() > 0)
			$zoeken("#search-options-showresults").stop().slideDown(100);
		else
			$zoeken("#search-options-showresults").stop().slideUp(100);
	});
	
	zoek();
});

function searchObject(type)
{
	this.type = type;
	this.tags = new Array();
	this.page = 1;
	this.total = 0;
}

function init_zoeken()
{
	$zoeken("#search-options-top li").die().live('mouseup', function() 
	{
		$zoeken('#search-options-categorieen').slideUp("fast");
		zoek();
	});
	
	$zoeken("#search-options-showresults").click('mouseup', function()
	{
		$zoeken('#search-options-categorieen').slideDown("fast");
	});
}

function zoek()
{
	if(is_loading) return;
		is_loading = true;
		
		if(query.type != $zoeken(this).attr("id")){
			query = new searchObject($zoeken(this).attr("id"));
			$zoeken("#search-options-showresults").stop().slideUp(100);
			
			// remove previous top selection
			$zoeken("#search-options-top li").attr("class", "");
			// set new selection
			$zoeken(this).attr("class", "selected");
			
		}else{
			if(query.type == 'meestrecent'){
				is_loading = false ;
				return;
			}
		}
		
		// clear & hide previous sub selection
		$zoeken("#search-options-refine li").removeClass('selected');
		$zoeken("#search-options-refine").stop().slideUp(50);//.html(loading()).show();
		
//		window.console.log(query);

		query.type = 'alle-categorieen';
		
		if(query.type && query.type!="") {
			if(window.console)console.log(query.type);
			$zoeken.ajax({
				type: "POST",
				url: window.location.href, 
				dataType: 'json', 
				data: ({
					category: query.type
				}),
				success: function(data) {
					if(data.status == 200)
					{
						if(window.console) window.console.log(data);
						if(query.type == 'meestrecent'){
							//$zoeken("#search-options-refine").stop().slideUp(50)
							display_results(data);
						}else{
							if(data.result) {
								$zoeken("#search-options-refine").stop().html(data.result).slideDown(100, function () {is_loading = false;});
								if(query && query.tags && query.tags.length > 0){
									var tmp = "#"+query.tags.join(', #');
									if(window.console) window.console.log(tmp);
									$zoeken(tmp).addClass('selected');
								}
								init_zoeken_refine(query);
							}else{
								$zoeken("#search-options-refine").stop().html("<h2>Geen resultaten</h2>").slideDown(100, function () {is_loading = false;});
//								$zoeken("#search-options-showresults").stop().slideUp(50);
								$zoeken("#search-options-results").fadeTo(100, 0, function() {
									$zoeken("#search-options-results").html('').css('background-color', '#fff');
								})
								$zoeken("#sr_total").html("0 films");
							}
						}
					}
				},
				complete: function(r){
//					alert(r.responseText);
					
				}
			});
		}
		/*

		$zoeken("#search-options-refine li").die().live('mouseup', function() {
			if(query.type == 'alle-regisseurs') $zoeken("#search-options-refine li").attr("class", "");
			$zoeken(this).toggleClass("selected");
		});
*/
}


function init_zoeken_refine(query)
{
	$zoeken("#search-options-showresults").die().live('mouseup',function() 
	{
		query.page = 1;
		if(window.console) window.console.log(query);
		
		searchnow(query);
		
		$zoeken("#sr_prev").die().live("mouseup", function(e) {
			e.preventDefault();
			if(query.page > 1){
				query.page -= 1;
				searchnow(query)
				if(window.console) window.console.log(query);
			}
			return false;
			});
		
		$zoeken("#sr_next").die().live("mouseup", function(e) {
			e.preventDefault();
			query.page += 1;
			searchnow(query);
			if(window.console) window.console.log(query);
			return false;
			});
		
		
	});
}

function searchnow(query)
{
	if(is_loading) return;
	is_loading = true;
	if( $zoeken("#search-options-refine li.selected").size() > 0 )
	{
		// hide search interface
		$zoeken("#search-options-showresults").stop().slideUp(50);
		$zoeken("#search-options-refine").stop().slideUp(100);
		//$zoeken("#search-options-results").stop().slideUp(50);
		
		query.tags = new Array();
		$zoeken("#search-options-refine li.selected").each(function(index) { 
			var uniquetag = $zoeken(this).attr("id");
			query.tags.push(uniquetag);
		});
		
		if(window.console) window.console.log(query);
		
		
		$zoeken.ajax({
			type: "POST",
			url: window.location.href, 
			dataType: 'json', 
			data: ({
				action: 'get_videos', 
				query: JSON.stringify(query), 
				page: (query.page), 
				limit: 12
			}),
			success: function(data) {
				if(window.console) window.console.log(data);
				if(window.console) window.console.log(data.msg);
				if(data.status == 200) {
					
					if(window.console) window.console.log(data);
					display_results(data);
				}
			},
			complete:function(r){
//				alert(r.responseText);
			}
			
		});
	}
}

function display_results(data){
	$zoeken("#content-right").show();
	$zoeken(".footer").show();
	$zoeken("#search-options-results").fadeTo(100, 0, function() {
		$zoeken("#search-options-results").html(data.result); 	
		$zoeken("#search-options-results").fadeTo(100, 1, function(){
			$zoeken("#search-options-results .item").hover( function() {
				$zoeken(this).find('.motitle').show();
			}, function(){
				$zoeken(this).find('.motitle').hide();
			});
			is_loading = false;
		}).css('background-color', '#fff');
		//$zoeken('search-options-refine').animate({scrollTop:0}, 'fast');
	});
	
	
//	if(data.objects.length > data.perpage)
	if(data.total > data.perpage)
	{
		$zoeken("#sr_prev span a").html(data.page > 1 ? "previous" : "");
		$zoeken("#sr_curr span").html("page " + (query.page) + " of " + Math.ceil(data.total / data.perpage));
		$zoeken("#sr_next span a").html(data.page < Math.ceil(data.total / data.perpage) ? "next" : "");
	}
	
	$zoeken("#sr_total").html(data.total + " film" + (data.total == 1 ? '':'s'));
}

function loading()
{
	html  = "";
	html += "<div class=\"loading\"></div>";
	return html;
}

