var chirashisProcessor;
var chirashis;
var chirashi;

// セッション
var session = {
	"mode": 'top', 
	"area": null, 
	"genre": null, 
	"freeword": null 
};

// セッションの初期化
function clear_session() {
	session.area = null;
	session.genre = null;
	session.freeword = null;
}

// タブ切り替え
function tab(id) {
	$('finder_panel').hide();
	$('area_panel').hide();
	//$('top_panel').hide();
	$('genre_panel').hide();
	
	$(id).show();
}

function panel(id) {
	$('panel_top').hide();
	$('panel_today').hide();
	$('panel_area').hide();
	$('panel_genre').hide();
	$('panel_link').hide();
	$('panel_about').hide();
	$('panel_info').hide();
	$('panel_policy').hide();
	$('panel_pub').hide();
	
	$(id).show();
}

// モード
function change_mode(mode) {
	clear_session();
	change_finder_panel();
	
	switch (mode) {
		case 'finder':
			tab('finder_panel');
			panel('panel_today');
			swap_bg('to_today', -130);
			session.mode = 'finder';
			chirashis = [];
			$('chirashis').innerHTML = chirashisProcessor();
			break;
		case 'area':
			tab('area_panel');
			panel('panel_area');
			swap_bg('to_area', -130);
			session.mode = 'area';
			chirashis = [];
			$('chirashis').innerHTML = chirashisProcessor();
			break;
		case 'top':
			tab('top_panel');
			panel('panel_top');
			swap_bg_default();
			session.mode = 'top';
			get_chirashis(null, null, null, 'top');
			break;
		case 'genre':
			tab('genre_panel');
			panel('panel_genre');
			swap_bg('to_genre', -130);
			session.mode = 'genre';
			chirashis = [];
			$('chirashis').innerHTML = chirashisProcessor();
			break;
		default: 
			alert('その他モード');
			break;
	}
}

// finder パネル
function change_finder_panel() {
	$('finder_area').options[0].selected = true;
	$A($('finder_area').options).each(function(option, i) {
		if (session.area == option.index) {
			option.selected = true;
			throw $break;
		}
	});
	
	$('finder_genre').options[0].selected = true;
	$A($('finder_genre').options).each(function(option, i) {
		if (session.genre == option.index) {
			option.selected = true;
			throw $break;
		}
	});
	
	$('finder_freeword').value = '';
	if (session.freeword != null) {
		$('finder_freeword').value = session.freeword;
	}
}

// チラシのパス
function chirashis_path(area, genre, freeword, mode) {
	var result = 'chirashis/list';
	
	if (mode != null) {
		if (mode == 'top') {
			return 'chirashis/top';
		}
		else if(mode == 'whatsnew') {
			return 'chirashis/whatsnew';
		}
	}
	
	if (area == null && genre == null && freeword == null) {
		return result;
	}
	
	if (area != null) {
		result += '/' + area;
	}
	else {
		result += '/*';
	}
	
	if (genre != null) {
		result += '/' + genre;
	}
	else {
		result += '/*';
	}
	
	if (freeword != null) {
		result += '/' + freeword;
	}
	else {
		result += '/*';
	}
	
	return result;
}

function chirashi_path(id) {
	return 'chirashis/show/' + id;
}

// チラシを AJAX で得る
function get_chirashis(area, genre, freeword, mode) {
	var uri = '';
	
	uri = chirashis_path(area, genre, freeword, mode);
	
	var ajax = new Ajax.Request(uri, { method: 'get', parameters: '', 
		onComplete: function(request) {
			//alert("通信が完了しました");
			session.area = area;
			session.genre = genre;
			session.freeword = freeword;
			change_finder_panel();
			
			chirashis = eval(request.responseText);
			//alert(request.responseText);
			$('chirashis').innerHTML = chirashisProcessor();
		}, 
		onSuccess: function(request) {
			//alert("通信に成功しました(" + request.responseText + ")");
		}, 
		onFailure: function(request) {
			alert("通信に失敗しました");
		}, 
		onException: function(request, exception) {
			alert("例外が発生しました(" + exception + ")");
			
			var ajaxx = new Ajax.Request('datas/chirashis.dat', { method: 'get', parameters: '', 
				onComplete: function(request) {
					session.area = area;
					session.genre = genre;
					session.freeword = freeword;
					change_finder_panel();
					
					chirashis = eval(request.responseText);
					$('chirashis').innerHTML = chirashisProcessor();
				} 
			});
		}
	});
}

// チラシを AJAX で得る
function get_chirashi(id) {
	var uri = '';
	
	var ajax = new Ajax.Request('chirashis/edit/' + id, { method: 'get', parameters: '', asynchronous: false, 
		onComplete: function(request) {
			//alert("通信が完了しました");
			chirashi = null;
			chirashis = eval(request.responseText);
			if (chirashis != null) {
				chirashi = chirashis[0];
			}
		}, 
		onSuccess: function(request) {
			//alert("通信に成功しました(" + request.responseText + ")");
		}, 
		onFailure: function(request) {
			alert("通信に失敗しました");
		}, 
		onException: function(request, exception) {
			alert("例外が発生しました(" + exception + ")");
			
			var ajaxx = new Ajax.Request('datas/chirashis.dat', { method: 'get', parameters: '', asynchronous: false, 
				onComplete: function(request) {
					chirashi = null;
					chirashis = eval(request.responseText);
					if (chirashis != null) {
						chirashi = chirashis[0];
					}
				} 
			});
		}
	});
}

// 地域チェックボックス
function area_checkbox(chirashi, area) {
	var found = false;
	var result = '';
	
	if (chirashi != null) {
		chirashi.areas.each(function(a, i) {
			if (area.id == a.id) {
				found = true;
				throw $break
			}
		});
	}
	
	if (found) {
		result = check_box('area', area.id, { checked: true }) + area.name
	}
	else {
		result = check_box('area', area.id, { checked: false }) + area.name
	}
	
	return result;
}

// ジャンルチェックボックス
function genre_checkbox(chirashi, genre) {
	var found = false;
	var result = '';
	
	if (chirashi != null) {
		chirashi.genres.each(function(g, i) {
			if (genre.id == g.id) {
				found = true;
				throw $break
			}
		});
	}
	
	if (found) {
		result = check_box('genre', genre.id, { checked: true }) + genre.name
	}
	else {
		result = check_box('genre', genre.id, { checked: false }) + genre.name
	}
	
	return result;
}

//背景画像の入れ替え表示
function swap_bg(elementID, position) {
	set_default_background('to_today');
	set_default_background('to_area');
	set_default_background('to_genre');
	set_default_background('to_link');
	set_position_background(elementID, position);
}

//背景画像の全てを左端上端に戻す
function swap_bg_default() {
	set_default_background('to_today');
	set_default_background('to_area');
	set_default_background('to_genre');
	set_default_background('to_link');	
}

//背景画像の位置を左端上端に戻す
function set_default_background(elementID) {
	element = document.getElementById(elementID);
	element.style.backgroundPosition = "0 0";
}

//背景画像を指定した数値分で移動する
function set_position_background(elementID, position) {
	element = document.getElementById(elementID);
	position = position + "px 0";
	element.style.backgroundPosition = position;
}