var left_fixed_width=235;
var right_fixed_width=125;
var top_fixed_height=95;
var bottom_fixed_height=29;
var scroll_fixed_width=18;
var scroll_fixed_height=18;
var preferred_cell_width=130;
var preferred_cell_height=166;
var puzzles_count=0;
var topics_count=0;
var puzzles_page=1;
var puzzles_per_page=1000;
var puzzles_offset=0;
var puzzles_limit=0;
var puzzles_first=0;
var nav_bar_max_count=14;
var nav_bar_first_page=1;
var page_numb=0;
var orderby='1';

var main_cell;
var main_container,main_container_width,main_container_height;
var main_content,main_content_width,main_content_height;
var main_visible_width,main_visible_height;
var sub_menu=null;
var intro=null;
var query_bar=null;
var nav_bar=null;
var main_table=null;
var page_content=null;
var main_table_rows,main_table_cols;
var cell_width,cell_height;
var left_cell;

var loading_timer=0;

var scores_puzzle,scores_pieces;
var players_rank,players_pieces;

var selected_puzzles;

var images_source,images_preobj,puzzles_infos,topics_infos,cell_filled;;

var xml_queued=new Array();
var xml_timer=0;

var images_queued;

var isOpera=window.opera && document.getElementById;

var timer_id;

var config=new Array('30','40','60','90','120','150','180','240','300','400','600','1008');

function main_empty_content(){
	var i,node;
	main_content=document.getElementById('main_content');
	i=0;
	while(i<main_content.childNodes.length){
		node=main_content.childNodes[i];
		if(node!=sub_menu){
			main_content.removeChild(node);
		}else{
			i++;
		}
	}
}

function main_fill_content(){
	var player=puzzles_get_player_name();
	puzzles_limit=Math.ceil(main_visible_height/cell_height)*main_table_cols;
	images_source=new Array();
	images_preobj=new Array();
	puzzles_infos=new Array();
	images_queued=new Array();
	puzzles_offset=(puzzles_page-1)*puzzles_per_page;
	main_show_loading(0);
	ajax_send('GET','inc/service.php','lang='+lang+'&player='+escape(player)+'&partner='+partner+'&orderby='+orderby+'&query='+escape(query)+'&qmode='+qmode+'&service=fill_content&puzzles_first=0&puzzles_offset='+puzzles_offset+'&puzzles_limit='+puzzles_per_page+'&screen_width='+screen.width+'&screen_height='+screen.height+'&screen_avail_width='+screen.availWidth+'&screen_avail_height='+screen.availHeight+'&body_client_width='+main_get_client_width()+'&body_client_height='+main_get_client_height());
}

function main_fill_page(){
	var query='lang='+lang+'&service=fill_page&tab_id='+tab_id+'&sub_id='+sub_id+'&relative='+relative+'&anchor='+anchor;
	ajax_send('GET','inc/service.php',query);
}

function main_get_topics(){
	main_show_loading(0);
	var query='lang='+lang+'&service=get_topics';
	ajax_send('GET','inc/service.php',query);
}

function main_get_details(){
	ajax_send('GET','inc/service.php','lang='+lang+'&service=get_details&puzz_id='+selected_puzzle);
	return false;
}

function main_get_inside_page(page){
	ajax_send('GET','inc/service.php','lang='+lang+'&service=inside_page&page='+page);
	return false;
}

function main_get_scores_page(score_puzzle){
	ajax_send('GET','inc/service.php','lang='+lang+'&service=inside_page&page=scores&score_puzzle='+score_puzzle);
	return false;
}

function main_get_picture_page(image_filename,puzzle_title,image_width,image_height){
	ajax_send('GET','inc/service.php','lang='+lang+'&service=inside_page&page=picture&image_filename='+image_filename+'&puzzle_title='+puzzle_title+'&image_width='+image_width+'&image_height='+image_height);
	return false;
}

function main_get_client_width(){
	return document.body.clientWidth>screen.availWidth ? screen.availWidth : document.body.clientWidth;
}

function main_get_client_height(){
	return document.body.clientHeight>screen.availHeight ? screen.availHeight : document.body.clientHeight;
}

function main_get_dimensions(){
	main_cell=document.getElementById('main_cell');
	main_container=document.getElementById('main_container');
	left_cell=document.getElementById('left_cell');
	var ads_cell=document.getElementById('ads_cell');
	main_container_width=main_get_client_width()-left_fixed_width-right_fixed_width;
	main_container_height=main_get_client_height()-top_fixed_height-bottom_fixed_height;
	main_content_width=main_container_width-scroll_fixed_width;
	ads_cell.style.width='130px';
	ads_cell.style.height=main_container_height;
	main_content_height=main_container_height;
	if(isOpera){
		main_content_height-=scroll_fixed_height;
	}
	main_visible_width=main_content_width;
	main_visible_height=main_content_height;
	main_container.style.width=main_container_width+'px';
	main_container.style.height=main_container_height+'px';
	main_content=document.getElementById('main_content');
	main_content.style.width=main_content_width+'px';
	main_content.style.height=main_content_height+'px';
	main_table_cols=Math.floor(main_visible_width/preferred_cell_width);
	main_table_rows=Math.ceil(puzzles_per_page/main_table_cols);
	cell_width=Math.floor(main_visible_width/main_table_cols);
	//cell_height=Math.floor(main_visible_height/Math.floor(main_visible_height/preferred_cell_height));
	cell_height=preferred_cell_height;
	nav_bar_max_count=Math.floor((main_content_width-260)/26);
}

function main_resize_content(){
	
	var i,j;
	var row_index,col_index;
	var row,cell;

	cell_filled=new Array();
	
	main_get_dimensions();

	if((tab_id==0)&&(sub_id==1)){
		main_scroll_content();
	}
	
	if((tab_id==0)&&(sub_id!=0)&&(sub_id!=2)){
		return false;
	}

	if((tab_id!=0)||(sub_id==1)){
		return false;
	}

	query_bar_generate();
	
	nav_bar_generate();
	
	if(main_table==null){
		main_table=document.createElement('TABLE');
		main_table.cellPadding='0px';
		main_table.cellSpacing='0px';
	}

	if(main_content.childNodes.length<5){
		main_content.appendChild(main_table);
	}
	
	i=0;
	j=puzzles_offset;
	row_index=0;
	main_content_height=0;
	while((row_index<main_table_rows)&&(j<puzzles_count)){
		if(main_table.rows.length<=row_index){
			row=main_table.insertRow(main_table.rows.length);
		}else{
			row=main_table.rows[row_index];
		}
		row.style.verticalAlign='top';
		main_content_height+=cell_height;
		col_index=0;
		while(col_index<main_table_cols){
			if(row.cells.length<=col_index){
				cell=row.insertCell(row.cells.length);
			}else{
				cell=row.cells[col_index];
			}
			cell.style.width=cell_width;
			cell.style.height=cell_height;
			cell.className='small_cell';
			cell.id='c_'+i;
			cell.onmousedown = function(){
				change_selection(this.id);
				return false;
			};
			cell.innerHTML='';
			cell_filled[i]=false;
			i++;
			j++;
			col_index++;
		}
		while(row.cells.length>main_table_cols){
			row.deleteCell(main_table_cols);
		}
		row_index++;
	}
	while(main_table.rows.length>row_index){
		main_table.deleteRow(row_index);
	}
	
	main_content.style.height=main_content_height+'px';
	//puzzles_limit=Math.floor(main_visible_height/preferred_cell_height)*Math.floor(main_visible_width/preferred_cell_width);
	main_content.scrollTop='0px';
	main_scroll_content();
	return false;
}

function main_scroll_content(){
	var html,i,j,results,details,flist
	var pieces,posees,tempsj,img,w,h;
	var scroll_top;
	
	if((tab_id==0)&&(sub_id==1)){
		//topics
		
		scroll_top=main_container.scrollTop-80;
		if(scroll_top<0) scroll_top=0;
		first_row=Math.floor(scroll_top/188);
		
		scroll_down=main_container.scrollTop+main_visible_height-80;
		if(scroll_down<0) scroll_down=0;
		last_row=Math.floor(scroll_down/188);
		
		cols_count=Math.floor((main_visible_width-32)/188);
		
		for(row=last_row;row>=first_row;row--){
			for(col=(cols_count-1);col>=0;col--){
				i=row*cols_count+col;
				if(i<topics_count && !cell_filled[i]){
					cell_filled[i]=true;
					images_source[i]='/jpuzzles/'+trans['topics.dir']+'/'+trans['topics.thumbnails_dir']+'/'+topics_infos[i]['session']+'.jpg';
					images_queued.unshift(i);
				}
			}
		}
		images_queued_check();
		return false;
	}
	
	if((tab_id!=0)||(sub_id==1)){
		return false;
	}
	scroll_top=main_container.scrollTop-120;
	if(scroll_top<0){
		scroll_top=0;
	}
	puzzles_first=Math.floor(scroll_top/cell_height)*main_table_cols;
	puzzles_limit=(1+Math.ceil(main_visible_height/cell_height))*main_table_cols;
	if((puzzles_first+puzzles_limit)>puzzles_per_page){
		puzzles_limit=puzzles_per_page-puzzles_first;
	}
	if((puzzles_offset+puzzles_first+puzzles_limit)>puzzles_count){
		puzzles_limit=puzzles_count-puzzles_offset-puzzles_first;
	}
	i=(puzzles_first+puzzles_limit-1);
	while(i>=puzzles_first){
		if(!cell_filled[i]){
			results=puzzles_infos[i]['r'].split(';');
			details=new Array();
			for(j=0;j<results.length;j++){
				flist=results[j].split(',');
				pieces=flist[0];
				posees=flist[1];
				tempsj=flist[2];
				details[pieces]=new Array(posees,tempsj);
			}
			html='<table cellpadding="0" cellspacing="0" border="0">';
			html+='<tr><td class="small_title">'+unescape(puzzles_infos[i]['t'])+'</td></tr>';
			html+='<tr valign="middle"><td class="small_preview"><img id="p'+i+'" src="img/s.gif" class="loading_img" width="'+puzzles_infos[i]['w']+'" height="'+puzzles_infos[i]['h']+'" alt="'+unescape(puzzles_infos[i]['t'])+'" title="'+unescape(puzzles_infos[i]['t'])+'" /></td></tr>';
			html+='<tr valign="bottom" height="16"><td><table class="tiny_result_table"><tr class="tiny_result_row" valign="bottom">';
			w=6;
			if(puzzles_infos[i]['v']=='3'){
				if(details.length>0){
					for(var pieces in details){
						if(typeof(details[pieces])!='undefined'){
							posees=details[pieces][0];
							tempsj=details[pieces][1];
							h=Math.ceil(6*posees/pieces);
							img='w';
							title=posees+' '+trans['puzzles.pieces']+' '+trans['puzzles.placed']+' '+trans['puzzles.on']+' '+pieces+' '+trans['puzzles.in']+' '+tempsj;
						}else{
							h=6;
							img='s';
							title=pieces+' '+trans['puzzles.pieces'];
						}
						html+='<td class="tiny_result_cell"><a href="#" onMouseOver="top.status=this.title" onClick="return false;" title="'+title+'"><img src="img/'+img+'.gif" width="'+w+'" height="'+h+'" border="0" /></a></td>';
					}
				}
			}else{
				for(j=0;j<config.length;j++){
					pieces=config[j];
					if(typeof(details[pieces])!='undefined'){
						posees=details[pieces][0];
						tempsj=details[pieces][1];
						h=Math.ceil(6*posees/pieces);
						img='w';
						title=posees+' '+trans['puzzles.pieces']+' '+trans['puzzles.placed']+' '+trans['puzzles.on']+' '+pieces+' '+trans['puzzles.in']+' '+tempsj;
					}else{
						h=6;
						img='s';
						title=pieces+' '+trans['puzzles.pieces'];
					}
					html+='<td class="tiny_result_cell"><a href="#" onMouseOver="top.status=this.title" onClick="return false;" title="'+title+'"><img src="img/'+img+'.gif" width="'+w+'" height="'+h+'" border="0" /></a></td>';
				}
			}
			html+='<td><img src="img/s.gif" width="1" height="6" border="0" /></td>';
			html+='</tr></table></td></tr>';
			html+='</table>';
			document.getElementById('c_'+i).innerHTML=html;
			
			cell_filled[i]=true;
			images_source[i]='/jpuzzles/reductions/'+puzzles_infos[i]['f']+'.jpg';
			images_queued.unshift(i);
		}
		i--;
	}	
	images_queued_check();
	return false;
}

function main_receive_data(data){
	
	var i,j,items;

	if(typeof(data['service'])=='undefined'){
		//alert('Unable to process with response : '+data['response']);
		main_hide_loading();
		return false;
	}
	
	if(data['service']=='fill_content'){
		
		if(track_init!=1){
			pageTracker._trackPageview(main_get_track_link(''));
		}		
		
		puzzles_count=data['puzzles_count'];
		
		i=data['puzzles_first'];
		
		items=data['raw'].split('|');
		
		j=0;
		
		while(j<items.length){
			puzzles_infos[i]=new Array();
			puzzles_infos[i]['i']=items[j];
			puzzles_infos[i]['t']=items[j+1];
			puzzles_infos[i]['f']=items[j+2];
			puzzles_infos[i]['w']=items[j+3];
			puzzles_infos[i]['h']=items[j+4];
			puzzles_infos[i]['r']=items[j+5];	//results
			puzzles_infos[i]['v']=items[j+6];	//version
			i++;
			j+=7;
		}
		
		sub_menu_generate();
		
		main_add_intro(unescape(data['intro']));
		
		main_hide_loading();

		main_resize_content();
		
		main_container.scrollTop='0px';

	}else if(data['service']=='get_details'){
		
		if(partner!='@'){
			disc_content=(parseInt(data['votes'])>0 ? trans['puzzles.votes']+' : '+data['votes']+' - ' : '')+'<a href="'+main_get_link('vote')+'" onClick="this.blur();return  main_get_inside_page(\'vote\'); return false;" class="discret_link">'+trans['puzzles.dovote']+'</a>';
		}else{
			disc_content=trans['puzzles.proposed_by']+' : ';
			if(typeof(data['user_email'])!='undefined'){
				disc_content+='<a class="discret_link" href="mailto:'+data['user_email']+'" style="line-height: 18px;">'+data['user_name']+'</a>';
			}else{
				disc_content+=data['user_name'];
			}
		}
		document.getElementById('votes_zone').innerHTML='<p class="disc_area" style="height: 20px;">'+disc_content+'</p>';
		title_zone_content='<p class="large_title"';
		title_zone_content+='>'+unescape(data['title'])+'</p>';
		document.getElementById('title_zone').innerHTML=title_zone_content;
		document.getElementById('image_zone').innerHTML='<a class="default_link" href="/jpuzzles/'+trans['puzzles.play.prefix']+'-'+selected_puzzle+'.html" onClick="this.blur(); return puzzles_play('+selected_puzzle+');return false;" title="'+unescape(data['title'])+'" target="_blank"><img src="/jpuzzles/'+thumbnails_dir+'/'+data['filename']+'.jpg" width="'+data['prv_w']+'" height="'+data['prv_h']+'" border="0" alt="'+unescape(data['title'])+'" /></a>';
		disc_content='<p class="default_text" style="padding: 0; margin: 3px;">';
		disc_content+='<a href="'+main_get_link('scores')+'" onClick="this.blur(); return main_get_scores_page('+selected_puzzle+'); return false;" class="discret_link">'+trans['puzzles.scores']+'</a><br />';
		disc_content+='<a href="'+main_get_link('picture')+'" onClick="this.blur(); return main_get_picture_page(\''+data['filename']+'\',\''+data['title']+'\','+data['img_w']+','+data['img_h']+'); return false;" class="discret_link">'+trans['puzzles.picture']+'</a><br />';
		if(typeof(data['topic_url'])!='undefined'){
			if((data['theme_session']<'080310')||(data['theme_session']=='091225')){
				disc_content+='<a href="'+data['topic_url']+'" onClick="this.blur();return puzzles_topic(this.href,'+data['topic_w']+','+data['topic_h']+');return false;" target="_blank" class="discret_link">'+trans['puzzles.topic']+'</a><br />';
			}else{
				disc_content+='<a href="'+data['topic_url']+'" onClick="this.blur();theme_session=\''+data['theme_session']+'\';return main_get_inside_page(\'theme\');return false;" target="_blank" class="discret_link">'+trans['puzzles.topic']+'</a><br />';
			}
		}
		if(typeof(data['credit'])!='undefined'){
			disc_content+='<a href="'+unescape(data['credit'])+'" target="_blank" class="discret_link">'+trans['puzzles.credit']+'</a><br />';
		}
		disc_content+='<a href="#" onClick="this.blur();return main_get_postcards('+selected_puzzle+',\'\',\'\',\'\',\'\');return false;" class="discret_link">'+trans['postcards.single']+'</a>';
		disc_content+='</p>';
		document.getElementById('links_zone').innerHTML=disc_content;
		
	}else if(data['service']=='get_topics'){
		
		if(track_init!=1){
			pageTracker._trackPageview(main_get_track_link(''));
		}		
		
		images_preobj=new Array();
		cell_filled=new Array();
		topics_infos=new Array();
		images_queued=new Array();
		images_source=new Array();

		topics_count=parseInt(data['topics_count']);
		
		items=data['raw'].split('|');
		
		html_content='<div style="padding: 8px; padding-right: 24px;" align="left"><p class="default_text">'+topics_count+' '+trans['topics.listing']+' :</p>\n';
		
		i=0;
		j=0;
		
		while(j<items.length && i<topics_count){
			cell_filled[i]=false;
			topics_infos[i]=new Array();
			topics_infos[i]['session']=items[j];
			topics_infos[i]['title']=unescape(items[j+1]);
			topics_infos[i]['width']=items[j+2];
			topics_infos[i]['height']=items[j+3];
			topics_infos[i]['url']=get_topic_url(topics_infos[i]['session']);
			html_content+='<span style="float: left;"><table cellpadding="0" cellspacing="0" border="0"><tr valign="middle"><td align="center" width="180" height="40"><p class="default_text">'+topics_infos[i]['title']+'</p></td></tr><tr valign="middle"><td width="180" height="124" align="center"><a title="'+topics_infos[i]['title']+'" href="'+topics_infos[i]['url']+'" onClick="this.blur();';
			if((topics_infos[i]['session']<'080310')||(topics_infos[i]['session']=='091225')){
				html_content+='return puzzles_topic(this.href,'+topics_infos[i]['width']+','+topics_infos[i]['height']+');';
			}else{
				html_content+='theme_session=\''+topics_infos[i]['session']+'\';return main_get_inside_page(\'theme\');';
			}
			html_content+='return false;"><img alt="'+topics_infos[i]['title']+'" id="p'+i+'" src="img/s.gif" width="170" height="122" border="0" class="loading_img" /></td></tr><tr valign="middle"><td align="center" width="180" height="24"><p class="default_text"></p></td></tr></table></span>\n';
			i++;
			j+=4;
		}
		
		html_content+='</div>';

		sub_menu_generate();
		
		main_add_intro(unescape(data['intro']));
		
		if(page_content==null){
			page_content=document.createElement('DIV');
			page_content.style.padding='0px';
			page_content.style.margin='0px';
		}
		
		page_content.innerHTML=html_content;
		
		if(main_content.childNodes.length<4){
			main_content.appendChild(page_content);
		}
		
		main_hide_loading();
		
		main_resize_content();
		
		main_container.scrollTop='0px';

	}else if(data['service']=='get_postcards'){
		
		if(track_init!=1){
			pageTracker._trackPageview(main_get_track_link(data['page']));
		}		
		
		change_tab(0);
		
		sub_id=4;
		
		main_empty_content();

		main_get_dimensions();
		
		sub_menu_generate();
		
		main_add_intro(unescape(data['intro']));
		
		if(page_content==null){
			page_content=document.createElement('DIV');
			page_content.style.padding='0px';
			page_content.style.margin='0px';
		}
		
		page_content.innerHTML=in_convert(unescape(data['content']));
		
		if(main_content.childNodes.length<4){
			main_content.appendChild(page_content);
		}
		
		main_hide_loading();

		main_container.scrollTop='0px';

	}else if(data['service']=='postcard_create'){
		main_hide_loading();
		if(typeof(data['alert'])!='undefined'){
			alert(unescape(data['alert']));
		}else{
			if(typeof(data['puzz_id'])!='undefined'){
				document.getElementById('puzz_id').value=data['puzz_id'];
			}
			if(typeof(data['postcard_id'])!='undefined'){
				document.getElementById('postcard_id').value=data['postcard_id'];
			}
			if(typeof(data['postcard_key'])!='undefined'){
				document.getElementById('postcard_key').value=data['postcard_key'];
			}
			if(data['send_it']==1){
				postcard_id=data['postcard_id'];
				postcard_key=data['postcard_key'];
				postcard_auth=data['postcard_auth'];
				main_get_postcards(0,'','','','');
			}else{
				main_postcard_view(data['postcard_id'],'recto',data['postcard_key'],data['postcard_auth'])
			}
		}
		
	}else if(data['service']=='fill_page'){
		
		if(track_init!=1){
			pageTracker._trackPageview(main_get_track_link(data['page']));
		}		
		
		sub_menu_generate();
		
		main_add_intro(unescape(data['intro']));
		
		if(page_content==null){
			page_content=document.createElement('DIV');
			page_content.style.padding='0px';
			page_content.style.margin='0px';
		}
		
		page_content.innerHTML=unescape(data['content']);
		
		if(main_content.childNodes.length<4){
			main_content.appendChild(page_content);
		}
		
		main_hide_loading();

		main_container.scrollTop='0px';

	}else if(data['service']=='inside_page'){

		if(track_init!=1){
			pageTracker._trackPageview(main_get_track_link(data['page']));
		}		
		
		main_show_inside_page(data['page'],unescape(data['content']),data['inside_page_width'],data['inside_page_height'],data['inside_page_scroll']);
		main_hide_loading();
		if(data['alert']!=''){
			alert(unescape(data['alert']));
		}
	}else if(data['service']=='postcard_view'){
		if(typeof(data['alert'])!='undefined'){
			alert(unescape(data['alert']));
		}else{
			main_hide_loading();
			main_show_inside_page('postcard_view',in_convert(unescape(data['content'])),data['inside_page_width'],data['inside_page_height'],data['inside_page_scroll']);
		}
	}else if(data['service']=='activity'){
		document.getElementById('activity_image').src='img/activity/'+data['image_filename'];	
		document.getElementById('activity_map').innerHTML=unescape(data['image_map'])
		document.getElementById('activity_played_puzzles').innerHTML=unescape(data['played_puzzles'])
		document.getElementById('activity_finished_puzzles').innerHTML=unescape(data['finished_puzzles'])
	}else if(data['service']=='scores'){
		document.getElementById('scores_detail').innerHTML=unescape(data['content']);	
		main_hide_loading();
	}else if(data['service']=='players'){
		document.getElementById('players_detail').innerHTML=unescape(data['content']);	
		document.getElementById('players_ranked').innerHTML=unescape(data['players']);	
		main_hide_loading();
		players_page=parseInt(data['players_page']);
	}else if(data['service']=='theme'){
		document.getElementById('theme_detail').innerHTML=unescape(data['content']);
		if(data['bg_image_list']!=''){
			theme_bg_preload_image_list(data['bg_base_href'],data['bg_image_list']);
		}
	}else if(data['service']=='vote'){
		document.getElementById('vote_detail').innerHTML=unescape(data['content']);	
	}else if(data['service']=='newsletter_info'){
		if(track_init!=1){
			pageTracker._trackPageview(main_get_track_link(data['service']));
		}		
		
		main_show_inside_page(data['service'],unescape(data['content']),data['inside_page_width'],data['inside_page_height'],data['inside_page_scroll']);
		main_hide_loading();
		if(data['alert']!=''){
			alert(unescape(data['alert']));
		}
	}else if(data['service']=='chat_join'){
		if(data['chat_type']!='kicked'){
			main_chat_switch_to_step(2,false);
			chat_joined=true;
			main_chat_update_view('on');
			main_chat_activate();
			chat_user=unescape(data['chat_user']);
			main_chat_launch_timer();
			main_chat_add_message(data['chat_text']);
			chat_users_list=unescape(data['chat_users_list']);
			main_chat_update_users_list();
			main_chat_pop();
		}
	}else if(data['service']=='chat_pop'){
		if(!chat_joined){
			return;
		}
		if((data['chat_type']=='KICK')||(data['chat_type']=='BANN')){
			main_chat_quit(false);
		}else{
			main_chat_launch_timer();
			main_chat_add_message(data['chat_text']);
			chat_last_id=parseInt(data['chat_last_id']);
			chat_users_list=unescape(data['chat_users_list']);
			main_chat_update_users_list();
			main_chat_pop();
		}
	}else if(data['service']=='chat_push'){
	}else if(data['service']=='chat_quit'){
	}else{		
	}
	track_init=0;
}

function main_get_link(inside_page){
	var link='';
	if(tab_id==0){
		if(sub_id==0){
			link=trans['thematic_puzzles.page_prefix'];
		}else if(sub_id==1){
			link=trans['topics.page_prefix'];
		}else if(sub_id==2){
			link=trans['your_puzzles.page_prefix'];
		}
		if(inside_page=='vote'){
			link+='-'+trans['puzzles.vote'];
		}else if(inside_page=='scores'){
			link+='-'+trans['puzzles.scores'];
		}else if(inside_page=='picture'){
			link+='-'+trans['puzzles.picture'];
		}else if(inside_page!=''){
			link+='-'+inside_page;
		}
		link+='-'+orderby+','+nav_bar_first_page+','+puzzles_page+','+selected_puzzle;
		if(inside_page=='scores'){
			link+=',30,1';
		}
		link+='.html';
	}
	return link;
}

function main_get_track_link(page){
	var link;
	if(tab_id==0){
		if(sub_id==0){
			link='/'+trans['thematic_puzzles.page_prefix'];
			if(puzzles_page!=1){
				link+='-'+puzzles_page;
			}
		}else if(sub_id==1){
			link='/'+trans['topics.page_prefix'];
		}else if(sub_id==2){
			link='/'+trans['your_puzzles.page_prefix'];
			if(puzzles_page!=1){
				link+='-'+puzzles_page;
			}
		}else if(sub_id==4){
			link='/'+trans['topics.page_prefix'];
		}
		if(page=='create_puzzle'){
			link='/'+trans['create_puzzle.unstressed'];
		}else if(page=='activity'){
			link='/'+trans['activity.unstressed'];
		}else if(page=='players'){
			link='/'+trans['players.unstressed'];
		}else if(page=='vote'){
			link='/'+trans['puzzles.vote']+'-'+selected_puzzle;
		}else if(page=='scores'){
			link='/'+trans['puzzles.scores']+'-'+selected_puzzle;
		}else if(page=='picture'){
			link='/'+trans['puzzles.picture']+'-'+selected_puzzle;
		}else if(page=='theme'){
			link='/'+trans['topic.unstressed']+'-'+theme_session;
		}else if(page!=''){
			link='/'+page;
		}
	}else if(tab_id==1){
		link='/'+trans['other_games.page_prefix'];
		if((lang=='fr')&&(sub_id==0)){
			link+='-'+trans['other_games.cryptext.page_prefix'];
		}else if(((lang=='fr')&&(sub_id==1))||((lang!='fr')&&(sub_id==0))){
			link+='-'+trans['other_games.pentamatch.page_prefix'];
		}else if((lang=='fr')&&(sub_id==2)){
			link+='-'+trans['other_games.arkantis.page_prefix'];
		}
	}else if((lang=='fr')&&(tab_id==2)){
		link='/'+trans['forum.page_prefix'];
	}else if(((lang=='fr')&&(tab_id==3))||((lang!='fr')&&(tab_id==2))){
		link='/'+trans['newsletter.page_prefix'];
	}else{
		link='/'+page;
	}
	link+='.html';
	return link;
}

function images_queued_check(){
	if(tab_id!=0){
		return false;
	}
	if(images_queued.length==0){
		return false;
	}
	var x=0;
	while((x<images_queued.length)&&(x<20)){
		i=images_queued[x];
		if(typeof(images_preobj[i])=='object'){
			if(images_preobj[i].complete){
				images_queued=images_queued.slice(0,x).concat(images_queued.slice(x+1,images_queued.length));
				with(document.getElementById('p'+i)){
					src=images_preobj[i].src;
					className='loaded_img';
				}
			}else{
				x++;
			}
		}else{
			images_preobj[i]=new Image();
			images_preobj[i].src=images_source[i];
			x++;
		}
	}
	setTimeout('images_queued_check()',100);
}

function change_selection(id){
	var id_split,disc_content,propo;
	id_split=id.split('_')
	if(id_split[0]=='c'){
		var i=id_split[1];
		selected_puzzle=puzzles_infos[i]['i'];
		main_get_details();
	}
	return false;
}

function main_add_intro(text){
	if(text==''){
		return;
	}
	if(main_content.childNodes.length<2){
		if(intro==null){
			intro=document.createElement('P');
			intro.className='intro';
		}
		intro.innerHTML=text;
		main_content.appendChild(intro);
	}
}

function sub_menu_generate(){
	
	var i,j;
	var row;
	
	if(menu[tab_id].length>0){
		if(sub_menu==null){
			sub_menu=document.createElement('TABLE');
			sub_menu.className='sub_menu_table';
			sub_menu.cellPadding='2px';
			sub_menu.cellSpacing='0px';
		}
		
		if(main_content.childNodes.length<1){
			main_content.appendChild(sub_menu);
		}
		
		if(sub_menu.rows.length<=0){
			row=sub_menu.insertRow(0);
			row.className='sub_menu_tr';
		}else{
			row=sub_menu.rows[0];
		}
		
		j=0;
		for(i=0;i<menu[tab_id].length;i++){
			sub_menu_append(row,menu[tab_id][i],j++,i==sub_id ? 'sub_menu_active' : 'sub_menu_passive',i);
			if(i<(menu[tab_id].length-1)){
				sub_menu_append(row,'<img src="img/s.gif" width="1" height="4" border="0" />',j++,'sub_menu_passive',-1);
			}
		}
		
		while(row.cells.length>j){
			row.deleteCell(j);
		}
	}else{
		if(main_content.childNodes.length>=1){
			main_content.removeChild(main_content.childNodes[0]);		
		}
	}
}

function sub_menu_append(row,text,position,class_name,id){
	var cell;
	
	if(row.cells.length<=position){
		cell=row.insertCell(position);
	}else{
		cell=row.cells[position];
	}
	if(id!=-1){
		cell.onmousedown = function(){
			change_sub_menu(id);
			return false;
		};
	}
	cell.className=class_name;
	cell.innerHTML=text;
	return false;
}

function query_bar_generate(){
	
	var i;
	var row;
	var page;
	var value;
	
	if(query_bar==null){
		query_bar=document.createElement('DIV');
	}
	
	var options='';
	var options_list=(sub_id==0 ? trans['topics_puzzles.orderby'] : trans['your_puzzles.orderby']);
	for(value in options_list){
		options+='<option value="'+value+'"'+(value==orderby ? ' selected' : '')+'>'+trans['topics_puzzles.orderby'][value]+'</option>\n';
	}
	
	query_bar.innerHTML='<form class="fforms" method="GET" onSubmit="return main_search(true);return false;"><table class="query_bar_table" cellpadding="0" cellspacing="3" border="0" width="'+(main_content_width-16)+'"><tr class="query_bar_tr" valign="middle"><td class="query_bar_td" width="13"><input type="checkbox" id="search" name="search"'+(query!='' ? ' checked' : '')+' onClick="return main_check_search();return true;" /></td><td class="query_bar_td" width="85"><nobr>'+trans['search.title']+' :&nbsp;</nobr></td><td class="query_bar_td" width="106"><input name="query" id="query" class="'+(query!='' ? 'factivetextinputs' : 'ftextinputs')+'" style="width: 100px;" value="'+query+'" onKeyUp="document.getElementById(\'search\').checked=(this.value!=\'\');this.className=(this.value!=\'\' ? \'factivetextinputs\' : \'ftextinputs\');" /></td><td class="query_bar_td" width="13"><input type="checkbox" name="qmode" id="qmode" '+(qmode=='a' ? ' checked' : '')+'/></td><td class="query_bar_td" width="135"><nobr>'+trans['search.mode.all']+'</nobr></td><td class="query_bar_td"><input type="submit" class="fbuttons" value="Ok" style="font-weight: bold; padding: 2px; margin: 0;" /></td><td class="query_bar_td" align="right"><nobr>'+trans['orderby']+'&nbsp;</nobr></td><td class="query_bar_td" width="50"><select name="orderby" id="orderby" class="fselects" style="width: 64px;" onChange="change_orderby(this.value)">'+options+'</select></td></tr></table></form>';
	
	if(main_content.childNodes.length<3){
		main_content.appendChild(query_bar);
	}

	return false;
}

function main_check_search(){
	if(!document.getElementById('search').checked){
		document.getElementById('query').className='ftextinputs';
		document.getElementById('query').value='';
	}
	return true;
}

function nav_bar_generate(){
	
	var i;
	var row;
	var page;
	var value;
	var cell;
	
	if(nav_bar==null){
		nav_bar=document.createElement('TABLE');
		nav_bar.className='nav_bar_table';
		nav_bar.cellPadding='0px';
		nav_bar.cellSpacing='4px';
	}
	nav_bar.style.width=(main_content_width-16)+'px';
	
	if(main_content.childNodes.length<4){
		main_content.appendChild(nav_bar);
	}

	if(nav_bar.rows.length==0){
		row=nav_bar.insertRow(0);
		row.className='nav_bar_tr';
	}else{
		row=nav_bar.rows[0];
	}
	
	var puzzles_last;
	puzzles_last=puzzles_offset+puzzles_per_page;
	if(puzzles_last>puzzles_count){
		puzzles_last=puzzles_count;
	}
	
	var left_cells=0;
	
	nav_bar_append(row,puzzles_count+' puzzles',left_cells++,'nav_bar_td',0,0);
	
	cell=nav_bar_append(row,trans['page']+' : ',left_cells++,'nav_bar_td',0,0);
	cell.style.width='47px';
	//cell.style.textAlign='right';
	
	page_numb=Math.ceil(puzzles_count/puzzles_per_page);
	
	if(nav_bar_first_page>1){
		nav_bar_append(row, '<img src="img/left.gif" width="7" height="20" border="0" />',left_cells++,'nav_bar_left',0,-1);
	}

	i=0;
	page=nav_bar_first_page;
	while((i<page_numb)&&(i<nav_bar_max_count)){
		if(page==puzzles_page){
			nav_bar_append(row,page,left_cells++,'nav_bar_s_page',0,0);
		}else{
			nav_bar_append(row,page,left_cells++,'nav_bar_u_page',page,0);
		}
		i++;
		page++;
	}

	if((nav_bar_first_page+nav_bar_max_count)<=page_numb){
		nav_bar_append(row,'<img src="img/right.gif" width="7" height="20" border="0" />',left_cells++,'nav_bar_right',0,1);
	}
	
	while(row.cells.length>left_cells){
		row.deleteCell(left_cells);
	}
	return false;
}

function nav_bar_append(row,text,position,class_name,page,scroll){
	
	var cell;
	
	if(row.cells.length<=position){
		cell=row.insertCell(position);
	}else{
		cell=row.cells[position];
	}
	if(page!=0){
		cell.onmousedown = function(){
			change_page(page);
			return false;
		};
	}
	if(scroll==-1){
		cell.onmousedown = function(){
			nav_bar_scroll_left();
			return false;
		};
	}else if(scroll==1){
		cell.onmousedown = function(){
			nav_bar_scroll_right();
			return false;
		};
	}
	cell.className=class_name;
	cell.innerHTML=text;
	return cell;
}

function change_tab(id){
	if(id==tab_id){
		return false;
	}
	document.getElementById('tl'+id).src='img/tabs/o'+(id==0 ? 'n' : 'i')+'a.gif';
	document.getElementById('tm'+id).style.backgroundImage='url(img/tabs/oaa.gif)';
	document.getElementById('tl'+(id+1)).src='img/tabs/oa'+(id<(tabs.length-1) ? 'i' : 'n')+'.gif';
	document.getElementById('tl'+tab_id).src='img/tabs/o'+(tab_id==0 ? 'n' : ((tab_id-1)!=id ? 'j' : 'a'))+'i.gif';
	document.getElementById('tm'+tab_id).style.backgroundImage='url(img/tabs/oii.gif)';
	if((tab_id+1)!=id){
		document.getElementById('tl'+(tab_id+1)).src='img/tabs/o'+(tab_id<(tabs.length-1) ? 'ji' : 'in')+'.gif';
	}
	var empty=(id!=tab_id);
	tab_id=id;
	sub_id=0;
	relative='';
	anchor='';
	puzzles_page=1;
	nav_bar_first_page=1;
	main_act(empty);
	return false;
}

function change_sub_menu(id){
	if(false){
	}else if((tab_id==0)&&(id==3)){
		//create a puzzle
		main_get_inside_page('create_puzzle&step=1');
	}else if((tab_id==0)&&(id==5)){
		//activity
		main_get_inside_page('activity');
	}else if((tab_id==0)&&(id==6)){
		//players
		main_get_inside_page('players');
	}else{
		puzzles_page=1;
		nav_bar_first_page=1;
		orderby='1';
		sub_id=id;
		sub_menu_generate();
		main_add_intro('');
		main_act();
	}
	return false;
}

function change_orderby(value){
	orderby=value;
	puzzles_page=1;
	nav_bar_first_page=1;
	main_fill_content();
}

function change_page(page){
	puzzles_page=page;
	nav_bar_generate();
	main_fill_content();
	return false;
}

function main_search(read_input){
	if(read_input){
		var search=document.getElementById('search');
		if(search.checked){
			var input=document.getElementById('query');
			input.className=(input.value!='' ? 'factivetextinputs' : 'ftextinputs');
			query=input.value;
			var mode_box=document.getElementById('qmode');
			qmode=(mode_box.checked ? 'a' : 'o');
		}else{
			query='';
		}
	}
	puzzles_page=1;
	main_fill_content();
	return false;
}

function nav_bar_scroll_left(){
	if(nav_bar_first_page<=1){
		return false;
	}
	nav_bar_first_page-=nav_bar_max_count-1;
	if(nav_bar_first_page<1){
		nav_bar_first_page=1;
	}
	nav_bar_generate();
	return true;
}

function nav_bar_scroll_right(){
	if(nav_bar_first_page>(page_numb-nav_bar_max_count)){
		return false;
	}
	nav_bar_first_page+=nav_bar_max_count-1;
	if((nav_bar_first_page+nav_bar_max_count)>page_numb){
		nav_bar_first_page=page_numb-nav_bar_max_count+1;
	}
	nav_bar_generate();
	return true;
}

function main_inside_page_pos(w,h,o){
	main_generic_div_pos('inside_page',w,h,o);
}

function main_generic_div_pos(suffix,w,h,o){
	var generic_page_container=document.getElementById(suffix+'_container');	
	var generic_page_content=document.getElementById(suffix+'_content');	
	generic_page_container.style.width=w+'px';
	generic_page_container.style.height=h+'px';
	generic_page_content.style.overflow=o;
	generic_page_content.style.overflowX='hidden';
	generic_page_container.style.left=((document.body.clientWidth-w)/2)+'px';
	generic_page_container.style.top=((document.body.clientHeight-h)/2)+'px';
}

function main_show_loading(timing){
	if(loading_timer!=0){
		clearTimeout(loading_timer);
		loading_timer=0;
	}
	if(pop_into_visible){
		return false;
	}
	if(timing!=0){
		loading_timer=setTimeout("document.getElementById('loading').style.visibility='inherit'",timing);
	}else{
		document.getElementById('loading').style.visibility='inherit';
	}
	return false;
}

function main_show_inside_page(page,content,inside_page_width,inside_page_height,inside_page_scroll){
	document.getElementById('inside_page_content').innerHTML=content;
	bg_stop_renew();
	if(page=='scores'){
		main_inside_page_pos(348,470,'hidden');
		scores_puzzle=selected_puzzle;
		scores_get_data(scores_puzzle,0,1);
	}else if(page=='theme'){
		if((theme_session=='090601')||(theme_session=='090719')||(theme_session=='091102')||(theme_session=='100321')){
			main_inside_page_pos(766,550,'scroll');
		}else{
			main_inside_page_pos(750,550,'hidden');
		}
		theme_get_data(theme_session);
	}else if(page=='vote'){
		main_inside_page_pos(340,220,'hidden');
		vote_get_data(selected_puzzle,0);
	}else if(page=='activity'){
		main_inside_page_pos(800,434,'hidden');
		activity_get_data();
	}else if(page=='players'){
		players_rank='points';
		players_pieces=0;
		main_inside_page_pos(840,530,'scroll');
		players_get_data(players_rank,players_pieces,1,'');
	}else if(page=='new_version'){
		main_inside_page_pos(600,380,'hidden');
	}else{
		main_inside_page_pos(inside_page_width,inside_page_height,inside_page_scroll);
	}
	if(document.body.clientWidth<1420){
		if((tab_id==0)&&((sub_id==0)||(sub_id==2))){
			var obj=document.getElementById('orderby');
			if(typeof(obj)!='undefined'){
				obj.style.visibility='hidden';
			}
		}
	}
	document.getElementById('inside_page_container').style.visibility='inherit';
	return false;
}

function main_hide_loading(){
	if(loading_timer!=0){
		clearTimeout(loading_timer);
		loading_timer=0;
	}
	document.getElementById('loading').style.visibility='hidden';
	return false;
}

function main_hide_inside_page(){
	document.getElementById('inside_page_container').style.visibility='hidden';
	document.getElementById('inside_page_content').innerHTML='';
	bg_stop_renew();
	if(document.body.clientWidth<1420){
		if((tab_id==0)&&((sub_id==0)||(sub_id==2))){
			var obj=document.getElementById('orderby');
			if(typeof(obj)!='undefined'){
				obj.style.visibility='inherit';
			}
		}
	}
	return false;
}

function activity_get_data(){
	var timezone=document.getElementById('timezone').value;
	write_cookie('timezone',timezone);
	ajax_send('GET','inc/activity_png.php','service=activity&lang='+lang+'&timezone='+timezone);
}

function activity_change_timezone(){
	document.getElementById('activity_image').src='img/aniwheel.gif';	
	activity_get_data();
}

function players_get_data(players_rank,players_pieces,players_page,searched_player,detailled_player){
	var query='service=players&lang='+lang+'&players_rank='+players_rank+'&players_pieces='+players_pieces+'&players_page='+players_page+'&searched_player='+escape(searched_player)+'&detailled_player='+escape(detailled_player);
	main_show_loading(250);
	ajax_send('GET','inc/service.php',query);
	return false;
}

function scores_get_data(puzz_id,scores_pieces,scores_page){
	var query='service=scores&lang='+lang+'&scores_puzzle='+puzz_id+'&scores_pieces='+scores_pieces+'&scores_page='+scores_page;
	main_show_loading(250);
	ajax_send('GET','inc/service.php',query);
	return false;
}

function theme_get_data(theme_session){
	var query='service=theme&lang='+lang+'&theme_session='+theme_session;
	ajax_send('GET','inc/service.php',query);
	return false;
}

function vote_get_data(puzz_id,is_topic){
	var query='service=vote&lang='+lang+'&puzz_id='+puzz_id+'&is_topic='+is_topic;
	ajax_send('GET','inc/service.php',query);
	return false;
}

function main_service(args){
	var query='lang='+lang;
	main_show_loading(250);
	for(key in args){
		query+='&'+key+'='+escape(args[key]);
	}
	ajax_send('GET','inc/service.php',query);
	return false;
}

function scores_change_pieces(pieces){
	scores_pieces=pieces;
	scores_get_data(scores_puzzle,scores_pieces,1);
}

function scores_change_page(page){
	scores_page=page;
	scores_get_data(scores_puzzle,scores_pieces,scores_page);
}

function players_change_rank(rank){
	players_rank=rank;
	players_get_data(players_rank,players_pieces,1,'','');
	return false;
}

function players_change_pieces(pieces){
	players_pieces=pieces;
	players_get_data(players_rank,players_pieces,1,'','');
	return false;
}

function players_change_page(page){
	players_page=page;
	players_get_data(players_rank,players_pieces,players_page,'','');
	return false;
}

function players_search_for_player(searched_player){
	players_get_data(players_rank,players_pieces,1,searched_player,'');
	return false;
}

function players_get_detail_for_player(player){
	players_get_data(players_rank,players_pieces,players_page,'',player);
	return false;
}

function write_cookie(name,text){
	var today=new Date();
	var date=new Date();
	date.setTime(today.getTime()+1000*60*60*24*365);
	document.cookie=name+"="+escape(text)+"; path=/; expires="+date.toGMTString();
}

function main_show_details(text){
	var zone=document.getElementById('details');
	zone.style.width=(text.length>40 ? 500 : 150);
	zone.innerHTML=text;
	var posW=zone.offsetWidth;
	var posH=zone.offsetHeight;
	if((posX+posW+5)>document.body.clientWidth){
		zone.style.left=posX-posW-5;
	}else{
		zone.style.left=posX+5;
	}
	if((posY-posH/2)<0){
		zone.style.top=0;
	}else{
		zone.style.top=posY-posH/2;
	}
	zone.style.visibility='inherit';
}

function main_hide_details(){
	var zone=document.getElementById('details');
	zone.style.visibility='hidden';
}

function in_convert(text){
	text=unescape(text);
	var reg=new RegExp("&43;", "g");
	text=text.replace(reg,'+')
	return text;
}

function out_convert(text){
	var reg=new RegExp("\\+", "g");
	text=text.replace(reg,'&43;')
	text=escape(text);
	return text;
}

function upload_prepare(){
	main_show_loading(0);
	document.step1.submit();
	return false;
}

function upload_dispose(mode,image_filename,image_profile,image_disposition,error_message){
	main_hide_loading();
	if(error_message!=''){
		alert(error_message);
	}else{
		if(mode=='postcard'){
			main_postcard_local(image_filename,image_profile,image_disposition);
		}else{
			main_get_inside_page('create_puzzle&step=2&image_filename='+image_filename+'&image_profile='+image_profile+'&image_disposition='+image_disposition);
		}
	}
	return false;
}

function create_puzzle_go_step(step,elements){
	var query,i;
	main_show_loading(0);
	document.getElementById('inside_page_content').scrollTop='0px';
	query='lang='+lang+'&service=inside_page&page=create_puzzle&step='+step;
	for(i=0;i<elements.length;i++){
		if(typeof(elements[i])!='undefined'){
			if((elements[i].type=='text')||(elements[i].type=='hidden')){
				query+='&'+elements[i].name+'='+escape(elements[i].value);
			}else if(elements[i].type=='radio'){
				if(elements[i].checked){
					query+='&'+elements[i].name+'='+escape(elements[i].value);
				}
			}else if(elements[i].type=='checkbox'){
				if(elements[i].checked){
					query+='&'+elements[i].name+'=on';
				}
			}
		}
	}
	ajax_send('GET','inc/service.php',query);
	return false;
}

function switch_partners(id){
	var i;
	i=1;
	while(eval(document.getElementById('partners_'+i))){
		document.getElementById('partners_'+i).style.visibility=(i==id ? 'inherit' : 'hidden');
		i++;
	}
	return false;
}

function displaycoordIE(){
	posX=event.clientX;
	posY=event.clientY
}

function displaycoordNS(e){
	posX=e.clientX;
	posY=e.clientY;
}

function main_get_postcards(selection,from_name,from_email,dest_name,dest_email){
	main_show_loading(0);
	var query='lang='+lang+'&service=get_postcards&postcard_puzzle='+selection+'&postcard_id='+postcard_id+'&postcard_key='+postcard_key+'&postcard_auth='+postcard_auth+'&from_name='+from_name+'&from_email='+from_email+'&dest_name='+dest_name+'&dest_email='+dest_email;
	ajax_send('GET','inc/service.php',query);
	card_puzzle=0;
	postcard_id=0;
}

function main_postcard_distant(puzzle_data){
	var params=puzzle_data.split(',');
	document.getElementById('distant_source').checked=true;
	document.getElementById('distant_preview').src='/jpuzzles/'+thumbnails_dir+'/'+params[0]+'.jpg';
	document.getElementById('local_source').checked=false;
	document.getElementById('local_preview').src='/img/s.gif';
	return false;	
}

function main_postcard_local(picture,profile,disposition){
	if(picture==''){
		return false;
	}
	document.getElementById('distant_source').checked=false;
	document.getElementById('distant_preview').src='/img/s.gif';
	document.getElementById('local_source').checked=true;
	document.getElementById('local_preview').src='/jpuzzles/'+thumbnails_dir+'/'+picture+'.jpg';
	document.getElementById('local_filename').value=picture;
	document.getElementById('local_profile').value=profile;
	document.getElementById('local_disposition').value=disposition;
	return false;	
}

function main_postcard_create(send_it){
	var query="service=postcard_create&lang="+lang;
	main_show_loading(0);
	query+='&from_name='+escape(document.getElementById('from_name').value);
	query+='&from_email='+escape(document.getElementById('from_email').value);
	query+='&dest_name='+escape(document.getElementById('dest_name').value);
	query+='&dest_email='+escape(document.getElementById('dest_email').value);
	query+='&postcard_title='+escape(document.getElementById('postcard_title').value);
	query+='&postcard_message='+escape(document.getElementById('postcard_message').value);
	query+='&stamp='+(document.getElementById('stamp').checked ? 1 : 0);
	query+='&postcard_notice='+(document.getElementById('postcard_notice').checked ? 1 : 0);
	query+='&source='+(document.getElementById('distant_source').checked ? 'distant' : 'local');
	query+='&distant_data='+document.getElementById('distant_data').value;
	query+='&local_filename='+document.getElementById('local_filename').value;
	query+='&local_profile='+document.getElementById('local_profile').value;
	query+='&local_disposition='+document.getElementById('local_disposition').value;
	var puzz_id=document.getElementById('puzz_id').value;
	if((puzz_id!='')&&(document.getElementById('local_source').checked)){
		query+='&puzz_id='+puzz_id;
	}
	var postcard_id=document.getElementById('postcard_id').value;
	if(postcard_id!=''){
		query+='&postcard_id='+postcard_id;
	}
	var postcard_key=document.getElementById('postcard_key').value;
	if(postcard_key!=''){
		query+='&postcard_key='+postcard_key;
	}
	query+="&send_it="+send_it;
	ajax_send('GET','inc/service.php',query);
}

function main_postcard_view(postcard_id,postcard_face,postcard_key,postcard_auth){
	query='service=postcard_view&postcard_id='+postcard_id+'&postcard_face='+postcard_face+'&postcard_key='+postcard_key+'&postcard_auth='+postcard_auth;
	ajax_send('GET','inc/service.php',query);
	return false;
}

function main_act(empty){
	if(empty || true){
		main_empty_content();
	}
	main_get_dimensions();
	if(tab_id==0){
		//jigsaw puzzles
		if(sub_id==0){
			//topic puzzles
			partner='';
			main_search(false);
		}else if(sub_id==1){
			//topics
			main_get_topics();
		}else if(sub_id==2){
			//your puzzles
			partner='@';
			main_search(false);
		}else if(sub_id==4){
			//postcards
			main_get_postcards(card_puzzle,'','','','');
		}
	}else if(tab_id>=1){
		//anchor=self.location.hash.substring(1);
		main_fill_page();
	}
}

var posX;
var posY;

var anchor='';

var track_init=1;

var pop_into_visible=false;

document.onmousemove=(document.all ? displaycoordIE : displaycoordNS);

var contenu='';
var writeln_native_function=null;