//use cookiemanager.js
var TabController = Class.create();
TabController.prototype = {
	cookieManager : null,
	element 	: null,
	name		: null,
	id			: null,
	isDefault	: true,
	/*
	 * HTTPヘッダのcacheがno-cacheの場合　（リロード、ブラウザバック）
	 * hidden項目のfromBrowserBackの値が書き換えられていた場合（ブラウザバック）
	 * タブの選択位置を以前開いていた状態にする
	 */
	initialize : function(name, cache, accept, post_id, item_id){
		this.element = document.getElementsByName("event_tab");
		this.cookieManager = new CookieManager();
		this.name = name;
		if ($("fromBrowserBack").value == 'true' || cache != 'null' || this.checkIEDefault(accept)) {
			this.isDefault = false;
		} else {
			$("fromBrowserBack").value = 'true';
		}
		if (this.isDefault) {
			this.clearCookie(name);
		}
		if (this.getCookie(name) != null) {
			this.id = this.getCookie(name);
		}
		if (typeof post_id != 'undefined' && post_id != null
    		&& typeof item_id != 'undefined' && item_id != null) {
			this.id = this.eventTabDefault(post_id, item_id);
		}
		if (typeof this.id == 'undefined' || this.id == null) {
			this.id = this.element.item(0).id;
		}
		this.switchTab($(this.id));
	},
	checkIEDefault : function (accept) {
		if((navigator.appName=="Microsoft Internet Explorer"
			|| navigator.userAgent.indexOf("MSIE")!=-1)
			&& accept == '*/*'){
			return true;
		}
		return false;
	},
	clearCookie : function (name) {
		this.cookieManager.clearCookie(name);
	},
	getCookie : function (name) {
		return this.cookieManager.getCookie(name);
	},
	setCookie : function (name, id) {
		this.cookieManager.setCookie(name, id);
	},
	switchTab : function (obj) {
		for(var i=0; i<this.element.length; i++) {
			if(obj.id == this.element.item(i).id) {
				$(obj.id).className = "on";
				$(obj.id+'_contents').style.display = "block";
				this.setCookie(this.name, obj.id);
			} else {
				$(this.element.item(i).id).className = "off";
				$(this.element.item(i).id+'_contents').style.display = "none";
			}
		}
		obj.blur();
	},
	// use @museum
	eventTabDefault : function (post_id, item_id) {
		if( post_id == "7" && item_id == "14")
			return 'museum_event';
	}
};

var mapDivCnt = new Object();
var mapDivObj = new Object();
var wait;
var interval;
var lockFade=false;
var mapFadeBtnName = {
	"1" : "gr_attentionbtn",
	"2" : "shopping_attentionbtn",
	"3" : "hotel_attentionbtn",
	"4" : "movie_attentionbtn",
	"5" : "concert_attentionbtn",
	"6" : "engeki_attentionbtn",
	"7" : "art_attentionbtn",
	"8" : "amu_attentionbtn",
	"9" : "beauty_attentionbtn",
	"10": "sports_attentionbtn",
	"11": "event_attentionbtn",
	"13": "school_attentionbtn",
	"14": "kurashi_attentionbtn"
};

function fadeInitialize(key, odekakeId, isRand) {
	if("undefined" == typeof isRand) {
		isRand=true;
	}
	mapDivObj[key] = document.getElementsByName(key)
	if (mapDivObj[key].length == 0) {
		lockFade=true;
		return;
	} else if (mapDivObj[key].length == 1) {
		mapDivObj[key].item(0).style.display="block";
		lockFade=true;
		return;
	} else {
		dispFadeButton(odekakeId);
	}
	mapDivCnt[key] = Math.floor(Math.random() * mapDivObj[key].length);
	if (isRand) {
		doDefaultRandom(mapDivObj[key], mapDivCnt[key]);
	}
}

function dispFadeButton(odekakeId) {
	var objBtn = document.getElementById("fadeButton");
	if (objBtn == null || objBtn.length == 0) {
		return;
	} else {
		objBtn.innerHTML += "<input onclick=\"backFade('fade_div');\" type=\"image\" alt=\"前へ\""
							 + "src=\"/img/2008cat/" + mapFadeBtnName[odekakeId] + "_L.gif\">";
		objBtn.innerHTML += "<input onclick=\"nextFade('fade_div');\" type=\"image\" alt=\"次へ\""
							 + "src=\"/img/2008cat/" + mapFadeBtnName[odekakeId] + "_R.gif\">";
	}
}

function fadeContents(key, waitTime) {
	if("undefined" != typeof waitTime) {
		wait = waitTime;
	} else {
		wait = 7000;
	}
	if (!lockFade) {
		interval = setInterval('nextFade("' + key + '")', wait);
	}
}

function nextFade(key, doClear) {
	if (lockFade) {
		return;
	}
	lockFade=true;
	Effect.Fade(mapDivObj[key].item(mapDivCnt[key]), { duration:1, from:1.0, to:0.0 });
	mapDivCnt[key]++;
	if (mapDivCnt[key] >= mapDivObj[key].length) mapDivCnt[key] = 0;
	Effect.Appear(mapDivObj[key].item(mapDivCnt[key]), { duration:1, from:0.0, to:1.0, delay:0.2
		,afterFinish: function(){clearFade(key);}});
}

function backFade(key) {
	if (lockFade) {
		return;
	}
	lockFade=true;
	Effect.Fade(mapDivObj[key].item(mapDivCnt[key]), { duration:1, from:1.0, to:0.0 });
	mapDivCnt[key]--;
	if (mapDivCnt[key] < 0) mapDivCnt[key] = mapDivObj[key].length -1;
	Effect.Appear(mapDivObj[key].item(mapDivCnt[key]), { duration:1, from:0.0, to:1.0, delay:0.2
		,afterFinish: function(){clearFade(key);}});
}

function clearFade(key) {
	clearInterval(interval);
	interval = setInterval('nextFade("' + key + '")', wait);
	lockFade=false;
}

function doDefaultRandom(obj, cnt) {
	for (var i=0; i<obj.length; i++) {
		if (i==cnt) {
			obj.item(cnt).style.display = "block";
		} else {
			obj.item(i).style.display = "none";
		}
	}
}

var lockInfo = false;

function changeInfo(pos) {

	if (lockInfo) return;
	lockInfo = true;

	var topObj = document.getElementById("voicetop");
	var imgObj = document.getElementsByName("voiceimg");
	var btmObj = document.getElementsByName("voicebottom");

	changeComment(pos, imgObj, btmObj);
	switch(pos) {
	case 0:
		topObj.className = "voicetopL";
		break;
	case 1:
		topObj.className = "voicetopC";
		break;
	case 2:
		topObj.className = "voicetopR";
		break;
	}
}

function changeComment(pos, imgObj, btmObj) {
	for (var i=0; i<imgObj.length; i++) {
		if(i==pos) {
			imgObj.item(pos).className="on";
			btmObj.item(pos).style.display="block";
		} else {
			imgObj.item(i).className="";
			btmObj.item(i).style.display="none";
		}
		if (0==i) {
			imgObj.item(0).className+=" top";
		}
	}
}

function lockReleace() {
	lockInfo = false;
}

function randomDisplay(tgtDiv, hdnDiv, maxView) {
	var hdnObj = document.getElementsByName(hdnDiv);
	if (hdnObj.length == 0) {
		return;
	}
	var arr = generateRandomNumbers(hdnObj.length);
	if("undefined" == typeof maxView) {
		maxView = hdnObj.length;
	}
	for(var i=0; i<maxView; i++) {
		var cls = "clearfix";
		if(i==0) {
			cls = "top " + cls;
		}
		var out = "<li class=\"" + cls + "\">" + hdnObj.item(arr[i]).innerHTML + "</li>";
		document.getElementById(tgtDiv).innerHTML += out;
	}
}

function generateRandomNumbers(num) {
	var arr = new Array(num);
	for(var i=0; i<arr.length; i++)	{
		arr[i] = i;
	}

	return shuffle(arr);
}

function shuffle(list) {
  var i = list.length;

  while (--i) {
    var j = Math.floor(Math.random() * (i + 1));
    if (i == j) continue;
    var k = list[i];
    list[i] = list[j];
    list[j] = k;
  }

  return list;
}

function setElementClassById(elem, value) {
	var obj = document.getElementById(elem);
    if(obj) {
    	obj.className = value;
    }
}

function setNameById(elem, value) {
	var obj = document.getElementById(elem);
    if(obj) {
    	obj.name = value;
    }
}

function toggleTabColor(obj,odekake_index) {
	var element = document.getElementsByName("search_item");
	var action;
	for(var i=0; i<element.length; i++) {
		if(obj.id == element[i].id) {
			setElementClassById(obj.id, "on");
			if(obj.id == "SPOT_NAME") {
                                if($("cate") != undefined){
                                  Element.remove("cate");
                                }
			        setNameById("keyword_input", "sname");
				//action = "search/" + odekake_index + "/spot/";
				action = odekake_index + "/spot/list/";
				document.keyword_form.method = "GET";
			} else if(obj.id == "EVENT_NAME") {
                                if($("cate") != undefined){
                                  Element.remove("cate");
                                }
			        setNameById("keyword_input", "ename");
				//action = "search/" + odekake_index+"/event/";
				action = odekake_index+"/event/list/";
				document.keyword_form.method = "GET";
			} else if(obj.id == "STATION_NAME") {
                                if($("cate") == undefined){
                                  make_hidden("cate",2,"keyword_form");
                                }
			        setNameById("keyword_input", "stn_name");
				action = "area/";
				document.keyword_form.method = "POST";
			} else if(obj.id == "TITLE_NAME") {
                                if($("cate") != undefined){
                                  Element.remove("cate");
                                }
			        setNameById("keyword_input", "title");
				//action = "search/" + odekake_index+"/title/";
				action = odekake_index+"/title/list/";
				document.keyword_form.method = "GET";
			} else if(obj.id == "ARTIST_NAME") {
			        setNameById("keyword_input", "artist");
				//action = "search/" + odekake_index+"/event/";
				action = odekake_index+"/event/list/";
				document.keyword_form.method = "GET";
			} else if(obj.id == "EVENT_PERFORMER_NAME") {
			        setNameById("keyword_input", "company");
				//action = "search/" + odekake_index+"/event/";
				action = odekake_index+"/event/list/";
				document.keyword_form.method = "GET";
			}
			document.keyword_form.action = 'http://' + SERVER_NAME + CONTEXTPATH + '/' + action;
		} else {
			setElementClassById(element[i].id, "off");
		}
	}
	obj.blur();
}

function toggleGourmetTabColor(obj,odekake_index) {
	var element = document.getElementsByName("search_item");
	var action;
	for(var i=0; i<element.length; i++) {
		if(obj.id == element[i].id) {
			setElementClassById(obj.id, "on");
			if(obj.id == "SPOT_NAME") {
                                if($("cate") != undefined){
                                  Element.remove("cate");
                                }
			        setNameById("keyword_input", "sname");
				//action = "search/" + odekake_index + "/spot";
				action = odekake_index + "/spot/list";
				document.keyword_form.method = "GET";
			} else if(obj.id == "STATION_NAME") {
			        setNameById("keyword_input", "stn_name");
                                if($("cate") == undefined){
                                  make_hidden("cate",2,"keyword_form");
                                }
				action = "area/";
				document.keyword_form.method = "POST";
			}
			document.keyword_form.action = 'http://' + SERVER_NAME + CONTEXTPATH + '/' + action;
		} else {
			setElementClassById(element[i].id, "off");
		}
	}
	obj.blur();
}

function initKeyword(event) {
	initKeywordMain(event,"キーワードを入力");
}
function initEventKeyword(event) {
	initKeywordMain(event,"イベント名でさがす");
}
function initKeywordMain(event,text) {
	var txtBox = document.getElementById('keyword_input');
	if(event.type == 'focus' || event.type == "click") {
		if(txtBox.value == text) {
			txtBox.value = '';
			setStyleById('keyword_input', "color:#000000");
		}
	} else if(event.type == 'blur' || event.type == 'load') {
		if( txtBox.value == "" ) { // NULL判定はこれでOK
			txtBox.value = text;
			setStyleById('keyword_input', "color:#666666");
		}
	}
}

function initAreaSelectBox(name) {
	var element = document.getElementsByName(name);
	if(element.length > 0) {
		var obj = element.item(0);
		obj.selectedIndex = 0;
	}
}


function switchTab(obj)
{
	var element = document.getElementsByName("event_tab");
	for(var i=0; i<element.length; i++) {
		if(obj.id == element.item(i).id){
			setElementClassById(obj.id, "on");
			setStyleById(obj.id+'_contents',"display:block;");
		} else {
			setElementClassById(element.item(i).id, "off");
			setStyleById(element.item(i).id+'_contents',"display:none;");
		}

	}
}

function setStyleById(elem, value) {
	var isIE = (document.documentElement.getAttribute("style") ==  document.documentElement.style);
	var obj = document.getElementById(elem);
	if(obj) {
		if(isIE){
			obj.style.cssText = value;
		} else {
			obj.setAttribute("style", value);
		}
    }
}


var gourmetBlog = {
	index: 0,
	item_num: 0,
	ul_width: 0,
	delta: 0,
	e1: {state:""},
	e2: {state:""},
	ul1: null,
	ul2: null,
	init: function (num){
		try{
			if(num < 5) return;
			num += 4 - (num % 4);
			this.item_num = 2*num;
			this.ul1 = $("g_ul1");
			this.ul2 = $("g_ul2");
			this.ul_width = Element.getDimensions(this.ul1).width;
			this.delta = Position.positionedOffset($("g_li4")).left;
			this.ul2.style.left = -this.ul_width + "px";
			$("g_prev_btn").onclick = function(){gourmetBlog.next(-1);};
			$("g_next_btn").onclick = function(){gourmetBlog.next(1);};
			this.e1.state = this.e2.state = "finished";
		}catch(e){ }
	},

	next: function (n){
		try{
			//prevent continuous calling
			if(this.e1.state != "finished" || this.e2.state != "finished") return;

			//move
			this.move($("g_ul1"),n);
			this.move($("g_ul2"),n);

			//change pos
			this.index = (this.index + 4*n + this.item_num) % this.item_num;
			pos = Position.cumulativeOffset($("g_mask")).left - Position.cumulativeOffset($("g_li" + this.index)).left;


			this.e1 = new Effect.Move( this.ul1, { x : pos, y : 0, mode : 'relative', duration: 0.5 } );
			this.e2 = new Effect.Move( this.ul2, { x : pos, y : 0, mode : 'relative', duration: 0.5 } );
		}catch(e){ }
	},

	move: function (e,n){
		l = Position.positionedOffset(e).left;

		o = ( e.id == "g_ul1" ? $("g_ul2") : $("g_ul1") )
		lo = Position.positionedOffset(o).left;
		//prev
	    if(n < 0 && l > 0 && this.ul_width - l < this.delta){
	    	e.style.left = (lo - this.ul_width) + "px";
		}
		//next
		else if(n > 0 && l < 0 && 2*this.ul_width + l < 2*this.delta){
	    	e.style.left = (lo + this.ul_width) + "px";
		}
	}
};


function searchSKantoArea(select, category, spotflg, searchurl) {

	var obj = document.getElementById(select);

	if(obj) {
		var options = obj.options;
		var val = options.item(obj.selectedIndex).value;
		var param = spotflg? "spot":"title";
		//var url = searchurl + "/" + category + "/" + param + "/" + "area-" +  val + "/";
		var url = searchurl   + category + "/" + param + "/list/" + "area-" +  val + "/";
		location.href = url;
	}
}


function searchKeyword() {
  var element = document.getElementsByName("search_item");
  for(var i=0; i<element.length; i++) {
    var obj = document.getElementById(element[i].id);
    if(obj.className == 'on') {
      if(obj.id == 'SPOT_NAME') {
        document.spotSearch.sname.value = document.getElementById('keyword_input').value;
        document.spotSearch.submit();
        return;
      }
      if(obj.id == 'EVENT_NAME') {
        document.eventSearch.ename.value = document.getElementById('keyword_input').value;
        document.eventSearch.submit();
        return;
      }
      if(obj.id == 'STATION_NAME') {
        document.stationSearch.stn_name.value = document.getElementById('keyword_input').value;
        document.stationSearch.submit();
        return;
      }
      if(obj.id == 'ARTIST_NAME') {
        document.artistSearch.artist.value = document.getElementById('keyword_input').value;
        document.artistSearch.submit();
        return;
      }
      if(obj.id == 'EVENT_PERFORMER_NAME') {
        document.performerSearch.company.value = document.getElementById('keyword_input').value;
        document.performerSearch.submit();
        return;
      }
      if(obj.id == 'TITLE_NAME') {
        document.titleSearch.title.value = document.getElementById('keyword_input').value;
        document.titleSearch.submit();
        return;
      }
    }
  }
}

function make_hidden( name, value, formname ){
    var q = document.createElement('input');
    q.type = 'hidden';
    q.name = name;
    q.id = name;
    q.value = value;
    if (formname){ document.forms[formname].appendChild(q); }
    else{ document.forms[0].appendChild(q); }
}

