function createXMLHttpRequest() {
	var req;
	
	if ( window.XMLHttpRequest && !window.ActiveXObject ) {
		try {
			req = new XMLHttpRequest();
		} catch ( e ) {
			req = null;
		}
	} else if ( window.ActiveXObject ) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch ( e ) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch ( e ) {
				req = null;
			}
		}
	}
	
	return req;
}


function read_post_fav( id_csv ) {
	var req = createXMLHttpRequest();
	
	if ( req ) {
		var param = "id=" + id_csv;
		
		req.onreadystatechange = function() {
			switch ( req.readyState ) {
				case 1: // Open
				case 2: // Send
				case 3: //Receiving
					break;
				case 4: //Loaded
					if ( req.status == 200 ) {
						var res = getParamHash( req.responseText );
						var values = {};
						
						if ( res.status == "ok") {
							var num = parseInt( res.num );
							for ( var i = 1; i <= num; ++i ) {
								values["post" + res["i" + i ] ] = true;
							}
						}
						
						var id_arr = id_csv.split(",");
						var id_len = id_arr.length;
						
						for ( var i = 0; i < id_len; ++i ) {
							var id = id_arr[i];
							var a_arr = document.getElementsByName("fav_" + id );
							var img_arr = document.getElementsByName("favimg_" + id );
							
							if ( values["post" + id ] ) {
								setPostFavDel( a_arr, img_arr, id );
							} else {
								setPostFavAdd( a_arr, img_arr, id );
							}
						}
					}
			}
		}
		
		req.open("POST", "/post_fav_read.php", true );
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send( param );
	}
}




function add_post_fav( id ) {
	var req = createXMLHttpRequest();
	
	if ( req ) {
		var a_arr = document.getElementsByName("fav_" + id );
		var img_arr = document.getElementsByName("favimg_" + id );
		var param = "id=" + id;
		
		for ( var i = 0; i < img_arr.length; i++ ) {
			var a = a_arr[i];
			var img = img_arr[i];
			
			img.src = "/img/loading.gif";
			img.alt = "読み込み中";
			
			a.title = img.alt;
			a.onclick = function() { return false; }
		}
		
		req.onreadystatechange = function() {
			switch ( req.readyState ) {
				case 1: // Open
				case 2: // Send
				case 3: //Receiving
					break;
				case 4: //Loaded
					if ( req.status == 200 ) {
						var res = getParamHash( req.responseText );
						
						if ( res.status == "ok") {
							setPostFavDel( a_arr, img_arr, id );
						} else {
							setPostFavAdd( a_arr, img_arr, id );
							
							if ( res.status == "A02") {
								alert("自分の作品はお気に入りに追加できません");
							} else if ( res.status == "A04") {
								alert("すでにお気に入りに追加されています");
							} else {
								alert("システムエラーにより処理を中断しました");
							}
						}
					} else {
						alert("システムエラーにより処理を中断しました");
						
						setPostFavAdd( a_arr, img_arr, id );
					}
			}
		}
		
		req.open("POST", "/post_fav_add.php", true );
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send( param );
	}
}



function del_post_fav( id ) {
	var req = createXMLHttpRequest();
	
	if ( req ) {
		var a_arr = document.getElementsByName("fav_" + id );
		var img_arr = document.getElementsByName("favimg_" + id );
		var param = "id=" + id;
		
		for ( var i = 0; i < img_arr.length; i++ ) {
			var a = a_arr[i];
			var img = img_arr[i];
			
			img.src = "/img/loading.gif";
			img.alt = "読み込み中";
			
			a.title = img.alt;
			a.onclick = function() { return false; }
		}
		
		req.onreadystatechange = function() {
			switch ( req.readyState ) {
				case 1: // Open
				case 2: // Send
				case 3: //Receiving
					break;
				case 4: //Loaded
					if ( req.status == 200 ) {
						var res = getParamHash( req.responseText );
						
						if ( res.status == "ok") {
							setPostFavAdd( a_arr, img_arr, id );
						} else {
							alert("システムエラーにより処理を中断しました");
							
							setPostFavDel( a_arr, img_arr, id );
						}
					} else {
						alert("システムエラーにより処理を中断しました");
						
						setPostFavDel( a_arr, img_arr, id );
					}
			}
		}
		
		req.open("POST", "/post_fav_del.php", true );
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send( param );
	}
}


function setPostFavAdd( a_arr, img_arr, id ) {
	for ( var i = 0; i < a_arr.length; i++ ) {
		var a = a_arr[i];
		var img = img_arr[i];
		
		img.src = "/img/icon_fav_add.gif";
		img.alt = "お気に入りに追加";
		
		a.title = img.alt;
		a.onclick = function() {
			void(0); add_post_fav( id );
		}
	}
}



function setPostFavDel( a_arr, img_arr, id ) {
	for ( var i = 0; i < a_arr.length; i++ ) {
		var a = a_arr[i];
		var img = img_arr[i];
		
		img.src = "/img/icon_fav.gif";
		img.alt = "お気に入りから外す";
		
		a.title = img.alt;
		a.onclick = function() {
			void(0); del_post_fav( id );
		}
	}
}














function read_skeb_fav( id_csv ) {
	var req = createXMLHttpRequest();
	
	if ( req ) {
		var param = "id=" + id_csv;
		
		req.onreadystatechange = function() {
			switch ( req.readyState ) {
				case 1: // Open
				case 2: // Send
				case 3: //Receiving
					break;
				case 4: //Loaded
					if ( req.status == 200 ) {
						var res = getParamHash( req.responseText );
						var values = {};
						
						if ( res.status == "ok") {
							var num = parseInt( res.num );
							for ( var i = 1; i <= num; ++i ) {
								values["skeb" + res["i" + i ] ] = true;
							}
						}
						
						var id_arr = id_csv.split(",");
						var id_len = id_arr.length;
						
						for ( var i = 0; i < id_len; ++i ) {
							var id = id_arr[i];
							var a_arr = document.getElementsByName("skeb_fav_" + id );
							var img_arr = document.getElementsByName("skeb_favimg_" + id );
							
							if ( values["skeb" + id ] ) {
								setSkebFavDel( a_arr, img_arr, id );
							} else {
								setSkebFavAdd( a_arr, img_arr, id );
							}
						}
					}
			}
		}
		
		req.open("POST", "/skeb/post_fav_read.php", true );
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send( param );
	}
}




function add_skeb_fav( id ) {
	var req = createXMLHttpRequest();
	
	if ( req ) {
		var a_arr = document.getElementsByName("skeb_fav_" + id );
		var img_arr = document.getElementsByName("skeb_favimg_" + id );
		var param = "id=" + id;
		
		for ( var i = 0; i < img_arr.length; i++ ) {
			var a = a_arr[i];
			var img = img_arr[i];
			
			img.src = "/img/loading.gif";
			img.alt = "読み込み中";
			
			a.title = img.alt;
			a.onclick = function() { return false; }
		}
		
		
		
		req.onreadystatechange = function() {
			switch ( req.readyState ) {
				case 1: // Open
				case 2: // Send
				case 3: //Receiving
					break;
				case 4: //Loaded
					if ( req.status == 200 ) {
						var res = getParamHash( req.responseText );
						
						if ( res.status == "ok") {
							setSkebFavDel( a_arr, img_arr, id );
						} else {
							setSkebFavAdd( a_arr, img_arr, id );
							
							if ( res.status == "A02") {
								alert("自分の作品はお気に入りに追加できません");
							} else if ( res.status == "A04") {
								alert("すでにお気に入りに追加されています");
							} else {
								alert("システムエラーにより処理を中断しました");
							}
						}
					} else {
						alert("システムエラーにより処理を中断しました");
						
						setSkebFavAdd( a_arr, img_arr, id );
					}
			}
		}
		
		req.open("POST", "/skeb/post_fav_add.php", true );
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send( param );
	}
}



function del_skeb_fav( id ) {
	var req = createXMLHttpRequest();
	
	if ( req ) {
		var a_arr = document.getElementsByName("skeb_fav_" + id );
		var img_arr = document.getElementsByName("skeb_favimg_" + id );
		var param = "id=" + id;
		
		for ( var i = 0; i < img_arr.length; i++ ) {
			var a = a_arr[i];
			var img = img_arr[i];
			
			img.src = "/img/loading.gif";
			img.alt = "読み込み中";
			
			a.title = img.alt;
			a.onclick = function() { return false; }
		}
		
		req.onreadystatechange = function() {
			switch ( req.readyState ) {
				case 1: // Open
				case 2: // Send
				case 3: //Receiving
					break;
				case 4: //Loaded
					if ( req.status == 200 ) {
						var res = getParamHash( req.responseText );
						
						if ( res.status == "ok") {
							setSkebFavAdd( a_arr, img_arr, id );
						} else {
							alert("システムエラーにより処理を中断しました");
							
							setSkebFavDel( a_arr, img_arr, id );
						}
					} else {
						alert("システムエラーにより処理を中断しました");
						
						setSkebFavDel( a_arr, img_arr, id );
					}
			}
		}
		
		req.open("POST", "/skeb/post_fav_del.php", true );
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send( param );
	}
}



function setSkebFavAdd( a_arr, img_arr, id ) {
	for ( var i = 0; i < a_arr.length; i++ ) {
		var a = a_arr[i];
		var img = img_arr[i];
		
		img.src = "/img/icon_fav_add.gif";
		img.alt = "お気に入りに追加";
		
		a.title = img.alt;
		a.onclick = function() {
			void(0); add_skeb_fav( id );
		}
	}
}



function setSkebFavDel( a_arr, img_arr, id ) {
	for ( var i = 0; i < a_arr.length; i++ ) {
		var a = a_arr[i];
		var img = img_arr[i];
		
		img.src = "/img/icon_fav.gif";
		img.alt = "お気に入りから外す";
		
		a.title = img.alt;
		a.onclick = function() {
			void(0); del_skeb_fav( id );
		}
	}
}



function getParamHash( str ) {
	var hash = {};
	
	if ( typeof( str ) == 'undefined') {
		return hash;
	}
	
	str = str.split('&');
	for ( var i = 0; i < str.length; i++ ) {
		var item = str[i].split("=");
		
		if ( item[0] != '') {
			hash[ item[0] ] = typeof( item[1] ) == 'undefined' ? true : decodeURIComponent( item[1] );
		}
	}
	
	return hash;
}
