//ルートまでのパス
var root_path = "http://www.square-enix.co.jp/mobile/melody/semelody";

function initSelect(){
	var search_series_elem = document.getElementById("search_series");
	var search_title_elem = document.getElementById("search_title");
	var search_melody_btn_elem = document.getElementById("search_melody_btn");
	var location_num = window.location.pathname.indexOf("php");
	if(location_num != -1){
		var search_elem = window.location.search;
		//キャリア取得
		var loc_ca = search_elem.indexOf("ca");
		var loc_ca_eq = search_elem.indexOf("=", loc_ca);
		var loc_ca_amp = search_elem.indexOf("&", loc_ca);
		if(loc_ca_amp != -1){
			var ca = search_elem.substring(loc_ca_eq+1, loc_ca_amp);
		}else{
			var ca = search_elem.substr(loc_ca_eq+1);
		}
		//キャリアが１、2、3でないならば
		var ca_match = ca.match(/^1$|^2$|^3$/);
		if(ca_match == null){
			//imodeとして扱う
			ca = 1;
		}
		//キャリアアイコンをアクティブに
		iconActive('click', ca);
		//シリーズのイベントハンドラを付加disable、filter解除
		search_series_elem.onchange = new Function("searchRequests(" + ca + ", 'GET', './search_melody.php',  this[this.selectedIndex].value)");
		search_series_elem.disabled = "";
//		document.getElementById("filter1").className = "";
		//sidを取得
		var loc_sid = search_elem.indexOf("sid");
		var loc_sid_eq = search_elem.indexOf("=", loc_sid);
		var loc_sid_amp = search_elem.indexOf("&", loc_sid);
		if(loc_sid_amp != -1){
			var sid = search_elem.substring(loc_sid_eq+1, loc_sid_amp);
		}else{
			var sid = search_elem.substring(loc_sid_eq+1);
		}
		//sidが空でないならば
		if(loc_sid != -1 && sid != ''){
			//valueがsidと一致するところを表示
			for(i=0; i<search_series_elem.options.length; i++){
				if(search_series_elem.options[i].value == sid){
					search_series_elem.options[i].selected = "selected";
					break;
				}
			}
			//タイトルのイベントハンドラを付加disable、filter解除
			search_title_elem.onchange = new Function("appearSearchBtn(" + ca + ", this[this.selectedIndex].value)");
			search_title_elem.disabled = "";
//			document.getElementById("filter2").className = "";
			//pidを取得
			var loc_pid = search_elem.indexOf("pid");
			var loc_pid_eq = search_elem.indexOf("=", loc_pid);
			var loc_pid_amp = search_elem.indexOf("&", loc_pid);
			if(loc_pid_amp != -1){
				var pid = search_elem.substring(loc_pid_eq+1, loc_pid_amp);
			}else{
				var pid = search_elem.substr(loc_pid_eq+1);
			}
			//pidが空でないならば
			if(loc_pid != -1 && pid != ''){
				//valueがpidと一致するところを表示
				for(i=0; i<search_title_elem.options.length; i++){
					if(search_title_elem.options[i].value == pid){
						search_title_elem.options[i].selected = "selected";
						break;
					}
				} 
				//検索ボタンのイベントハンドラを付加disable、filter解除
				search_melody_btn_elem.onclick = new Function("searchMelody(" + ca + "); return false;");
				search_melody_btn_elem.disabled = "";
				document.getElementById("filter3").style.visibility = "hidden";
			}else{
				search_melody_btn_elem.disabled = "disabled";
			}
		}else{
			search_title_elem.disabled = "disabled";
			search_melody_btn_elem.disabled = "disabled";
		}
	}else{
		search_series_elem.disabled = "disabled";
		search_title_elem.disabled = "disabled";
		search_melody_btn_elem.disabled = "disabled";
	}


}

function initSelectError(){
	var search_series_elem = document.getElementById("search_series");
	var search_title_elem = document.getElementById("search_title");
	var search_melody_btn_elem = document.getElementById("search_melody_btn");
//	var filter1_elem = document.getElementById("filter1");
//	var filter2_elem = document.getElementById("filter2");
	var filter3_elem = document.getElementById("filter3");
	var search_elem = window.location.search;

	//キャリア取得
	var loc_ca = search_elem.indexOf("ca");
	var loc_ca_eq = search_elem.indexOf("=", loc_ca);
	var loc_ca_amp = search_elem.indexOf("&", loc_ca);
	if(loc_ca_amp != -1){
		var ca = search_elem.substring(loc_ca_eq+1, loc_ca_amp);
	}else{
		var ca = search_elem.substr(loc_ca_eq+1);
	}
	//キャリアアイコンをノンアクティブに
	iconActive('out', ca);
	search_series_elem.disabled = "disabled";
	search_title_elem.disabled = "disabled";
	search_melody_btn_elem.disabled = "disabled";
//	filter1_elem.className = "overlay";
//	filter2_elem.className = "overlay";
	filter3_elem.className = "overlay overlay_btn";
	filter3_elem.style.visibility = "visible";

}


//http_objを作成
function createHttpRequest(){
	if(window.ActiveXObject){
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try {
				return new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e2){
				return null;
			}
		}
	}else if(window.XMLHttpRequest){
		return new XMLHttpRequest();
	}else{
		return null;
	}
}

//プログラムにアクセス
function searchRequests(carrier, method, file_name, sid){
	var select_series_elem = document.getElementById("search_series");
	var select_title_elem = document.getElementById("search_title");
	var select_melody_btn_elem = document.getElementById("search_melody_btn");
//	var filter1_elem = document.getElementById("filter1");
//	var filter2_elem = document.getElementById("filter2");
	var filter3_elem = document.getElementById("filter3");
	var error_elem = document.getElementById("error");
	
	var icon_i_elem = document.getElementById("icon_i");
	var icon_e_elem = document.getElementById("icon_e");
	var icon_s_elem = document.getElementById("icon_s");
	//エラー表示部分初期化
	error_elem.style.display = 'none';
	error_elem.innerHTML = '';
	
	//キャリアが１、2、3でないならば
	carrier = String(carrier);
	var carrier_match = carrier.match(/^1$|^2$|^3$/);
	if(carrier_match == null){
		//エラー
		error_elem.style.display = 'block';
		error_elem.innerHTML = '<font color="red" size="1"><b>エラーが発生しました。</b></font>';
		return;
	}

   	//一旦onclick属性を無効に
	icon_i_elem.onclick = new Function("void(0); return false;");
	icon_e_elem.onclick = new Function("void(0); return false;");
	icon_s_elem.onclick = new Function("void(0); return false;");
	//一旦シリーズをdisabledに
	select_series_elem.disabled = "disabled";

    //キャリアボタンが押された場合
    if(sid == ''){
		//select_series_elemをdisabledにする
		select_series_elem.disabled = "disabled";
		//select_series_elemのfilterをつける
//		filter1_elem.className = "overlay";
		//onchange追加
		select_series_elem.onchange = new Function("searchRequests(" + carrier + ", '" + method + "', '" + file_name + "',  this[this.selectedIndex].value)");
		//select_titleをdisabledにする
		select_title_elem.disabled = "disabled";
		//select_titleのfilterをつける
//		filter2_elem.className = "overlay";
		//検索ボタンをdisabledにする
		document.getElementById("search_melody_btn").disabled = "disabled";
		//検索ボタンのfilterをつける
		document.getElementById("filter3").className = "overlay overlay_btn";
		document.getElementById("filter3").style.visibility = "visible";
		//シリーズの選択してくださいを残して削除
		var select_series_elem_length = select_series_elem.getElementsByTagName("option").length;
		for(i=1; i<select_series_elem_length; i++){
			select_series_elem.removeChild(select_series_elem.lastChild);
		}
		//タイトルの選択してくださいを残して削除する
		var select_title_elem_length = select_title_elem.getElementsByTagName("option").length;
		for(i=1; i<select_title_elem_length; i++){
			select_title_elem.removeChild(select_title_elem.lastChild);
		}
  	}else{
		//select_titleをdisabledにする
		select_title_elem.disabled = "disabled";
		//select_titleのfilterをつける
//		filter2_elem.className = "overlay";
		//onchange追加
		select_title_elem.onchange = new Function("appearSearchBtn(" + carrier + ", this[this.selectedIndex].value)");
		//検索ボタンをdisabledにする
		document.getElementById("search_melody_btn").disabled = "disabled";
		//検索ボタンのfilterをつける
		document.getElementById("filter3").className = "overlay overlay_btn";
		document.getElementById("filter3").style.visibility = "visible";
		//タイトルの選択してくださいを残して削除する
		var select_title_elem_length = select_title_elem.getElementsByTagName("option").length;
		for(i=1; i<select_title_elem_length; i++){
			select_title_elem.removeChild(select_title_elem.lastChild);
		}
  	}
	
	//http_objを作成
	var http_obj = createHttpRequest();
	//http_obj作成に失敗した場合
	if(http_obj == null){
		//エラー文言を出力
		alert("対応しているブラウザでアクセスしてください。");
	}
	
	//送信するデータを作成
	var date = new Date();
	if(sid != ''){
		adjust_file_name = file_name + "?ca=" + encodeURI(carrier) + "&sid=" + encodeURI(sid) + "&" + date.getTime();
	}else{
		adjust_file_name = file_name + "?ca=" + encodeURI(carrier) + "&" + date.getTime();
	}
	
	//open
	http_obj.open(method, adjust_file_name, true);
	//ヘッダー
	http_obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	
    //受信時に起動するイベント
	http_obj.onreadystatechange = function(){
		//readyState値は4で受信完了
		if(http_obj.readyState == 4){
			if(http_obj.status == 200){
				//コールバック関数実行
				onloadSearch(http_obj, carrier, method, file_name, sid);
			}else{
				//通信失敗
				error_elem.style.display = 'block';
				error_elem.innerHTML = '<font color="red" size="1"><b>大変ご迷惑をお掛けしますが、再度試すか、しばらく経ってからご利用下さい。</b></font>';
				//キャリアのonclick属性を復帰
				icon_i_elem.onclick = new Function("searchRequests(1, '" + method + "', '" + file_name + "', ''); iconActive('click', 1); return false;");
				icon_e_elem.onclick = new Function("searchRequests(3, '" + method + "', '" + file_name + "', ''); iconActive('click', 3); return false;");
				icon_s_elem.onclick = new Function("searchRequests(2, '" + method + "', '" + file_name + "', ''); iconActive('click', 2); return false;");
				return;
			}
		}
	}
    //send
	http_obj.send('');

}

//onloadSearchSeries
function onloadSearch(http_obj, carrier, method, file_name, sid){
	//レスポンスを取得
	var xml_obj = http_obj.responseXML;
	var error_tag = xml_obj.getElementsByTagName("error");
	var icon_i_elem = document.getElementById("icon_i");
	var icon_e_elem = document.getElementById("icon_e");
	var icon_s_elem = document.getElementById("icon_s");
	var error_elem = document.getElementById("error");

	//エラータグが返ってきている場合
	if(error_tag.length >= 1){
		//エラータグのnodeValueを判断
		var error_code = error_tag[0].childNodes[0].nodeValue;
		if(error_code == 8){
			error_elem.style.display = 'block';
			error_elem.innerHTML = '<font color="red" size="1"><b>エラーが発生しました。</b></font>';
			//キャリアのonclick属性を復帰
			icon_i_elem.onclick = new Function("searchRequests(1, '" + method + "', '" + file_name + "', ''); iconActive('click', 1); return false;");
			icon_e_elem.onclick = new Function("searchRequests(3, '" + method + "', '" + file_name + "', ''); iconActive('click', 3); return false;");
			icon_s_elem.onclick = new Function("searchRequests(2, '" + method + "', '" + file_name + "', ''); iconActive('click', 2); return false;");
			return;
		}else if(error_code == 9){
			error_elem.style.display = 'block';
			error_elem.innerHTML = '<font color="red" size="1"><b>大変ご迷惑をお掛けしますが、再度試すか、しばらく経ってからご利用下さい。</b></font>';
			//キャリアのonclick属性を復帰
			icon_i_elem.onclick = new Function("searchRequests(1, '" + method + "', '" + file_name + "', ''); iconActive('click', 1); return false;");
			icon_e_elem.onclick = new Function("searchRequests(3, '" + method + "', '" + file_name + "', ''); iconActive('click', 3); return false;");
			icon_s_elem.onclick = new Function("searchRequests(2, '" + method + "', '" + file_name + "', ''); iconActive('click', 2); return false;");
			return;
		}
	}
	
	if(sid == ""){
		createSearchSeries(xml_obj, carrier, method, file_name);
	}else{
		createSearchTitle(xml_obj, carrier, method, file_name, sid);
	}
}

function createSearchSeries(xml_obj, carrier, method, file_name){
	//カテゴリータグを取得
	var category_tags = xml_obj.getElementsByTagName("category");
	var select_elem = document.getElementById("search_series");

	for(i=1; i<=category_tags.length; i++){
		var option_elem = document.createElement("option");
		option_elem.setAttribute("value", category_tags[i-1].getAttribute("id"));
		var option_elem_text = document.createTextNode(category_tags[i-1].childNodes[0].nodeValue);
		option_elem.appendChild(option_elem_text);
		select_elem.appendChild(option_elem);
	}

	//selectタグにonchangeイベントを追加
	select_elem.onchange = new Function("searchRequests(" + carrier + ", '" + method + "', '" + file_name + "',  this[this.selectedIndex].value)");
	//search_seriesのdisableを解除
	select_elem.disabled = "";
	//search_seriesのfilterを解除
//	document.getElementById("filter1").className = "";

	//キャリアのonclick属性を復帰
	var icon_i_elem = document.getElementById("icon_i");
	var icon_e_elem = document.getElementById("icon_e");
	var icon_s_elem = document.getElementById("icon_s");
	//キャリアのonclick属性を復帰
	icon_i_elem.onclick = new Function("searchRequests(1, '" + method + "', '" + file_name + "', ''); iconActive('click', 1); return false;");
	icon_e_elem.onclick = new Function("searchRequests(3, '" + method + "', '" + file_name + "', ''); iconActive('click', 3); return false;");
	icon_s_elem.onclick = new Function("searchRequests(2, '" + method + "', '" + file_name + "', ''); iconActive('click', 2); return false;");
	//シリーズプルダウンにのdisabled属性を解除
	select_elem.disabled = "";


}

function createSearchTitle(xml_obj, carrier, method, file_name, sid){
	//カテゴリータグを取得
	var category_tags = xml_obj.getElementsByTagName("category");
	var select_series_elem = document.getElementById("search_series");
	var select_elem = document.getElementById("search_title");

	for(i=1; i<=category_tags.length; i++){
		var option_elem = document.createElement("option");
		option_elem.setAttribute("value", category_tags[i-1].getAttribute("id"));
		var option_elem_text = document.createTextNode(category_tags[i-1].childNodes[0].nodeValue);
		option_elem.appendChild(option_elem_text);
		select_elem.appendChild(option_elem);
	}
	
	//selectタグにonchangeイベントを追加
	select_elem.onchange = new Function("appearSearchBtn(" + carrier + ", this[this.selectedIndex].value)");
  	select_elem.disabled = "";
	//search_titleのfilterを解除
//	document.getElementById("filter2").className = "";
	
	//キャリアのonclick属性を復帰
	var icon_i_elem = document.getElementById("icon_i");
	var icon_e_elem = document.getElementById("icon_e");
	var icon_s_elem = document.getElementById("icon_s");
	//キャリアのonclick属性を復帰
	icon_i_elem.onclick = new Function("searchRequests(1, '" + method + "', '" + file_name + "', ''); iconActive('click', 1); return false;");
	icon_e_elem.onclick = new Function("searchRequests(3, '" + method + "', '" + file_name + "', ''); iconActive('click', 3); return false;");
	icon_s_elem.onclick = new Function("searchRequests(2, '" + method + "', '" + file_name + "', ''); iconActive('click', 2); return false;");
	//シリーズプルダウンにのdisabled属性を解除
	select_series_elem.disabled = "";
}
//検索ボタンのdisableを操作
function appearSearchBtn(carrier, pid){
	var search_melody_btn_elem = document.getElementById("search_melody_btn");
	if(pid == ""){
		//検索ボタンをdisabledにする
		search_melody_btn_elem.disabled = "disabled";
		//search_titleのfilterをつける
		document.getElementById("filter3").className = "overlay overlay_btn";
		document.getElementById("filter3").style.visibility = "visible";
	}else{
		search_melody_btn_elem.disabled = "";
		//search_titleのfilterをけす
		document.getElementById("filter3").style.visibility = "hidden";
		search_melody_btn_elem.onclick = new Function("searchMelody(" + carrier + "); return false;");
	}


}

//検索を行う
function searchMelody(carrier){
	var select_series_elem = document.getElementById("search_series");
	var select_title_elem = document.getElementById("search_title");
	window.location.href = root_path + "/pg/result.php?ca=" + carrier + "&sid=" + select_series_elem.options[select_series_elem.selectedIndex].value + "&pid=" + select_title_elem.options[select_title_elem.selectedIndex].value;
}

//キャリアボタンのアクティブ、非アクティブを切り替える1
function iconActive(mouse_event, carrier){
	var i_elem = document.getElementById("icon_i");
	var s_elem = document.getElementById("icon_s");
	var e_elem = document.getElementById("icon_e");
	
	if(mouse_event == "over"){
		if(carrier == 1){
			i_elem.src = i_elem.src.replace("off.gif","on.gif");
		}else if(carrier == 2){
			s_elem.src = s_elem.src.replace("off.gif","on.gif");
		}else if(carrier == 3){
			e_elem.src = e_elem.src.replace("off.gif","on.gif");
		}
	}

	if(mouse_event == "out"){
		if(carrier == 1){
			i_elem.src = i_elem.src.replace("on.gif","off.gif");
		}else if(carrier == 2){
			s_elem.src = s_elem.src.replace("on.gif","off.gif");
		}else if(carrier == 3){
			e_elem.src = e_elem.src.replace("on.gif","off.gif");
		}
	}

	if(mouse_event == "click"){
		for(i=1; i<=3; i++){
			if(carrier == i){
				if(i == 1){
					i_elem.src = i_elem.src.replace("off.gif","on.gif");
					i_elem.onmouseout = new Function("void(0); return false;");
				}else if(i == 2){
					s_elem.src = s_elem.src.replace("off.gif","on.gif");
					s_elem.onmouseout = new Function("void(0); return false;");
				}else if(i == 3){
					e_elem.src = e_elem.src.replace("off.gif","on.gif");
					e_elem.onmouseout = new Function("void(0); return false;");
				}
			}else{
				if(i == 1){
					i_elem.src = i_elem.src.replace("on.gif","off.gif");
					i_elem.onmouseout = new Function("iconActive('out', 1)");
				}else if(i == 2){
					s_elem.src = s_elem.src.replace("on.gif","off.gif");
					s_elem.onmouseout = new Function("iconActive('out', 2)");
				}else if(i == 3){
					e_elem.src = e_elem.src.replace("on.gif","off.gif");
					e_elem.onmouseout = new Function("iconActive('out', 3)");
				}
			}
		}
	}

}


//キャリアボタンのアクティブ、非アクティブを切り替える2(同じページの別の場所)
function iconActive2(mouse_event, carrier){
	var i_elem = document.getElementById("icon_i2");
	var s_elem = document.getElementById("icon_s2");
	var e_elem = document.getElementById("icon_e2");
	
	if(mouse_event == "over"){
		if(carrier == 1){
			i_elem.src = i_elem.src.replace("off.gif","on.gif");
		}else if(carrier == 2){
			s_elem.src = s_elem.src.replace("off.gif","on.gif");
		}else if(carrier == 3){
			e_elem.src = e_elem.src.replace("off.gif","on.gif");
		}
	}

	if(mouse_event == "out"){
		if(carrier == 1){
			i_elem.src = i_elem.src.replace("on.gif","off.gif");
		}else if(carrier == 2){
			s_elem.src = s_elem.src.replace("on.gif","off.gif");
		}else if(carrier == 3){
			e_elem.src = e_elem.src.replace("on.gif","off.gif");
		}
	}

	if(mouse_event == "click"){
		for(i=1; i<=3; i++){
			if(carrier == i){
				if(i == 1){
					i_elem.src = i_elem.src.replace("off.gif","on.gif");
					i_elem.onmouseout = new Function("void(0); return false;");
				}else if(i == 2){
					s_elem.src = s_elem.src.replace("off.gif","on.gif");
					s_elem.onmouseout = new Function("void(0); return false;");
				}else if(i == 3){
					e_elem.src = e_elem.src.replace("off.gif","on.gif");
					e_elem.onmouseout = new Function("void(0); return false;");
				}
			}else{
				if(i == 1){
					i_elem.src = i_elem.src.replace("on.gif","off.gif");
					i_elem.onmouseout = new Function("iconActive('out', 1)");
				}else if(i == 2){
					s_elem.src = s_elem.src.replace("on.gif","off.gif");
					s_elem.onmouseout = new Function("iconActive('out', 2)");
				}else if(i == 3){
					e_elem.src = e_elem.src.replace("on.gif","off.gif");
					e_elem.onmouseout = new Function("iconActive('out', 3)");
				}
			}
		}
	}
}
	
//検索結果画面からt=1のときに他のキャリアを選択した場合
function search_melody_carrier(carrier){
	var search_elem = window.location.search;
	
	var loc_sid = search_elem.indexOf("sid");
	var loc_sid_eq = search_elem.indexOf("=", loc_sid);
	var loc_sid_amp = search_elem.indexOf("&", loc_sid);
	if(loc_sid_amp != -1){
		var sid = search_elem.substring(loc_sid_eq+1, loc_sid_amp);
	}else{
		var sid = search_elem.substring(loc_sid_eq+1);
	}

	var loc_pid = search_elem.indexOf("pid");
	var loc_pid_eq = search_elem.indexOf("=", loc_pid);
	var loc_pid_amp = search_elem.indexOf("&", loc_pid);
	if(loc_pid_amp != -1){
		var pid = search_elem.substring(loc_pid_eq+1, loc_pid_amp);
	}else{
		var pid = search_elem.substring(loc_pid_eq+1);
	}

	window.location.href = root_path + "/pg/result.php?ca=" + carrier + "&sid=" + sid + "&pid=" + pid;

}

//詳細画面からt=1のときに他のキャリアを選択した場合
function detail_melody_carrier(carrier, fid){
	var search_elem = window.location.search;

	var loc_mid = search_elem.indexOf("mid");
	var loc_mid_eq = search_elem.indexOf("=", loc_mid);
	var loc_mid_amp = search_elem.indexOf("&", loc_mid);
	if(loc_mid_amp != -1){
		var mid = search_elem.substring(loc_mid_eq+1, loc_mid_amp);
	}else{
		var mid = search_elem.substring(loc_mid_eq+1);
	}

	var loc_sid = search_elem.indexOf("sid");
	var loc_sid_eq = search_elem.indexOf("=", loc_sid);
	var loc_sid_amp = search_elem.indexOf("&", loc_sid);
	if(loc_sid_amp != -1){
		var sid = search_elem.substring(loc_sid_eq+1, loc_sid_amp);
	}else{
		var sid = search_elem.substring(loc_sid_eq+1);
	}

	var loc_pid = search_elem.indexOf("pid");
	var loc_pid_eq = search_elem.indexOf("=", loc_pid);
	var loc_pid_amp = search_elem.indexOf("&", loc_pid);
	if(loc_pid_amp != -1){
		var pid = search_elem.substring(loc_pid_eq+1, loc_pid_amp);
	}else{
		var pid = search_elem.substring(loc_pid_eq+1);
	}

	window.location.href = root_path + "/pg/detail.php?ca=" + carrier + "&mid=" + mid + "&sid=" + sid + "&pid=" + pid + "&fid=" +fid;

}