// This is a client based class to communicate with the remote search.
// 
var Searchlist = Class.create();
Searchlist.prototype = {
    initialize: function(searchTerm, searchType, start, searchId) {
        this.searchTerm = searchTerm;
        this.searchType = searchType;
        this.start = start;
        this.searchId = searchId;
        this.searchUl = $('search-list');
        this.onComplete = this.updateSearchlist.bindAsEventListener(this);
    },


	///////////////////////////////// Recommendation WIDGET //////////////////////////////////////////////
	getSearchlist: function() {
		var searchlistUrl = '/search/ajax/list/?q=' + encodeURIComponent(this.searchTerm);
		if (this.searchType)
		{
			searchlistUrl = searchlistUrl+'&type='+this.searchType;
		}
		if (this.start)
		{
			searchlistUrl = searchlistUrl+'&start='+this.start;
		}
		var request = new Ajax.Request(searchlistUrl, {
					method: 'get',
					onSuccess: this.onComplete
				}
			);
	},

	updateSearchlist: function(transport) {
		var searchresponse = eval('('+transport.responseText+')');
		if(searchresponse.search.total==0) {
			this.notFound();
		}
		if (searchresponse.searchlist.length>0) {
			this.searchUl.removeChild($('search-list-waiting'));
			for (var i = 0; i < searchresponse.searchlist.length; i++) {			
				var item = searchresponse.searchlist[i];
				this.addSearchItem(i, item);	
			}
			$('result-start').innerHTML = searchresponse.search.start;
			$('result-end').innerHTML = searchresponse.search.end;
			$('result-total').innerHTML = searchresponse.search.total;
		}
	},
	
	addSearchItem: function (key, item) {
		var listItem = document.createElement("LI");
		var itemHTML;
		listItem.setAttribute("class","search-result-item");
	//	listItem.setAttribute("style","opacity:0;");
	//	listItem.setAttribute("id","search-result-item-"+key);
		itemHTML = '<div class="search-result-cover"><a href="'+item.url+'"><img src="'+item.image_url+'" width="70" alt="'+item.title+'" /></a></div>';
		itemHTML = itemHTML+'<h2><a href="'+item.url+'" class="search-result-title">'+item.title+'</a> | '+item.year+' | <a class="search-result-director" href="'+item.director.url+'">'+item.director.name+'</a></h2>';
		itemHTML = itemHTML+'<p class="search-result-description">'+item.abstract+'</p>';
		itemHTML = itemHTML+'<p class="search-result-staff">mit ';
		for (var i=0; i<item.actor.length; i++) {
			itemHTML = itemHTML+'<a href="'+item.actor[i].url+'">'+item.actor[i].name+'</a>';
			if (i<item.actor.length-1)
			{
				itemHTML = itemHTML+', ';
			}
		}
		itemHTML = itemHTML+'</p>';
	//	itemHTML = itemHTML+'<div class="search-result-rating"><img src="/skin/frontend/default/flimmit/images/search/rating_dummy.gif" alt="Rating Dummy" /></div>';
	//	itemHTML = itemHTML+'<div class="search-result-deeplink"><ul>';
	//	itemHTML = itemHTML+'<li><a href="#" class="category">Overview</a> |</li>';
	//	itemHTML = itemHTML+'<li><a href="'+item.image_url+'" class="category">Filminfo</a></li>';
	//	itemHTML = itemHTML+'<li><a href="#" class="category">VOD</a> |</li>';
	//	itemHTML = itemHTML+'<li><a href="#" class="category">Rewiews</a> |</li>';
	//	itemHTML = itemHTML+'<li><a href="#" class="category">Trailers</a> |</li>';
	//	itemHTML = itemHTML+'<li><a href="#" class="category">Images</a></li>';
	//	itemHTML = itemHTML+'</ul></div>';

		listItem.innerHTML = itemHTML;
		this.searchUl.appendChild(listItem);
	//	$("search-result-item-"+key).morph('opacity:1;');

	//	if (key==0) {
	//		$('trailer-title').innerHTML = item.title;
	//		$('trailer').style.display = "block";
	//	}
	},
	
	notFound: function () {
		$('search-list-waiting').innerHTML = 'Sorry, kein Treffer!';
	}
	
}

function embed_products_toggle(item) {
	var $item = $(item);
	var effect_duration = 0.2;

	while($item && ! $item.match('li')) {
		$item = $($item.parentNode);
	}
	if(! $item) throw new Error('list item not found');

	var $products_container = $item.select('.products-container').first() || embed_products_new($item);
	var $more_link = $item.select('.more-link').first();

	// console.log('container', $products_container); // debug
	// console.log('item', $item); // debug

	// $products_container.toggle(); // debug

	if($products_container.getStyle('display') == 'none') {
		// show
		new Effect.SlideDown($products_container, { duration: effect_duration });
		if($more_link) $more_link.addClassName('more-link-icon-toup');
	} else {
		// hide
		if($products_container.slider.ready()) {
			new Effect.SlideUp($products_container, { duration: effect_duration });
			if($more_link) $more_link.removeClassName('more-link-icon-toup');
		}
	}


	return false;
}

function embed_products_new($item) {
	var $products_container = new Element('div', {
		'class': 'products-container',
		'style': 'height: 1px; overflow: hidden'
	});

	//$item.getDimensions().width + 'px';
	//console.log('width', $item.getDimensions().width + 'px'); // debug

	$products_container.update('<div class="slider-carousel" style="width: '+ $item.getDimensions().width +'px;">'+
		'<div title="Previous" class="prev-arrow"></div><div title="Next" class="next-arrow"></div>'+
		'<div class="clip"><ul></ul></div><span class="searchicon">Suche läuft...</span></div>');

	$item.insert($products_container);

	$products_container.slider = slider_carousel($products_container.select('.slider-carousel').first(), {
		//img_size: { width: 70, height: 140 },
		load_url: '/search/ajax/product/', ajax_params: 'output=raw&sortby=type&id=' + $item.readAttribute('film_id')
	});

	$products_container.setStyle({height: '', overflow: '', display: 'none'});

	return $products_container;
}

