/*
 *
/*--------------------------------------------------------------------------*/

var php = '/sys_include/php/ranking.php';

var box_id = 'prog_'; // 基本BOXID名
var page_box_id = box_id + 'page'; // ページ用BOXID名
var item_list = box_id + 'list';

var present_page = 1;
var spec_ac = "ac";
var spec_no = "";
var other_ac = "no ac";
var other_no = "no";
var tmp_parent = "_tmp_parent";
var tmp_child = "_tmp_child";
var parameter;
var myAgent = navigator.userAgent;
var ar = [];
var first_load = true;

//ADD toki 2008/11/11 AJAX高速化対応
var category_id;

//ADD toki 2008/11/12 バナー広告表示対応
var banner_node;
/*--------------------------------------------------------------------------*/

/*
 * ロード時の処理
 * param id サブカテゴリID
 * param date 過去のランキング日付
 */
//function loadRank(id){
function loadRank(id,date){

	//2009-05-25 add-start
	if(typeof(date) != 'undefined'){
		j$("#main").after("<input type=\"hidden\" name=\"date\" value=\"" + date + "\" />");
	}
	//2009-05-25 add-end

	// onload時にPHP側で保持しているセッション情報をクリア
	ranking_sessionclear();

	// PHPへKick
	//2009-05-25 mod
	//searchRank(id);
	searchRank(id,date);

	// メニュー生成
	//2009-05-25 mod
	//createMenu(id);
	createMenu(id,date);

	first_load = false;

	category_id = id; //ページ遷移用にカテゴリidを保持

	load();
}

/*--------------------------------------------------------------------------*/

/*
 * ページ遷移
 */
//2009-05-25 mod by sho
//function pageAction(target, page_length){
function pageAction(target, page_length,date){
	var id; // BOXID
	var prev;
	var next;
	var prev2;
	var next2;

	// 前へ
	if (target == 'prev') {
		target = parseInt(present_page) - 1;
	}

	// 次へ
	if (target == 'next') {
		target = parseInt(present_page) + 1;
	}

	//ADD toki 2008/11/11 AJAX高速化対応
	//遷移先ページ内容取得
	//2009-05-25 mod by sho
	//movePage(target);
	movePage(target,date);

	// 無理やりIDを指定して高速化
	for (var i = 1; i < page_length + 1; i++) {
		prev = parseInt(target) - 1;
		prev2 = parseInt(target) - 2;

		next = parseInt(target) + 1;
		next2 = parseInt(target) + 2;

		id = page_box_id + i;
		if (target == i) {
			//DELETE toki 2008/11/7 ページ単位取得により不要
			//openBlock(id);

			j$("#pager_header .active_" + target).hide();
			j$("#pager_header .nonactive_" + target).show();

			j$("#pager_footer .active_" + target).hide();
			j$("#pager_footer .nonactive_" + target).show();

			present_page = target;
		}
		else {
			//DELETE toki 2008/11/7 ページ単位取得により不要
			//closeBlock(id);
			j$("#pager_header .number a:not(.active_" + target + ")").hide();
			j$("#pager_header .number span:not(.nonactive_" + target + ")").hide();

			j$("#pager_footer .number a:not(.active_" + target + ")").hide();
			j$("#pager_footer .number span:not(.nonactive_" + target + ")").hide();
		}

		// 一つ前は表示
		j$("#pager_header .active_" + prev).show();
		j$("#pager_header .nonactive_" + prev).hide();

		j$("#pager_footer .active_" + prev).show();
		j$("#pager_footer .nonactive_" + prev).hide();

		// 一つ後は表示
		j$("#pager_header .active_" + next).show();
		j$("#pager_header .nonactive_" + next).hide();

		j$("#pager_footer .active_" + next).show();
		j$("#pager_footer .nonactive_" + next).hide();

		// 最初のページ
		if (target == 1) {
			j$("#pager_header .active_prev").hide();
			j$("#pager_header .nonactive_prev").show();

			j$("#pager_footer .active_prev").hide();
			j$("#pager_footer .nonactive_prev").show();

			j$("#pager_header .active_front").hide();
			j$("#pager_header .nonactive_front").show();

			j$("#pager_footer .active_front").hide();
			j$("#pager_footer .nonactive_front").show();

			// ２つ後まで表示
			j$("#pager_header .active_" + next2).show();
			j$("#pager_header .nonactive_" + next2).hide();

			j$("#pager_footer .active_" + next2).show();
			j$("#pager_footer .nonactive_" + next2).hide();
		}
		else {
			j$("#pager_header .active_prev").show();
			j$("#pager_header .nonactive_prev").hide();

			j$("#pager_footer .active_prev").show();
			j$("#pager_footer .nonactive_prev").hide();

			j$("#pager_header .active_front").show();
			j$("#pager_header .nonactive_front").hide();

			j$("#pager_footer .active_front").show();
			j$("#pager_footer .nonactive_front").hide();
		}

		// 最後のページ
		if (target == page_length) {
			j$("#pager_header .active_next").hide();
			j$("#pager_header .nonactive_next").show();

			j$("#pager_footer .active_next").hide();
			j$("#pager_footer .nonactive_next").show();

			j$("#pager_header .active_tail").hide();
			j$("#pager_header .nonactive_tail").show();

			j$("#pager_footer .active_tail").hide();
			j$("#pager_footer .nonactive_tail").show();

			// ２つ後まで表示
			j$("#pager_header .active_" + prev2).show();
			j$("#pager_header .nonactive_" + prev2).hide();

			j$("#pager_footer .active_" + prev2).show();
			j$("#pager_footer .nonactive_" + prev2).hide();
		}
		else {
			j$("#pager_header .active_next").show();
			j$("#pager_header .nonactive_next").hide();

			j$("#pager_footer .active_next").show();
			j$("#pager_footer .nonactive_next").hide();

			j$("#pager_header .active_tail").show();
			j$("#pager_header .nonactive_tail").hide();

			j$("#pager_footer .active_tail").show();
			j$("#pager_footer .nonactive_tail").hide();
		}


	}



	var successCallback = function(data){

	};
	var errorCallback = function(xml, status, e){
	};

	j$.ajax({
		'type': "POST",
		'url': php,
		'data': {
			'present_page': present_page,
			'mode': 'set_page_session',
			'date': date //2009-05-25 add by sho
		},
		'success': successCallback,
		'error': errorCallback
	});


	setLog(target);

}

function setLog(target){

	//	if (target != undefined) {
	//		alert("target:"+target);
	//	}

	if (parameter != undefined) {
		var ref = document.URL + "?" + parameter;
	}
	else {
		var ref = document.URL;
	}


	var item = $('setLog');
	Element.update(item, '<img src="../sys_include/php/ajaxlog.php?ref=' + ref + '">');
}


function openBlock(target){
	$(target).style.display = "block";
}

function closeBlock(target){
	$(target).style.display = "none";
}

/*--------------------------------------------------------------------------*/

/*
 * ランキング検索
 */
//function searchRank(id){
function searchRank(id,date){
	var url = document.URL
	if (url.indexOf('?', 0) > -1) {
		param = "&" + url.split('?')[1];
		var params = 'mode=search&id=' + id + param;
	}
	else {
		var params = 'mode=search&id=' + id;
	}

	if(date != ''){
		params = params + '&date=' + date;
	}

	var maker = url.match(/maker_[0-9]+=1/ig);
	if (maker) {
		setTimeout("openBlock('maker_cont')", 2000);
	}
	var spec = url.match(/spec_[0-9]+=1/ig);
	if (spec) {
		setTimeout("openBlock('spec_cont')", 2000);
	}
	var price = url.match(/price_[0-9]+=1/ig);
	if (price) {
		setTimeout("openBlock('price_cont')", 2000);
	}

	t1 = new Date();
	new Ajax.Request(php, {
		method: 'post',
		parameters: params,
		onComplete: rankResponse,
		asynchronous: false, // 同期：先にボタンを描画されないように
		onSuccess: showSuccess
	});
}

/**
 * 指定したページのデータを取得し再描画
 * @param {Number} page	取得したいページ番号
 */
//2009-05-25 mod by sho
//function movePage(page){
function movePage(page,date){
	var url = document.URL
	if (url.indexOf('?', 0) > -1) {
		param = "&" + url.split('?')[1];
		var params = 'mode=search&id=' + category_id + "&page=" + page + param;
	}
	else {
		var params = 'mode=search&id=' + category_id + "&page=" + page;
	}

	//2009-05-25 add
	//params = params + 'date=' + date;

	var maker = url.match(/maker_[0-9]+=1/ig);
	if (maker) {
		setTimeout("openBlock('maker_cont')", 2000);
	}
	var spec = url.match(/spec_[0-9]+=1/ig);
	if (spec) {
		setTimeout("openBlock('spec_cont')", 2000);
	}
	var price = url.match(/price_[0-9]+=1/ig);
	if (price) {
		setTimeout("openBlock('price_cont')", 2000);
	}

	t1 = new Date();
	new Ajax.Request(php, {
		method: 'post',
		parameters: params,
		onComplete: rankResponse,
		asynchronous: false, // 同期：先にボタンを描画されないように
		onSuccess: showSuccess
	});
}

/**
 * JSONデータ取得完了後の処理
 * @param {Object} httpObj HTTPレスポンス
 */
function rankResponse(httpObj){

	var json = eval("(" + httpObj.responseText + ")");

	//ADD toki 2008/11/12 バナー広告表示対応
	if (first_load) {
		//初回表示時はバナーDIVをグローバル変数に保存
		bannerNode = $("ranking_banner");
	}
	else {
		//初回以外はバナーDIVを退避
		$("ranking_banner_container").appendChild(bannerNode);
	}
	//ADD toki 2008/11/12 END

	//MOD toki 2008/11/11 AJAX高速化対応
	var newHTML = getRankingHTML(json.ranking_data);

	// 現在のページを保持
	present_page = json.present_page;

	//IE6でimageが読み込まれない問題があるため描画を後回しにする
	setTimeout(function(){
		// 検索結果表示
		j$('#' + item_list).html(json.html);
		j$('#pager_header').html(json.pager);
		j$('#pager_footer').html(json.pager);

		//ADD toki 2008/11/11 高速化対応
		if (!$("ranking_main")) {
			//1件もない時はranking_mainがないので強制的に追加
			j$('#' + item_list).append("<div id= " + page_box_id + present_page + "><div id='ranking_main' /></div>")
		}
		j$('#ranking_main').html(newHTML);

		//ADD toki 2008/11/12 バナー広告表示対応
		//バナーを所定の場所に移動
		$("ranking_banner_target").appendChild(bannerNode);
		//ADD toki 2008/11/12 END

		// デフォルトを開いておく
		openBlock(page_box_id + present_page);

		setMainCSS()

		setLog();

	}, 1);



}

function showSuccess(){
	//$("msg").innerHTML = "OK";
}

/*--------------------------------------------------------------------------*/


//----------------------------------
//
//	  メニュー取得
//
//----------------------------------

//2009-05-25 mod
//function createMenu(id){
function createMenu(id,date){

	var successCallback = function(data){
		var json = eval("(" + data + ")");


		// 呼び出しが成功した時のHTML作成
		if (json.use != "") {
			j$("#use_cont").html(json.use);
		}
		else {
			j$("#chooseUsage").hide();
		}

		if (json.maker != "") {
			j$("#maker_cont").html(json.maker);
		}
		else {
			j$("#chooseMaker").hide();
		}

		if (json.spec != "") {
			j$("#spec_cont dl").html(json.spec);
		}
		else {
			j$("#chooseSpec").hide();
		}

		if (json.price != "") {
			j$("#price_cont").html(json.price);
		}
		else {
			j$("#choosePrice").hide();
		}

		if ($("currentitem")) {
			if (json.price_share != "") {
				j$("#share_cont").html(jprice_share);
			}
			else {
				j$("#share_cont").html();
			}
		}

		//検索条件セッションを取得
		getSearch();

		setSideCSS()

	};
	var errorCallback = function(xml, status, e){
		//		alert('error');
	};

	j$.ajax({
		'type': "POST",
		'url': php,
		'data': {
			'id': id,
			'date': date,
			'mode': 'menu'
		},
		'success': successCallback,
		'error': errorCallback
	});

	//  画面遷移をキャンセル。
	return false;
}


//----------------------------------
//
//	  検索項目受信
//
//----------------------------------
function getSearch(){
	// パラメータを作成
	parameter = "mode=get_search";

	// Ajax.Requestオブジェクトを作成
	var myAjax = new Ajax.Updater('', // 差し込む要素
 php, // 呼び出し先のURL
	{
		method: 'post', // メソッド
		postBody: parameter, // ポストされるボディ部
		onSuccess: getSearchSuccess // 呼び出しが成功した時に呼び出されるメソッド
	});
}

function getSearchSuccess(xmlhttp, json){
	// 呼び出しが成功した時の処理
	if (json != "") {
		for (var key in json) {
			if (json[key] == "0") {
				if (key.indexOf('spec') == -1) {
					$(key).className = other_no;
				}
				else {
					$(key).className = spec_no;
				}
			}
			else {
				if (key.indexOf('spec') == -1) {
					j$('input[@name=' + key + ']').get(0).checked = true;
					$(key).className = other_ac;
				}
				else {
					j$('input[@name=' + key + ']').get(0).checked = true;
					$(key).className = spec_ac;
					j$('input[@name=' + key + ']').parent().parent().parent().parent().parent().parent().parent().prev().toggleClass('open');

					j$('input[@name=' + key + ']').parent().parent().parent().parent().parent().parent().show();
				}
				//DELETE toki 2008/11/7 高速化のため除去
				//active_make($(key)); //アクティブメニュー作成
			}
		}
	}

}

function active_make(node_name){
	var str_node = node_name.id;
	var cnt = str_node.indexOf('_', 0);
	var main_name = str_node.substring(0, cnt);
	var tmp_area = main_name + tmp_child;

	/*
	 if(main_name != "use"){
	 //tmpの子がない場合は作成
	 if(!($(main_name+tmp_parent).hasChildNodes())){
	 var ulTag = document.createElement("ul");
	 ulTag.id = main_name+tmp_child;
	 $(main_name+tmp_parent).appendChild(ulTag);
	 }
	 //tmpにアクティブを作成準備
	 var clone = node_name.cloneNode(true);
	 clone.id = node_name.id+"_tmp";
	 clone.className = other_ac;
	 //追加
	 if($(tmp_area).childNodes.length > 0){
	 var ary_tmp_cnt = 0;
	 //重複チェック
	 for(var i=0; i<$(tmp_area).childNodes.length;i++){
	 if($(tmp_area).childNodes.item(i).id == clone.id){
	 ary_tmp_cnt++;
	 }
	 }
	 if(ary_tmp_cnt == 0){
	 $(tmp_area).appendChild(clone);
	 }
	 //新規作成
	 }else{
	 $(tmp_area).appendChild(clone);
	 }
	 }
	 */
}

//----------------------------------
//
//	  アクティブメニュー削除
//
//----------------------------------
function active_del(node_name){

	var str_node = $(node_name).id;
	var tmp_node = $(node_name).id + "_tmp";
	var cnt = str_node.indexOf('_', 0);
	var main_name = str_node.substring(0, cnt);
	var tmp_area = main_name + tmp_child;
	//クリックされた項目を削除
	if (main_name != "use") {
		if ($(main_name + tmp_parent).hasChildNodes()) {
			if ($(tmp_area).hasChildNodes()) {
				$(tmp_area).removeChild($(tmp_node));
			}

			//項目がまったくない場合は要素削除
			if (!($(tmp_area).hasChildNodes())) {
				while ($(main_name + tmp_parent).hasChildNodes()) {
					$(main_name + tmp_parent).removeChild($(main_name + tmp_parent).firstChild);
				}
			}
		}
	}
}

//----------------------------------
//
//	  メニュー制御
//
//----------------------------------

function add_toggle(elem){
	if (elem.id != "use") {
		var target = elem.id + '_cont';//開閉するエリア
		var tmp_area = elem.id + tmp_child;//tmpエリア
		////Effect.BlindUp(target,{duration:0.0});//サイトアクセス時に閉じる速度（1.0→１秒）
		var func = function(){
			//			Effect.toggle(target,'BLIND',{duration:0.0});//クリック時に開閉する速度
			//			Effect.toggle(target,'blind',{duration:0.5});//クリック時に開閉する速度
			//			Effect.toggle(target,'slide', {scaleX: 'true', scaleY: 'true;', scaleContent: false});//クリック時に開閉する速度
			//			Effect.toggle(target,'slide');//クリック時に開閉する速度
			////Effect.toggle(target, 'appear',{duration:0.0});

			//メニューを閉じたときにアクティブメニュー作成
			if ($(target).style.display != "none") {
				//DELETE toki 2008/11/7 高速化のため除去
				/*
				 var ary_list = $(target).getElementsByTagName('li');//tt要素を全て抽出
				 for (var i = 0; i < ary_list.length; i++) {
				 if ((ary_list[i].className == other_ac) || (ary_list[i].className == spec_ac)) {
				 active_make(ary_list[i]);
				 }
				 }
				 */
			}
			//メニューを開いたときにアクティブメニュー削除
			else {
				while ($(elem.id + tmp_parent).hasChildNodes()) {
					$(elem.id + tmp_parent).removeChild($(elem.id + tmp_parent).firstChild);
				}
			}
		};
		Event.observe(elem, 'click', func);//onClickイベントハンドラ
	}
}

function init(){
	var catnavi = $('catnavi');
	var list = catnavi.getElementsByTagName('tt');//tt要素を全て抽出
	for (var i = 0; i < list.length; i++) {
		add_toggle(list[i]);
	}
}

Event.observe(window, 'load', init);//ページロード後にinit関数を実行
//----------------------------------
//
//	  検索項目送信
//
//----------------------------------

//2009-05-25 mod
//function post_id(post_id){
function post_id(post_id,date){
	var post_flg = 0;
	// 色変更
	var hoge = '#' + post_id;
	j$('input[@name=' + post_id + ']').each(function(){
		if (this.checked == true) {
			if (post_id.indexOf('spec') == -1) {
				j$(hoge).addClass(other_ac);
			}
			else {
				j$(hoge).addClass(spec_ac);
			}
			post_flg = 1;
		}

		if (this.checked == false) {

			if (post_id.indexOf('spec') == -1) {
				j$(hoge).removeClass(other_ac);
			}
			else {
				j$(hoge).removeClass(spec_ac);
			}

			post_flg = 0;
			//tmpエリア削除
			active_del(post_id);
		}

	});

	parameter = "mode=search" + "&" +
	//2009-05-25 add-start
	"date="
	+ date
	+ "&" +
	//2009-05-25 add-end
	post_id +
	"=" +
	post_flg;

	j$('#' + item_list).html('<div style="text-align:center; margin-top:150%;"><img src="/category/images/ranking_loader.gif" /></div>');

	// Ajax.Requestオブジェクトを作成
	var myAjax = new Ajax.Updater('', // 差し込む要素
 php, // 呼び出し先のURL
	{
		method: 'post', // メソッド
		postBody: parameter, // ポストされるボディ部
		onSuccess: rankResponse // 呼び出しが成功した時に呼び出されるメソッド
	});
}

//----------------------------------
//
//	  価格選択処理
//
//----------------------------------
function post_share(id){
	//DELETE toki 2008/11/7 高速化のため除去
	/*
	 //メニューが展開されている場合のみアクティブメニューを作成
	 if ($("price_cont").style.display == "none") {
	 active_make($(id));
	 }
	 */
	post_id(id, 1);
}

// 2007-10-17 add ogasawara
/*
 * ランキング用PHPセッション情報のクリア
 */
function ranking_sessionclear(){
	param = "?mode=sessionclear&url=" + document.URL;

	new Ajax.Request(php, {
		method: 'post',
		parameters: param,
		asynchronous: false // 先に検索がかかるとマズイので同期
	});
}

// 2007-10-17 add ogasawara

//----------------------------------
//
//	  左サイドCSS
//
//----------------------------------
function setSideCSS(){

	// [スタイル制御]ランキングページナビゲーション
	j$('.rankingArea #rankingNavi #chooseUsage li,.rankingArea #rankingNavi #chooseMaker li,.rankingArea #rankingNavi #spec_cont ul li,.rankingArea #rankingNavi #price_cont li').hover(function(){
		j$(this).addClass('hover');
	}, function(){
		j$(this).removeClass('hover');
	});


}

//----------------------------------
//
//	  ランキングCSS
//
//----------------------------------
function setMainCSS(){
	// [スタイル制御]ランキングページメイン部分
	j$('#ranking :checkbox').click(function(){
		j$(this).parent().parent().parent().parent().parent().toggleClass('ac');
	});
	j$('#ranking :checked').each(function(){
		j$(this).parent().parent().parent().parent().parent().addClass('ac');
	});
	j$('#ranking .section').hover(function(){
		j$(this).addClass('hover');
	}, function(){
		j$(this).removeClass('hover');
	});
}

//----------------------------------
//
//	  メニュー開閉
//
//----------------------------------
function toggleMenu(elem){
	var elem = '#' + elem + "_cont";

	j$(elem).toggle();

	j$(elem).parent().prev().toggleClass('open');//normal
	j$(elem).prev().toggleClass('open');//spec親
}

//----------------------------------
//
//	  CSS切り替え
//
//----------------------------------
function load(){
	var img=GetCookie("IMG");
	var css=GetCookie("CSS");

	if(img=="" && img=="m"){
		img=imgfiles[0];
		document.middle.src="/common/images/ico/ico_header_medium_on.gif";
		document.small.src="/common/images/ico/ico_header_small_off.gif";
		document.big.src="/common/images/ico/ico_header_large_off.gif";
	}
	if(img=="s"){
		imgfiles[2]="s";
		document.small.src="/common/images/ico/ico_header_small_on.gif";
		document.middle.src="/common/images/ico/ico_header_medium_off.gif";
		document.big.src="/common/images/ico/ico_header_large_off.gif";
	}
	if(img=="l"){
		imgfiles[1]="l";
		document.big.src="/common/images/ico/ico_header_large_on.gif";
		document.middle.src="/common/images/ico/ico_header_medium_off.gif";
		document.small.src="/common/images/ico/ico_header_small_off.gif";
	}

}


