function search(value, time_frame, force, page_id)
{
	debug("search(): "+value+", "+time_frame+", before_input:"+before_input+", current_tf:"+current_time_frame+", current_page:"+current_page+", page_id:"+page_id);
	if(time_frame == '')
	{
		time_frame = current_time_frame;
	}
	if(force == true || before_input != value || current_time_frame != time_frame || current_page != 'search')
	{
		before_input = value;
		if(current_time_frame != time_frame)
		{
			toggle_timeframes(time_frame);
		}
		window.setTimeout('search_real("'+value+'",'+time_frame+','+force+','+page_id+')',500);
	}
    if(hs)
    {
        hs.close();
    }
}
function search_real(value, time_frame, force, page_id)
{
	debug("search_real(): "+value+", "+time_frame+",search_stack:"+search_stack);
	if((force && search_stack == 0) || current_page != 'search' || value == search_input.value && (value != current_search || time_frame != current_time_frame))
	{
		search_stack++;
		current_page = 'search';
		change_title(current_page);
		search_input.className = 'loading';
		current_search = value;
		if(time_frame != null)
		{ 
			current_time_frame = time_frame;
		}
		
		if(page_id != null)
		{
			current_page_id = page_id;
		}
		else
		{
			current_page_id = 1;
		}
		activity_on();
		$('results').innerHTML = '';
		send_request(value,time_frame,page_id,'');
	}
	else
	{
		debug("Keine Suche, stack: "+search_stack);
		if(search_stack < 1)
		{
			search_stack = 0;
			search_input.className = '';
		}
	}
	search_stack--;
}
function change_background(value)
{
	if(value != "")
	{
		search_input.className = 'loading';
	}
	else
	{
		search_input.className = '';
	}
}

function success_handler(t)
{
	response_parsed = t.responseText.replace(/\n/g, "\\n").replace(/\r/g, "\\r");
	var response = eval('('+response_parsed+')');
	var results = document.getElementById('results');
	var search_query = document.getElementById('search_query');
	var search_query_outer = document.getElementById('search_query_outer');
	var search_query_example = document.getElementById('search_query_example');
	if(response.search != '' && first_search == false && response.num_results > 0)
	{
		search_query.innerHTML = response.search;
		Element.hide(search_query_example);
		search_query_outer.style.display = 'inline';
	}
	else
	{
		Element.hide(search_query_outer);
		search_query_example.style.display = 'inline';
	}
	Element.hide('invite-email');
	Element.hide('send-email');
	Element.hide('invite-sms');
	debug("query: "+response.query);
	update_results_num(response.num_results);
	debug("success_handler(): hier");
	results.innerHTML = response.html; 
	debug('success_handler(): className = ""');
	activity_off();
	first_search = false;
}

function send_request(search, time_frame, page_id, sort)
{
	request = 's='+encodeURI(search)+'&tf='+time_frame+'&pageID='+page_id+'&sort='+ sort+'&'+sname+'='+sid;
	debug("send_request(): " + request);
	new Ajax.Request('/'+search_action+'.php?'+request, {onSuccess:success_handler});
}

function toggle_timeframes(time_frame)
{
	for(i=1; i < 6; i++)
	{
		var current_element = document.getElementById('timeframe_'+i);
		if(current_element != null)
		{
			document.getElementById('results_count_'+i).innerHTML = '0';
			if(i == time_frame)
			{
				current_element.className = "selected";
				active_timeframe = i;
			}
			else
			{
				Element.hide('results_count_outer_'+i);
				current_element.className = "";
			}
		}
	}
}

function update_results_num(num)
{
	for(i=1; i < 6; i++)
	{
		if(i == current_time_frame)
		{
			if($('results_count_'+i) != null)
			{
				$('results_count_'+i).innerHTML = num;
				//$('results_count_outer_'+i).style.display = 'inline';
			}
		}
		else
		{
			if($('results_count_'+i) != null)
			{
				$('results_count_'+i).innerHTML = '0';
			}
		}
	}
}

function send_email()
{
	var input_name = $('send_email_name');
	var input_email = $('send_email_email');
	var email_regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z]{2,4})+$/;
	if(input_name.value == input_name.title || input_email.value == input_email.title)
	{
		return false;
	}
	
	if(input_name.value != "" && email_regex.test(input_email.value))
	{
		request = '/send_email.php?s='+encodeURI(search_input.value)+'&tf='+current_time_frame+'&name='+encodeURI(input_name.value)+'&email='+encodeURI(input_email.value)+'&'+sname+'='+sid;
		debug("send_email(): " + request);
		new Ajax.Request(request);
		Element.hide('send-email-form');
		Element.show('send-email-thanks');
		window.setTimeout('	Element.hide(\'send-email\');' +
							'Element.hide(\'send-email-thanks\');' +
							'Element.show(\'send-email-form\')'
						,2000);
		current_name = input_name.value;
		current_email = input_email.value;
		return true;
	}
	else
	{
		return false;
	}
}

function send_item_email()
{
	var input_name = $('invite_input_name');
	var input_email = $('invite_input_email');
	var input_id = $('invite-email-id');
	var email_regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z]{2,4})+$/;
	if(input_name.value == input_name.title || input_email.value == input_email.title)
	{
		return false;
	}
	
	if(input_name.value != "")
	{
		request = '/send_item_email.php?id='+input_id.value+'&name='+encodeURI(input_name.value)+'&email='+encodeURI(input_email.value)+'&'+sname+'='+sid+'&date='+encodeURI($('date-'+input_id.value).value)+'&time='+encodeURI($('time-'+input_id.value).value);
		debug("send_item_email(): " + request);
		new Ajax.Request(request);
		Element.hide('invite-email-form');
		Element.show('invite-email-thanks');
		window.setTimeout('	Element.hide(\'invite-email\');' +
							'Element.hide(\'invite-email-thanks\');' +
							'Element.show(\'invite-email-form\')'
						,1500);
		current_name = input_name.value;
		current_email = input_email.value;
		return true;
	}
	else
	{
		return false;
	}
}

function send_item_sms()
{
	var input_name = $('invite_sms_name');
	var input_phone = $('invite_sms_phone');
	var input_id = $('invite_sms_id');
	var phone_regex = /^([0-9 \.\-\/]){11,20}$/;
	if(input_name.value == input_name.title || input_phone.value == input_phone.title)
	{
		return false;
	}
	
	if(input_name.value != "" && phone_regex.test(input_phone.value))
	{
		request = '/send_sms.php?id='+input_id.value+'&name='+encodeURI(input_name.value)+'&phone='+encodeURI(input_phone.value)+'&'+sname+'='+sid+'&date='+encodeURI($('date-'+input_id.value).value)+'&time='+encodeURI($('time-'+input_id.value).value);
		debug("send_item_sms(): " + request);
		new Ajax.Request(request);
		Element.hide('invite-sms-form');
		Element.show('invite-sms-thanks');
		window.setTimeout('	Element.hide(\'invite-sms\');' +
							'Element.hide(\'invite-sms-thanks\');' +
							'Element.show(\'invite-sms-form\')'
						,1500);
		current_name = input_name.value;
		current_phone = input_phone.value;
		return true;
	}
	else
	{
		return false;
	}
}

function list_entries_hide(count)
{
	Effect.BlindUp('invite-email',{duration:0.1});
	Effect.BlindUp('invite-sms',{duration:0.1});
	Element.hide('send-email');
	for(i = 0; i < count; i++)
	{
		if(document.getElementById('listdo-'+i).style.display != 'none')
		{
			Effect.BlindUp('listdo-'+i,{duration:0.3});
		}
	}
}

function list_entries_toggle(count)
{
	for(i = 0; i < count; i++)
	{
		Effect.toggle('listdo-'+i,'blind',{duration:0.2});
	}
}

function change_page(page, param)
{
	debug("change_page: page:"+page+", param:"+param+", current_page:"+current_page);
	if(current_page == 'search' || current_page == 'search2')
	{
		data = new Object();
		data['page'] = current_page;
		data['time_frame'] = current_time_frame;
		data['page_id'] = current_page_id;
		data['search'] = search_input.value;
		dhtmlHistory.add(current_page+"/"+Math.floor(Math.random()*10000),data);
		debug("change_page: tf:"+current_time_frame+", cpid:"+current_page_id);
	}
	if(page == 'events')
	{
		new Ajax.Updater('results','/events.php?id='+param,{evalScripts:true, onSuccess:activity_off});
		dhtmlHistory.add("events/"+param,"");
	}
	else
	{
		dhtmlHistory.add("page/"+page,"");
		new Ajax.Updater('results','/'+page+'.php',{evalScripts:true, onSuccess:activity_off});
	}
	Element.hide('invite-email');
	Element.hide('invite-sms');
	Element.hide('send-email');
	new Effect.ScrollTo("topsite",{duration:0});
	change_title(page);
	current_page = page;
}

function change_title(page)
{
	if(page == 'faq')
	{
		document.title = 'Wobot - Wo gehst Du hin? / FAQ';
	}
	else if(page == 'sms')
	{
		document.title = 'Wobot - Wo gehst Du hin? / SMS Services';
	}
	else if(page == 'imprint')
	{
		document.title = 'Wobot - Wo gehst Du hin? / Impressum';
	}
	else if(page == 'agb')
	{
		document.title = 'Wobot - Wo gehst Du hin? / Nutzungsbedingungen';
	}
	else if(page == 'event')
	{
		document.title = 'Wobot - Wo gehst Du hin? / Veranstaltungen eintragen';
	}
	else if(page == 'promo')
	{
		document.title = 'Wobot - Wo gehst Du hin? / Gewinnspiel';
	}
	else
	{
		document.title = 'Wobot - Wo gehst Du hin? Alle Veranstaltungen in Deiner Region. ';
	}
}

function debug(s)
{
	if(status != null)
	{
		status.innerHTML = (pad(debug_stack++,3))+":"+s + "<br />"+status.innerHTML;
	}
}

function pad(number,length) {
     var str = '' + number;
     while (str.length < length)
         str = '0'+str;
     return str;
} 

function toggle_invite_email(event, id)
{
	var offset = 70; // left offset
	var invite_email = $('invite-email');
	Element.hide('invite-sms');
	Element.hide('send-email');
	if(invite_email.style.display == 'none')
	{
		$('invite_input_name').value = current_name;
		$('invite_input_email').value = current_email;
		$('invite-email-id').value = id;
		invite_email.style.left = Event.pointerX(event)-offset+"px";
		invite_email.style.top = Event.pointerY(event)+"px";
		window.setTimeout("$('invite_input_email').focus();",300);
	}
	Effect.toggle('invite-email','blind',{duration:0.2})
}

function toggle_invite_sms(event, id)
{
	var offset = 70; // left offset
	var invite_sms = $('invite-sms');
	Element.hide('invite-email');
	Element.hide('send-email');
	if(invite_sms.style.display == 'none')
	{
		$('invite_sms_name').value = current_name;
		$('invite_sms_phone').value = current_phone;
		$('invite_sms_id').value = id;
		invite_sms.style.left = Event.pointerX(event)-offset+"px";
		invite_sms.style.top = Event.pointerY(event)+"px";
		window.setTimeout("$('invite_sms_phone').focus();",300);
	}
	Effect.toggle('invite-sms','blind',{duration:0.2})
}

function toggle_email(event)
{
	var offset = 70; // left offset
	var send_email = $('send-email');
	Element.hide('invite-email');
	Element.hide('invite-sms');
	if(send_email.style.display == 'none')
	{
		$('send_email_name').value = current_name;
		$('send_email_email').value = current_email;
		send_email.style.left = Event.pointerX(event)-offset+"px";
		send_email.style.top = Event.pointerY(event)+"px";
		window.setTimeout("$('send_email_email').focus();",300);
	}
	Effect.toggle('send-email','blind',{duration:0.2})
}

function search_page(search,time_frame,page_id,sort)
{
	if(page_id != null)
	{
		current_page_id = page_id;
	}
	else
	{
		current_page_id = 1;
	}
	current_page = "search";
	new Effect.ScrollTo('topsite',{duration:0});
	$('results').innerHTML = ''; 
	activity_on();
	
	window.setTimeout('send_request(\''+search+'\','+time_frame+','+page_id+',\''+sort+'\')',160);
}

function history_initialize()
{
    dhtmlHistory.initialize(  );
    dhtmlHistory.addListener(history_change);
    if (dhtmlHistory.isFirstLoad(  )) {
		history_change(dhtmlHistory.getCurrentLocation());
    }
}

function history_change(newLocation,
                       historyData) 
{
	debug("history_change(): "+newLocation);
	if(newLocation.indexOf("events/") == 0)
	{
		change_page("events",newLocation.substr(7,newLocation.length-7));
		current_page = "events";
	}
	else if(newLocation.indexOf("page/") == 0)
	{
		page = newLocation.substr(5,newLocation.length-5);
		change_page(page,null);
		current_page = page;
	}
	else if(newLocation.indexOf("search/") == 0)
	{
		var tf = historyData['time_frame'];
		var p = historyData['page_id'];
		var s = historyData['search'];
		debug("history_change: s:"+s+",p:"+p+",tf:"+tf);
		search_input.value = s;
		search_page(s,tf,p,null);
	}
	else if(newLocation.indexOf("search2/") == 0)
	{
		var tf = historyData['time_frame'];
		var p = historyData['page_id'];
		var s = historyData['search'];
		debug("history_change: s:"+s+",p:"+p+",tf:"+tf);
		search_input.value = s;
		search_page(s,tf,p,null);
	}
}

function log_search()
{
	if(log_search_input != search_input.value)
	{
		urchinTracker('/search/input/'+search_input.value);
		log_search_input = search_input.value;
	}
}

function activity_on()
{
	Element.show('activity-indicator');
	search_input.className = 'loading';
}
function activity_off()
{
	Element.hide('activity-indicator');
	search_input.className = '';
}