
/* 

Radio 


*/


function recomend_input_click(obj)
{
	activeInputText = '';
	adv.inputClick(obj, false);
}

function site_input_click(obj)
{
	activeInputText = '';
	if ($('search_div').visible() && $(obj).value == '')
	{
		$(obj).value = 'Быстрый поиск по сайту';
		HideWindowWithEffect('search_div');
	}
	else
	{
		//ShowWindowWithEffect('search_div');
		$(obj).value = '';
	}	//searchHide(obj);
}

function radio_input_click(obj)
{
	activeInputText = '';
	searchHide(obj);
}

var activeInputText = '';
function searchHide(obj, text)
{
	
	if ($('radioControl').visible() && $(obj).value == '')
	{
		$(obj).value = rec.inputGreetText;
		HideWindowWithEffect('radioControl');
		return;
	}
	else
	{
		ShowWindowWithEffect('radioControl');
	}
	
	if (text)
		$(obj).value = text;
	else
	{
		$(obj).value = '';
	}


	startClickObserving();
	if ($('window_s_radio').visible())
		rec.initWindow();
}

function load_window_s_radio(wasActive)
{
	if (wasActive)
	{
		ToggleWindowWithEffect('radioControl');
		rec.initWindow();
	}
	if (activeInputText)
	{
		searchHide($('radioSearch'), activeInputText);
		rec.onTextChanged(activeInputText);
		$('radioSearch').focus();
	}
}


function load_window_s_recomend(wasActive)
{
	if (wasActive)
	{
		adv.updateVisibility();
		ToggleWindowWithEffect('recommendControl');
	}
	if (activeInputText)
	{
		adv.inputClick($('recomendSearch'), false);
		$('recomendSearch').value = activeInputText;
		$('recomendSearch').focus();
		
		adv.onTextChanged(activeInputText);
	}
}

function load_window_s_search()
{
	if (activeInputText)
	{
		$('searchField').focus();
		$('searchField').value = activeInputText;
		getSearchResult();
	}
}

function ToggleWindowWithEffect(element)
{
	if (!$(element).visible())
		ShowWindowWithEffect(element);
	else
		HideWindowWithEffect(element);
}

function ShowWindowWithEffect(element, duration)
{
	var d = 0.3;
	if (duration)
		d =  duration;
		
	if (!$(element).visible())
	{
		//$(element).show();
		Effect.SlideDown($(element), { 
			duration:d, queue: { position: 'end', scope: 'myscope', limit: 3 } });
	}
}

function HideWindowWithEffect(element, duration)
{
	var d = 0.3;
	if (duration)
		d =  duration;
		
	if ($(element).visible())
		Effect.SlideUp($(element), { 
			duration:d, queue: { position: 'end', scope: 'myscope', limit: 3 } });
}

var Radio = Class.create();

Radio.prototype = {
	overDelay:500,
	keyDelay:500,
	changedParam:'text',
	oldParam:'',
	oldId:0,
	curId:'',
	artists:[],
	genres:[],
	styles:[],
	queryLimit:5,
	inputGreetText:'Введи имя исполнителя, стиль или жанр и слушай радио',
	ajax_path : '/ajax/ajax_request.php',
	query:	{
		artists:[],
		genres:[],
		styles:[]
	},
	selectedArtistRect:[0,0,0,0],
	selectedArtist:null,
	artistsContainer:null,
	itemsTemplate : new Template("<li><a href='' id='#{prefix}_#{id}'>#{name}</a></li>"),
	initialize: function() {
		this.artistsContainer = $('radio_artist');
		this.initArtists();
		
		if (!this.onL)
			this.onL = this.onListen.bindAsEventListener(this);

		if (!this.onC)
			this.onC = this.onWindowCheckClose.bindAsEventListener(this);

		Event.observe($('listenRadio_a'), 'click', this.onL);
		
		
		if (!this._onArtistClick)
			this._onArtistClick = this.onClickArtist.bindAsEventListener(this);
			
		//Event.observe($('listenRadio_close'), 'click', this.onC); 
	},
	onListen: function(event)
	{
		var pars = {
			act:'saveRadioQuery',
			artists:this.query.artists.join(', '),
			genres:this.query.genres.join(', '),
			styles:this.query.styles.join(', '),
			type:'JSON'
		};
		this.request = new Ajax.Request(
			this.ajax_path, 
			{method: 'post', parameters:pars, onSuccess: playWindowRadio}); 

		//playWindowRadio(null);

		HideWindowWithEffect('radioControl');
		
		Event.stop(event);
		return false;
	},
	initArtists: function()
	{
		if (!this._onClick)
			this._onClick = this.onClick.bindAsEventListener(this);
		
		if (!this._onOver)
			this._onOver = this.onOver.bindAsEventListener(this);
			
		if (!this._onLeave)
			this._onLeave = this.onLeave.bindAsEventListener(this);
		
		var rec = this;
		
		$$('#window_s_radio div.block ul li a').each(
			function(s){
				Event.observe(s, 'click', rec._onClick); 
				Event.observe(s, 'mouseover', rec._onOver); 
				Event.observe(s, 'mouseout', rec._onLeave); 
			});
	},
	//Клик на всплывшем артисте, у него нету парента, поэтому подставляем сами
	onClickArtist: function (event)
	{
		Event.stop(event);
		var element = Event.element(event);
		this.addToQuery(element, this.artistsContainer);
		return false;
	},
	onClick: function (event)
	{
		Event.stop(event);
		var element = Event.element(event);
		this.addToQuery(element, element.up('ul'));
		return false;
	},
	addToQuery: function(element, container)
	{
		var id = element.id.gsub(/\w+_/, '');
		var type = container.id.gsub('radio_','')+'s';
		if (type == 'presets')
			type = 'artists';
		
		var query = 'query_'+type;

		if (this.query[type].indexOf(id) != -1)
			return;
			
		if (this.query[type].length >= this.queryLimit)
		{
			var title = {artists:'Исполнителей', genres:'жанров', styles:'стилей'};
			showMessage('Ты уже выбрал максимально возможное количество '+title[type]+' – '+this.queryLimit,1,1);
			return false;
		}
		this.query[type].push(id);
		new Insertion.Bottom(query, '<li class="remove"><a href="#" onmouseover="Tip(\'Удалить\')" onmouseout="UnTip()" onclick="return rec.removeQueryItem(this, \''+id+'\', \''+type+'\');">'+element.innerHTML+'</a></li>');
		
		this.updateVisibility();
	},
	removeQueryItem: function(item, id, type)
	{
		item.up('li').remove();
		var i = this.query[type].indexOf(id);
		if(i != -1) this.query[type].splice(i, 1);
		
		this.updateVisibility();
		return false;
	},
	clearQuery: function()
	{
		this.query.artists = [];
		this.query.genres = [];
		this.query.styles = [];
		
		$('query_artists').update('');
		$('query_genres').update('');
		$('query_styles').update('');
		
		this.updateVisibility();
	},
	onOver: function (event)
	{
		var element = Event.element(event);
		var parent = element.up(1).id.sub('radio_', '');
		
		
		this.changedParam = parent;
		this[parent+'s'] = element.id.gsub(/\w+_/, '');
		
		if(this.observer)
			clearTimeout(this.observer);
		this.observer = setTimeout(this.onObserverEvent.bind(this, element), this.overDelay); 	
	},
	onLeave: function (event)
	{
		if(this.observer)
			clearTimeout(this.observer);
	},
	onObserverEvent: function(element)
	{
		if (element)
		{
			var parent = element.up(1);
			
			if (!parent)
				return;
	
			this.changedParam = parent.id.gsub('radio_', '');
			var param = this.changedParam;
			if (this.changedParam == 'preset')
				this.changedParam = 'artist';
			
			this[this.changedParam+'s'] = element.id.gsub(/\w+_/, '');
			if (element.id == this.curId)
				return;
	
			this.curId = element.id;
			
			element = element.up();
				
			$A($('radioControl').getElementsByClassName('active')).each(
				function(s){s.removeClassName('active');});
				
			element.addClassName('active');
			
			if (param == 'artist')
				this.selectedArtist = element;
		}
		
		this.observer = setTimeout(this.doSearchRadio.bind(this), 0.0);
	},
	onTextChanged: function(text)
	{
		if (this.text == text)
			return;
			
		if (text.length < 2)
			return;	
			
		this.changedParam = 'text';
		this.text = text;
		
		this.doSearchRadio();
	},
	initRadio: function()
	{
		new Ajax.Request(
			this.ajax_path, 
			{method: 'post', parameters:{act:'initRadio',type:'JSON'}, onSuccess: this.initRadio_.bind(this)}); 
	},
	initRadio_: function(response, json)
	{
		eval(response.responseText);
		this.data = data;
		
		var content = '';
		for (var i =0; i < data.presets.length;i++)
		{
			p = data.presets[i];
			content += '<li class="'+p.state+'">';
			if (p.state != 'disabled')
				content += '<a href="#" id="a_'+p.id+'">'+p.name+'</a>';
			else
				content += '<span onmouseout="UnTip()" onmousemove="Tip(\' '+p.message+' \');return false;" >'+p.name+'</span>';
				
			content += '</li>';
			if (i != data.presets.length-1)
				content += '<li> | </li>';
		}
		$('radio_preset').update(content);
		
		this.updateAll(true);
	},

	
	doSearchRadio: function()
	{
		if (this.changedParam == 'text' && this.text == this.inputGreetText)
			return;
		
		this.oldParam = this.changedParam;
			
		if (this.request)
			this.request.transport.abort();
			
		var pars = {
			act:'doSearchRadio',
			changedParam:this.changedParam,
			text:this.text,
			artists:this.artists,
			genres:this.genres,
			styles:this.styles,
			type:'JSON'
		};
		var qs = $H(pars).toQueryString();
		
		$('radioSearch').addClassName('ajax');
		
		this.request = new Ajax.Request(
			this.ajax_path, 
			{method: 'post', parameters:qs, onSuccess: this.doSearchRadio_.bind(this)}); 
	},
	doSearchRadio_: function(response, json)
	{
		$('radioSearch').removeClassName('ajax');
		eval(response.responseText);
		this.data = data;
		this.updateAll(false);
	},
	initWindow:function()
	{
		if (this.initialized)
			return;
			
		this.initRadio();	
		this.initialized = true;
	},
	
	fillGenres: function(id, data, prefix, name, itemId, bInit)
	{
		if (bInit)
		{
			this.fillList(id, data, prefix, name, itemId);
		}
		else
		{
			$A($(id).getElementsByClassName('active')).each(
				function(s){s.removeClassName('active');});
				
			for (i=0; i<data.length;i++)
			{
				var item = $(prefix+'_'+data[i][itemId]);
				if (item)
				{
					item.up().addClassName('active');
				}
			}
		}
	},
	isIntersect: function(x,y,w,h, x1,y1,w1,h1)
	{
		r = x+w;
		b = y+h;
		r1 = x1+w1;
		b1 = y1+h1;
		if(b < y1 || y > b1 || r < x1 || x > r1)
			return false;
	
		return true;
	},
	getNextPosition: function(w, h)
	{
		var endX = this.curX + w +this.paddingX;
	
		if (endX > this.artistsContainer.offsetWidth+this.artistsXY[0])
		{
			this.curX = this.artistsXY[0];
			this.curY += this.lineHeight;
		}
	
		
		if (this.isIntersect(this.curX, this.curY, w, h, this.selectedArtistRect[0], this.selectedArtistRect[1], this.selectedArtistRect[2]+this.paddingX, this.selectedArtistRect[3]))
		{
			this.curX = this.selectedArtistRect[0]+this.selectedArtistRect[2]+this.paddingX*2;
			return this.getNextPosition(w, h);
		}
	
		
		p = [this.curX, this.curY];
		this.curX += w + this.paddingX;
		return p;
	},
	
	
	repositionElements: function(items, parent, _id)
	{
		this.artistsContainer = $(parent);
		this.artistsXY = Position.page(parent);

		this.curX = this.artistsXY[0]/*(+rand()%40)*/;
		this.curY = this.artistsXY[1];
		this.paddingX=4;
		this.lineHeight = 18;
		
	
		
		var th = this;
		items.each(function(el)
		{
			Position.absolutize(el);
			var a = el.down();
			if (a.id == _id)
			{
				el.style.left = (th.selectedArtistRect[0]-th.artistsXY[0])+'px';
				el.style.top = (th.selectedArtistRect[1]-th.artistsXY[1]-10)+'px';
				el.addClassName('active');
			}
			else
			{
				var p = th.getNextPosition(el.offsetWidth, el.offsetHeight);
				
				el.style.left = (p[0]-th.artistsXY[0])+'px';
				el.style.top = (p[1]-th.artistsXY[1])+'px';
			}
		}
		);
	},
	
	//Артистов не подменяем полностью, а оставляем на том же месте выделенного
	fillArtists: function(id, data, prefix, name, itemId)
	{
		var _id = '0';
		if (this.selectedArtist)
		{
			var a = this.selectedArtist.down();
			_id = a.id.gsub('a_', '');
			data.push({similarArtistId:_id, artist:a.innerHTML, artistId:_id});
		}
		
		if (this.selectedArtist)
		{
			var skipXY = Position.page(this.selectedArtist);
			var skipW = this.selectedArtist.offsetWidth;
			var skipH = 1;
			
			this.selectedArtistRect = [skipXY[0], skipXY[1]+10, skipW, skipH];
		}
		
			
		this.fillList(id, data, prefix, name, itemId);
		this.repositionElements($$('#radio_artist li'), this.artistsContainer, 'a_'+_id);
		
		this.selectedArtist = null;
		this.selectedArtistRect = [0,0,0,0];
	},
	fillList: function(id, data, prefix, name, itemId)
	{
		var items = '';
		var titles = [];
		titles['s'] = 'стилей';
		titles['g'] = 'жанров';
		titles['a'] = 'исполнителей';
		titles['t'] = 'тегов';
		for (i=0; i<data.length;i++)
		{
			var item = {prefix: prefix, id: data[i][itemId], name: data[i][name] }; 
			items += this.itemsTemplate.evaluate(item);
		}
		if (data.length == 0)
			items = '<center><h4 class="notfound">информация не найдена</h4></center>';

		
		$(id).update(items);
		$(id).show();
	},
	updateAll: function(bInit)
	{
		if (this.data.artists != undefined)
			this.fillArtists('radio_artist', this.data.artists, 'a', 'artist', 'artistId');
			
		if (this.data.genres != undefined  && this.changedParam != 'genre')
		{
			this.fillGenres('radio_genre', this.data.genres, 'g', 'genre', 'genreId', bInit);
			this.repositionElements($$('#radio_genre li'), $('radio_genre'), 0);
		}

		if (this.data.styles != undefined  && this.changedParam != 'style')
		{
			this.fillList('radio_style', this.data.styles, 's', 'name', 'styleId');
			this.repositionElements($$('#radio_style li'), $('radio_style'), 0);
		}
			
		//radio_artists
		this.initialize();
		this.updateVisibility();
	},
	updateVisibility: function ()
	{
		this.query.artists.length > 0 ? $('query_artists').up('tr').show() : $('query_artists').up('tr').hide();
		this.query.styles.length > 0 ? $('query_styles').up('tr').show() : $('query_styles').up('tr').hide();
		this.query.genres.length > 0 ? $('query_genres').up('tr').show() : $('query_genres').up('tr').hide();
		
		if (this.query.styles.length + this.query.genres.length + this.query.artists.length)
		{
			$('query').show();
			$('radioControl').removeClassName('disabled');
		}
		else
		{
			$('query').hide();
			$('radioControl').addClassName('disabled');
		}
	},
	onWindowCheckClose: function(event)
	{
		if (event)
			Event.stop(event);

		HideWindowWithEffect('radioControl');

		stopClickObserving();
		return false;
	}
}


/*
Советник
*/



Adviser = Class.create();

Adviser.prototype = {
	ajax_path: '/ajax/ajax_request.php',
	like:[],
	dontlike:[],
	keyDelay:300,
	query_limit:5,
	text:'',
	inputGreetText:'Введи имя исполнителя и найди похожих',
	itemsTemplate : new Template("<tr id='a_#{id}'><!--<td class='dontlike'>&nbsp;</td>--><td class='like' ><a href='#'>#{name}</a></td></tr>"),
	chosenTemplate : new Template("<tr><td width='90%' NOWRAP='NOWRAP' ><a onclick='adv.remove(this, \"#{id}\", #{like}); return false;' onmouseout='UnTip()' onmouseover='Tip(\"Удалить\")' class='remove' href='#'>#{name}<i>&nbsp;</i></a></td></tr>"),
	initialize: function(like, dontLike, all) {
		//this.like = like;
		//this.dontlike = dontLike;
		if (like)
		{
			for (var i = 0; i < like.length; ++i)
				this.addQueryItem(true, like[i], all[like[i]]['artist']);
		}

		if (dontLike)
		{
			for (i = 0; i < dontLike.length; ++i)
				this.addQueryItem(false, dontLike[i], all[dontLike[i]]['artist']);
		}

		Event.observe($('recommendButton_a'), 'click', this.onRecommend.bindAsEventListener(this)); 
		//Event.observe($('recommendButton_close'), 'click', this.onHideWindow.bindAsEventListener(this)); 
	},
	onHideWindow: function(event)
	{
		this.showHide($('recomendSearch'), true);

		HideWindowWithEffect('recommendControl');

		this.updateVisibility();
		stopClickObserving();

		Event.stop(event);
		return false;
	},
	onWindowCheckClose: function()
	{
		HideWindowWithEffect('recommendControl');
		this.updateVisibility();
		stopClickObserving();
	},
	inputClick: function(input, bShowGreet)
	{
		if ($('recommendControl').visible() && $(input).value == '')
		{
			$(input).value = this.inputGreetText;
			HideWindowWithEffect('recommendControl');
			return;
		}
		
		this.showHide(input, bShowGreet);
	},
	showHide: function(input, bShowGreet)
	{
		this.text = '';
		if (bShowGreet)
		{
			$(input).value = this.inputGreetText;
			this.onClearList();
		}
		else
		{
			$(input).value = '';
			this.updateVisibility();
		}
			
		if (!$('recommendControl').visible())
		{
			//$('recommendControl').show();
			ShowWindowWithEffect('recommendControl');
			startClickObserving();
		}
	},
	updateVisibility: function()
	{
		if (this.like.length || this.dontlike.length)
		{
			$('chosenList_container').show();
		}
		else
		{
			$('chosenList_container').hide();
		}
		
		if ($$('#artistsList td').length == 0)
		{
			$('artistList_container').hide();
			
			var left = this.query_limit - this.like.length;
			if (left)
			{
				if (left == this.query_limit)
					str = 'Укажи до '+this.query_limit+' исполнителей, и получи рекомендацию похожей музыки.';
				else
					str = 'Можешь добавить еще '+left+(left > 4 ? ' исполнителей.' : ' исполнителя.');
			}
			else
			{
				$('recomendSearch').value = 'Лимит исчерпан';
				str = 'Нажми кнопку "Получить рекомендацию"';
			}

			$('recommend_tip').update(str);
			$('recommend_tip_container').show();
		}
		else
		{
			$('artistList_container').show();
			$('recommend_tip_container').hide();
		}
		
		tt_Hide();

	},
	onClearList: function()
	{
		if ($('artistsList') && $('artistsList').visible())
		{
			$('artistsList').update('');
			this.updateVisibility();
		}
	},
	onRecommend: function (event)
	{
		var like = this.like.join(',');
		var dontlike = this.dontlike.join(',');
		document.location.href = DOMAIN+'recommendation?like='+like+'&dontlike='+dontlike;
		Event.stop(event);
		return false;
	},
	onTextChanged: function(text, event)
	{
		if (event)
		{
			//реагируем на ввод и сразу добавляем в список, если есть в подсказках
			if (key_code(event) == 13)
			{
				for (var i=0; i < this.data.artists.length; i++)
				{
					var a = this.data.artists[i];
					if (a.artist.toLowerCase() == text.toLowerCase())
					{
						this.addQueryItem(true, a.artistId, a.artist);
						
						adv.inputClick($('recomendSearch'), false);
						
						if(this.clearobserver)
							clearTimeout(this.clearobserver);
						this.clearobserver = setTimeout(this.onClearList.bind(this), 10); 
						break;
					}
				}
				return;
			}
		}
		
		if (this.text == text)
			return;
			
		if (text.length < 2)
			return;
			
		if (this.like.length >= this.query_limit)
			return;
		
			
		this.changedParam = 'text';
		this.text = text;
		
		this.onObserverEvent();
	},
	onObserverEvent:function()
	{
		var pars = {
			act:'getArtistsLike',
			artist:this.text,
			type:'JSON'
		};
		$('recomendSearch').addClassName('ajax');
		
		
		this.request = new Ajax.Request(
			this.ajax_path, 
			{method: 'post', parameters:$H(pars).toQueryString(), onSuccess: this.doSearchArtist_.bind(this)}); 
	},
	doSearchArtist_: function(response, json)
	{
		$('recomendSearch').removeClassName('ajax');
		eval(response.responseText);
		this.data = data;
		
		items = '';
		if (this.data.artists)
		{
			for (var i=0; i < this.data.artists.length; ++i)
			{
				var item = {id: this.data.artists[i].artistId, name: this.data.artists[i].artist }; 
				items += this.itemsTemplate.evaluate(item);
			}
		}
		$('artistsList').update(items);
		
		if (!this.onClick_)
			this.onClick_ = this.onClick.bindAsEventListener(this);

		var th = this;
		$$('#artistsList td a').each(
			function(s){
				Event.observe(s, 'click', th.onClick_); 
			});

		
		this.updateVisibility();
	},
	onBlur: function()
	{
		$('recomendSearch').value = this.inputGreetText;
	},

	onClick: function(event)
	{
		Event.stop(event);
		var element = Event.element(event);
		this.addToQuery(element);
		this.showHide($('recomendSearch'), true);
		
		if(this.clearobserver)
			clearTimeout(this.clearobserver);
		this.clearobserver = setTimeout(this.onClearList.bind(this), 10); 

		
		return false;
	},
	addToQuery: function(element)
	{
		element = element.up('td');
		var bLike = element.hasClassName('like');
		var id = element.up().id.sub('a_', '');
		var name = element.down('a').innerHTML;
		if (!bLike)
			name = element.next().innerHTML;
			
		this.addQueryItem(bLike, parseInt(id), name);
		this.updateVisibility();
	},
	
	addQueryItem: function (bLike, id, name)
	{
		id = parseInt(id);

		var ar = [];
		if (!bLike)
			ar = this.dontlike;
		else
			ar = this.like;
		if (this.like.indexOf(id) != -1 || this.dontlike.indexOf(id) != -1)
			return;
			
		var item = {id: id, name: name, className:bLike?'like':'dontlike', like:bLike?'true':'false' }; 
		new Insertion.Bottom('chosenList', this.chosenTemplate.evaluate(item));
			
		ar.push(id);
	},
	remove: function (element, id, bLike)
	{
		id = parseInt(id);
		var ar = [];
		if (!bLike)
			ar = this.dontlike;
		else
			ar = this.like;
			
		var i = ar.indexOf(id);
		if(i != -1) ar.splice(i, 1);

		element.up('tr').remove();
		
		this.updateVisibility();
		
		return false;
	}
}

function hideArtist(element, artistId)
{
	new Ajax.Request('/ajax/ajax_request.php?act=artistDontShow&artistId='+artistId);
	li = $(element).up('li');
	new Effect.SlideUp(li);
	return false;
}

/*
Top search controls
*/

function startClickObserving()
{
	//Event.observe(document.body, 'click', onWindowCheckClose);	
}

function stopClickObserving()
{
	//Event.stopObserving(document.body, 'click', onWindowCheckClose);	
}

function onWindowCheckClose(event)
{
	var elt = $(Event.element(event)).up('div.search_window'); 
	if (!elt)
	{
		if (!$(Event.element(event)).up(1) && $(Event.element(event)) != document.body)
			return;
			
		adv.onWindowCheckClose();
		rec.onWindowCheckClose();
	}
}

function respondFocus(event)
{
	var element = Event.element(event);
	element.addClassName('active');
}

function respondBlur(event)
{
	var element = Event.element(event);
	element.removeClassName('active');
}

function respondKey(event)
{
	var element = Event.element(event);
	activeInputText = element.value;
}

function activateTab(tab, inputValue)
{
	var element = $(tab);
	var wasActive = element.hasClassName('active');
	all_tabs.each(function(s){s.removeClassName('active');});
	element.addClassName('active');
	showSearchWindow(element.id, true, activeInputText, wasActive);
}

function showSearchWindow(id, show, inputValue, wasActive)
{
	all_windows.each(Element.hide);
	var windowId = 'window_'+id;
	if (show)
	{
		if (inputValue)
		{
			var i = $(windowId).down('input');
			i = $(i);
			i.value = inputValue;
		}
		$(windowId).show();
		var func = 'load_'+windowId+'(wasActive);';
		Try.these(function (){eval(func);});
	}
	
}


var preload = [
	'/themes/original/i/topsearch/listen.png', 
	'/themes/original/i/topsearch/listen_a.png', 
	'/themes/original/i/topsearch/like_a.png', 
	'/themes/original/i/topsearch/like.png', 
	'/themes/original/i/topsearch/dontlike_a.png', 
	'/themes/original/i/topsearch/dontlike.png', 
	'/themes/original/i/topsearch/advice.png', 
	'/themes/original/i/topsearch/remove.png', 
	'/themes/original/i/topsearch/row_bg.gif',
	'/themes/original/i/close.png',
	'/themes/original/i/close_active.png',
	'/themes/original/i/play_gray.png',
	'/themes/original/i/play_orange_active.png'
	];

var Preloader = function(aImages){
	var i=0;
	if(aImages.length >0){
		var img = new Image();
		img.src = aImages[0];
		img.onload = function(){
			aImages.shift();
			Preloader(aImages);
		};
	} else {
		return true;
	}
};

Preloader(preload);

//adv = new Adviser([], [], []);