var loadingEl  = new Element('div', {'id':'loading', 'class':'loading'});
var loadingEl2 = new Element('div', {'class':'loading2'}).setHTML('<br/><p>'+LANG.search.load+'</p>');
var loadingOpacity  = new Fx.Style(loadingEl, 'opacity',{duration:200});
var loadingOpacity2 = new Fx.Style(loadingEl2, 'opacity',{duration:200});
var filterToggle;
loadingOpacity.set(0);
loadingOpacity2.set(0);


function correctPaginationWidth() {
	var minWidth=0;
	$$('ul.paginierung').getChildren('li').each(function(val) {
		val.getSize().each(function(size) {
			minWidth+=size.x;
		});
		
	});
	$$('ul.paginierung').setStyle('width', (minWidth+17) + 'px');
}

window.addEvent('domready', function(){
	correctPaginationWidth();
	
	//countBoxesOpacityStep = 1 / $$('.mitglieder_online_listing').length;
	//startOpacity = 1;
	//var fade_in=1;
	//var fade_out=.5;

	//store titles and text for tooltips
	$$('dl.mitglieder_thumbs_listing dd.bar div a','dl.mitglieder_thumbs_listing dd.memberonly-bar div a').each(function(element,index) {
		element.store('tip:text', element.get('title'));
	});
	
	// $$('dl.mitglieder_thumbs_listing dd.bar div[class!=memberonly-photos-icon]')
	
	//create the tooltips
	var customTipsB = $$('.icon-tips-link');
	var tipz = new Tips(customTipsB,{
		className: 'search-icon-tips',
		fixed: true,
		hideDelay: 20,
		showDelay: 20,
		offsets:{'x':-30,'y':-40}
	});

	/*$$('.mitglieder_online_listing').each(function(el){
		el.set('opacity',startOpacity);
		startOpacity = startOpacity - countBoxesOpacityStep;
	});
	$$('.mitglieder_online_listing').addEvents({
		mouseenter: function(){
		initialOpacity = this.get('opacity');
		this.fade(fade_in);
		},
		mouseleave: function(){
			this.fade(initialOpacity);
		}
	});*/

	$$('dl.mitglieder_thumbs_listing dd.bar div','dl.mitglieder_thumbs_listing dd.memberonly-bar div').addEvents({
		mouseenter :function(){
			moveSprite(this,(48*5));
		},
		mouseleave: function(){
			moveSprite(this,-(48*5));
		}
	});
	
	History.start();
	window.route = new History.Route({
		defaults: [ajaxSearchSiteNum, ajaxSearchSiteNum],
		pattern: (/seite\((\d+)\)/),
		generate: function(values) {
			return 'seite(' + values[0] + ')';
		},
		onMatch: function(values, defaults) {
			ajaxPaginate(ajaxSearchUrl+'_'+values[0]+'.html');
		}
	});
	History.match();
	
	//var pos = ajaxSearchSiteNum;
	//var hits = [];
 
	/*History.addEvent('change', function(state, stateOld, manual) {
		var index = stateOld + '-' + state, indexRev = state + '-' + stateOld;
		if (hits[pos] && (hits[pos].index == index || hits[pos].index == indexRev)) {
			hits[pos].element.setStyle('color', '#888');
			pos--;
		} else if (hits[pos + 1] && (hits[pos + 1].index == index || hits[pos + 1].index == indexRev)) {
			hits[pos + 1].element.setStyle('color', '#000');
			pos++;
		}  else {
			pos = hits.push({
				index: index,
				element: new Element('span', {
					'text': stateOld + ' *' + ((manual) ? 'manual' : 'observed') + '* ' + state + ' , ',
					'title': this.getState()
				}).inject($('clicked'))
			}) - 1;
		}
	});*/
	// change the display mode for the search results
	if($('grid-view')) $('grid-view').addEvent('click', function() {
		$('line-view').setStyle('background', 'url("/images/grid_lines_sprite.png") 0 0px no-repeat');
		$('grid-view').setStyle('background', 'url("/images/grid_lines_sprite.png") 0 -45px no-repeat');
		changeBoxDisplay('box');
	});
	if($('line-view')) $('line-view').addEvent('click', function() {
		$('line-view').setStyle('background', 'url("/images/grid_lines_sprite.png") 0 -15px no-repeat');
		$('grid-view').setStyle('background', 'url("/images/grid_lines_sprite.png") 0 -30px no-repeat');
		changeBoxDisplay('line');
	});	
	
	$('searchBox').adopt(loadingEl).adopt(loadingEl2);
	
	if(Cookie.read('displayMode')=='box') {
		if($('line-view') && $('grid-view')){
			$('line-view').setStyle('background', 'url("/images/grid_lines_sprite.png") 0 0px no-repeat');
			$('grid-view').setStyle('background', 'url("/images/grid_lines_sprite.png") 0 -45px no-repeat');
			changeBoxDisplay('box');
		}
	}
});

function moveSprite(obj,distance){
	if(!obj.hasClass('inactive')){
		position = obj.getStyle('background-position');
		position = position.split(' ');
		old_y = parseInt(position[1])-distance;
		new_y = parseInt(position[1])+distance;		
		obj.setStyle('background-position', position[0]+' '+old_y+'px');
	}
}

function showLoader() {
	$$('.loading').setStyle('height', $('results').getStyle('height'));
	$$('.loading').setStyle('top', $('filterbar').getCoordinates($('searchBox')).bottom+2);
	$$('.loading2').setStyle('top', $('filterbar').getCoordinates($('searchBox')).bottom+152);
	loadingOpacity.start(0, 0.2);
	loadingOpacity2.start(0, 1);
	window.scrollTo(0, 900);
	if(window.getScroll().y>(parseInt($('filterbar').getCoordinates($('searchBox')).bottom)+152))
		window.scrollTo(0,$('filterbar').getCoordinates($('searchBox')).bottom);
}

Element.extend({
	toObjects: function(){
		var o = {};
		this.getElements('input, textarea, select').each(function(el){
			var name = el.get('name');
			var value = el.get('value');
			if (value === false || !name || el.disabled || el.checked === false) return;
			var obj = function(val){
				o[el.name] = el.get('value');
			};
			if ($type(value) == 'array') value.each(obj);
			else obj(value);
		});
		return o;
	}
});
function ajaxPaginate(url) {			
	var Suche = /_(\d*)\.html/;
	if(typeof(url)!='undefined' && url.test(Suche)) {
		Ergebnis = Suche.exec(url);
		var siteNum = parseInt(Ergebnis[1]);
	}else var siteNum=1;
	if(ajaxSearchSiteNum==siteNum) return false;
	//reqHistory.setValue0,( (ajaxSearchSiteNum=siteNum));
	history.setState("seite("+(ajaxSearchSiteNum=siteNum)+")");

	showLoader();
	//console.log($('theSearchForm'));
	ajaxSearchSiteNum=siteNum;
	
	var oldurl = $('theSearchForm').action;
	$('theSearchForm').action = url;
	sendform($('theSearchForm'), 'Search::ajaxSearch', doresult);
	$('theSearchForm').action = oldurl;
	//jslink(url, $('theSearchForm').toObjects(), 'Search::ajaxSearch', doresult);
	return false;
}




function doresult(resultData){
	loadingOpacity.stop();
	loadingOpacity2.stop();
	loadingOpacity.start(0.2, 0);
	loadingOpacity2.start(1, 0);
	var data = Json.evaluate(resultData);
	$('results').setHTML(data.text);
	$('results').setStyle('height', $('searchBox').getCoordinates().bottom-$('results').getCoordinates().top + 'px');
	correctPaginationWidth();
	//jslink(/search/, '', 'Search::ajaxSearch', doresult);
}



//add list entry to front end
function addSearchEntry(html){
	var returnString = Json.evaluate(html);
	var myListElement = new Element('li', {id: 'search_'+returnString['id']});
	var ul = $('saved_search_list');
	var countEl = $('saved_search_list').getElements('li').length;
	if(countEl > 5){
		var endEl = $('saved_search_list').getLast();
		endEl.destroy();
	}
	var endEl = $('saved_search_list:last-child');
	myListElement.innerHTML = returnString['search_date'];
	myListElement.inject(ul,'top');
}


function updateSavedSearches(){
	if($('saved_search_list')){
		$('saved_search_list').setHTML('<ul><li>searchtitle</li></ul>');
	}else{
		$('saved_search_container').setHTML('<h3>Deine Suchanfragen</h3><ul id="saved_search_list"></ul>');
	}
}

function renderText(thisElement,options){
	currentText = $(thisElement).innerHTML;
	textOptions = options.split('|');
	if(currentText == textOptions[0]){
		$(thisElement).innerHTML = textOptions[1];
	}else{
		$(thisElement).innerHTML = textOptions[0];
	}
}

function toggleFilterbox() {
	if($('search-box-button')) {
		var buttonLabel = $('search-box-button').get('value');
		myLabel = ($('search-box-button').get('value') == 'Suchfilter anzeigen')?'Suchfilter verbergen':'Suchfilter anzeigen'
		$('search-box-button').set('value',myLabel);
	}
	toggleDisplay('filterbox', 'hidden2');
}

function toggleDisplay(thisElement,thisClass) {
	if($(thisElement)) {
		if($(thisElement).hasClass(thisClass))
			$(thisElement).removeClass(thisClass);
		else	$(thisElement).addClass(thisClass);
	}
}

function changeBoxDisplay(displayMode){
	if(displayMode == 'box' && !$('displayModeBox')){
		var myCSS = new Asset.css('/css/searchDisplayModeBox.css', {id: 'displayModeBox'});
		Cookie.write('displayMode', 'box', {domain: getDomain(window.location), path: '/'});
	}else if(displayMode != 'box' && $('displayModeBox')){
		$('displayModeBox').dispose();
		Cookie.dispose('displayMode', {domain: getDomain(window.location), path: '/'});
	}
}

function getDomain (thestring) {
	//simple function that matches the beginning of a URL
	//in a string and then returns the domain.
	var urlpattern = /(http|ftp|https):\/\/(.*?)(:.*?)?\/.*$/;
	urlpattern.exec(thestring);
	return RegExp.$2;
}