var round_bottom='<b class="round_white-w">' +
	'<b class="round_white-w5"></b>' +
	'<b class="round_white-w4"></b>' +
	'<b class="round_white-w3"></b>' +
	'<b class="round_white-w2"></b>' +
	'<b class="round_white-w1"></b>' +
	'</b>';

var language='en';
var languages=null;
var languages_other=null;
var language_select;
var language_select_from=null;
var language_select_to=null;
var language_select_direction=null;

var loading=true;
var status='Loading';
var ajax=true;

function dummy() {
	return false;
}

function word_focus() {
	document.getElementById('word').focus();
	document.getElementById('word').select();
}

function word_select_close() {
	document.getElementById('word_select').style.display='none';
	word_focus();
}

/*** language ***/
function language_set(newLanguages) {
	var isOther=newLanguages=='other';
	if(isOther) {
		if(languages_other==null) return;
		else newLanguages=languages_other;
	}
	
	var lang1=newLanguages.substring(0,newLanguages.indexOf('-'));
	var lang2=newLanguages.substring(newLanguages.indexOf('-')+1);
	
	var langs=document.getElementById('languages').getElementsByTagName('div');
	for(i=0; i<langs.length; i++) {
		if(langs[i].className=='active') {
			langs[i].className='';
			break;
		}
	}
	var set=document.getElementById('languages_'+newLanguages);
	if(!set || set==null) {
		languages_other=newLanguages;
		set=document.getElementById('languages_other');
		
		set.title=newLanguages;
		set.innerHTML='<img alt="'+lang1+'" src="/image/flag/'+lang1+'.gif"/><img alt="'+lang2+'" src="/image/flag/'+lang2+'.gif"/>';
	}
	
	languages=lang1+'-'+lang2;
	language_select_from_set(lang1);	
	language_select_to_set(lang2);	
	document.getElementById('dict.language').value=newLanguages;
	set.className='active';
	word_focus();
}

function language_default() {
	//get via cookie
	
	//if not exists - system language
	if(languages!=null) language_set(languages);
	else {
		if(language=='de') language_set('de-en');
		else language_set('en-de');
	}
	
	//direction
}

function language_select_from_open() {
	if(true) return;
	
	if(language_select=='from') {
		language_select_close();
		return;
	}
	document.getElementById('language_select').innerHTML=language_select_from+round_bottom;
	document.getElementById('language_select').style.display='inline';
	
	language_select='from';
}

function language_select_from_set(lang) {
	document.getElementById('language_from').innerHTML='<img src="/image/flag/'+lang+'.gif" alt="'+lang+'" title="'+lang+'"/>';
	language_select_close();
}

function language_select_to_open() {
	if(true) return;
	
	if(language_select=='to') {
		language_select_close();
		return;
	}
	
	if(language_select_to==null) document.getElementById('language_select').innerHTML='<div class="center">Loading...</div>'+round_bottom;
	else document.getElementById('language_select').innerHTML=language_select_to+round_bottom;
	document.getElementById('language_select').style.display='inline';

	language_select='to';
}

function language_select_to_set(lang) {
	document.getElementById('language_to').innerHTML='<img src="/image/flag/'+lang+'.gif" alt="'+lang+'" title="'+lang+'"/>';
	language_select_close();
}

function language_select_close() {
	document.getElementById('language_select').style.display='none';
	
	language_select=null;
}

function language_select_direction_set(direction) {
	if(direction=='to') {
		language_select_direction='to';
		document.getElementById('language_direction').innerHTML='<img src="/image/arrow_right.gif"/>';
	} else if(direction=='from') {
		language_select_direction='from';
		document.getElementById('language_direction').innerHTML='<img src="/image/arrow_left.gif"/>';
	} else {
		language_select_direction=null;
		document.getElementById('language_direction').innerHTML='<img src="/image/arrow_both.gif"/>';
	}
		
	document.getElementById('dict.direction').value=language_select_direction;
}

function language_select_direction_switch() {
	language_select_direction=document.getElementById('dict.direction').value;
	
	if(language_select_direction=='to') {
		language_select_direction='from';
		document.getElementById('language_direction').innerHTML='<img src="/image/arrow_left.gif"/>';
	} else if(language_select_direction=='from') {
		language_select_direction=null;
		document.getElementById('language_direction').innerHTML='<img src="/image/arrow_both.gif"/>';
	} else {
		language_select_direction='to';
		document.getElementById('language_direction').innerHTML='<img src="/image/arrow_right.gif"/>';
	}	

	document.getElementById('dict.direction').value=language_select_direction;
	word_focus();
}

/*** translate ***/
function translate(position) {
	if(!ajax) return true;
	
	var word=document.getElementById('word');
	var button=document.getElementById('button');
	
	if(word.length==0 || loading) return false;
	
	status_open();
	loading=true;
	word.disabled=true;
	button.disabled=true;
	
	var xhr=createXHR();
	if(xhr==null) return;

	//state
	xhr.onreadystatechange=function() {
		if(xhr.readyState==4) {
			if(xhr.status==200) {
				var content=document.getElementById('content');
				if(!content) return;
				content.innerHTML=xhr.responseText;
			} else {
				//error - load 'typical'
				var query='dict.language='+languages+'&dict.direction='+language_select_direction+'&dict.position='+position+'&dict.query='+escape(word.value)+'&dict.link='+document.getElementById('option.link').value+'&dict.mark='+document.getElementById('option.mark').value+'&dict.exact='+document.getElementById('option.exact').value;
				document.location.href='/?'+query;
			}
		
			button.disabled=false;
			word.disabled=false;
			loading=false;
			status_close();
			word_focus();
		}
	}
	
	var query='ajax=true&dict.language='+languages+'&dict.direction='+language_select_direction+'&dict.position='+position+'&dict.query='+escape(word.value)+'&dict.link='+document.getElementById('option.link').value+'&dict.mark='+document.getElementById('option.mark').value+'&dict.exact='+document.getElementById('option.exact').value;
	query+='&load='+Math.random();
	xhr.open('POST','/request');
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

	try {
		xhr.send(query);
	} catch(e) {
		//error - load 'typical'
		return true;
	}
		
	return false;
}

/*** load ***/
function load(url,param) {
	if(!ajax) return true;
	
	var word=document.getElementById('word');
	var button=document.getElementById('button');
	
	if(word.length==0 || loading) return false;
	
	status_open();
	loading=true;
	word.disabled=true;
	button.disabled=true;
	
	var xhr=createXHR();
	if(xhr==null) return;

	//state
	xhr.onreadystatechange=function() {
		if(xhr.readyState==4) {
			if(xhr.status==200) {
				var content=document.getElementById('content');
				if(!content) return;
				content.innerHTML=xhr.responseText;
			} else {
				//error - load 'typical'
				document.location.href='/'+url+(param ? '?'+param : '');
			}
		
			button.disabled=false;
			word.disabled=false;
			loading=false;
			status_close();
			word_focus();
		}
	}
	
	var query='ajax=true';
	if(param) query+='&'+param;
	query+='&load='+Math.random();
	xhr.open('POST','/'+url+'/request.jsp?'+query);	//???query???
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

	try {
		xhr.send(query);
	} catch(e) {
		//error - load 'typical'
		return true;
	}
		
	return false;
}

/*** statistic ***/
function statistic(position) {
	if(!ajax) return true;
	
	var xhr=createXHR();
	if(xhr==null) return;

	//state
	xhr.onreadystatechange=function() {
		if(xhr.readyState==4) {
			if(xhr.status==200) {
				var statistic=xhr.responseText;
				document.getElementById('information.user.request').innerHTML=statistic.substring(0,statistic.indexOf(':'));
				document.getElementById('information.user.today').innerHTML=statistic.substring(statistic.indexOf(':')+1,statistic.lastIndexOf(':'));
				document.getElementById('information.user.online').innerHTML=statistic.substring(statistic.lastIndexOf(':')+1);
				setTimeout('statistic()',10000);
			} else {
				//error - do nothing
				//alert('ERROR: '+xhr.status);
				return true;
			}
		}
	}
	
	var query='ajax=true&load='+Math.random();
	xhr.open('POST','/statistic');
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

	try {
		xhr.send(query);
	} catch(e) {
		//error - load 'typical'
		return true;
	}
		
	return false;
}

/*** status **/
function status_open() {
	loading=true;
	document.getElementById('status').innerHTML=status;
}

function status_close() {
	document.getElementById('status').innerHTML='&nbsp;';
	loading=false;
}

/*** ads ***/
/*
function ads() {
	var rnd=Math.random();
	rnd=rnd*10;
	rnd=Math.ceil(rnd);
	
	var id;
	if(rnd<5) id=1;
	else id=2;
	document.getElementById('header').innerHTML=document.getElementById('ads.'+id).innerHTML;
	setTimeout('ads()',1000);
}
*/
/*** vote ***/
var _voteURL='/vote';
var _voteText='Thank you!';
var _voteLanguage='de-en';
var _votePrefix='vote_';

var _menu='';

function vote_minus(id) {
	vote_send(id,'minus');
}

function vote_plus(id) {
	vote_send(id,'plus');
}

function vote_send(id, value) {
	if(!id) return;
	
	var xhr=createXHR();
	if(xhr==null) return;

	//state
	xhr.onreadystatechange=function() {
		if(xhr.readyState==4)
			if(xhr.status==200) {
				var voteId=document.getElementById(_votePrefix+id);
				if(!voteId) return;
				//voteId.style.backgroundImage='';
				voteId.innerHTML='<i class="small">'+_voteText+'</span>';
				//alert(xhr.responseText);
			} else {
				alert('Connection-Error\n'+xhr.error);
			}
	}
	
	var query='ajax=true&language='+_voteLanguage+'&id='+id+'&value='+value;
	query+='&load='+Math.random();
	xhr.open('POST',_voteURL);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

	try {
		xhr.send(query);
	} catch(e) {
		alert('Internal error:\n'+e);
	}
	
}