/**
 * ポータルヘッダメニューの初期化
 */
function portalHeaderInit(){
	// ボタンとメニューの組み合わせでコントローラを作成する。
	new TabControle($('button-shop'), $('channel-shop'));
	new TabControle($('button-bike'), $('channel-bike'));
	new TabControle($('button-commu'), $('channel-commu'));
}
var timeout;
var focus = '';
/**
 * タブを制御するクラスのようなもの。
 * @param button タブのボタン
 * @param menu ボタンに対応するメニュー
 */
function TabControle(button, menu) {
	var delay = 0.3;
	
	var identify = button.identify();
	var cls;
	
	if (identify == 'button-shop') cls = "shop";
	else if (identify == 'button-bike') cls = "bike";
	else if (identify == 'button-commu') cls = "comm";
	else return;
	
	// ボタンにイベント追加
	button.observe('mouseover', function() {
		focus = cls;
	    timeout = selectButton.delay(delay, button, cls, cls + 'top', menu);
	});
	button.observe('mousemove', function() {
		focus = cls;
	});
	button.observe('mouseout', function() {
	    focus  = '';
	    timeout = unSelectButton.delay(delay, button, cls + 'top', cls, menu);
	});
	// メニューにイベント追加
	menu.observe('mouseover', function() {
		focus = cls;
		timeout = selectButton.delay(delay, button, cls, cls + 'top', menu);
	});
	menu.observe('mousemove', function() {
		focus = cls;
	});
	menu.observe('mouseout', function() {
	    focus  = '';
	    timeout = unSelectButton.delay(delay, button, cls + 'top', cls, menu);
	});
};
/**
 * ボタンにマウスオーバーしたときの処理（遅延部分）
 * @param button ボタン
 * @param nomal ボタンが通常状態のときのCSSクラス名
 * @param selected ボタンが選択状態のときのCSSクラス名
 * @param menu メニュー
 */
function selectButton(button, nomal, selected, menu) {
	// すでに他のボタンにフォーカスが移っている場合は処理しない
	if (focus != nomal) return;

	// ボタンを選択状態にする（CSSクラス名の入れ替え）
	button.removeClassName(nomal);
	button.addClassName(selected);
	
    // メニューがかぶらないように、とりあえずすべてのメニューをかくす。
	$$('.channel-div').each(function(div){
		div.hide();
	});
    menu.show();
}
/**
 * ボタンからマウスアウトしたときの処理（遅延部分）
 * @param button ボタン
 * @param nomal ボタンが通常状態のときのCSSクラス名
 * @param selected ボタンが選択状態のときのCSSクラス名
 * @param menu メニュー
 */
function unSelectButton(button, selected, nomal, menu) {

	// すでに同じボタンにフォーカスが戻っている場合は処理しない
	if (focus == nomal) {
	    window.clearTimeout(timeout);
		return;
	}
	// ボタンを通常状態にする（CSSクラス名の入れ替え）
	button.removeClassName(selected);
	button.addClassName(nomal);
	
	if (focus != '') return;
	// どのボタンも選ばれていないとき
	
	// 他のメニューを消してポータルメニューを表示
	$$('.channel-div').each(function(div){
		div.hide();
	});
    $('channel-portal').show();
    focus  = '';
}
var focusLayer = false;
var viewLayer = false;
var timeoutLayer;
var timeoutLayer2;
/**
 * ヘッダメニューの初期化
 */
function headerInit(){
	var delay = 0.5;
	// ボタンにイベント追加
	$('button-shop').observe('mouseover', function() {
		timeoutLayer2 = selectLayer.delay(0.8);
	});
	$('button-shop').observe('mouseout', function() {
	    window.clearTimeout(timeoutLayer2);
		focusLayer = false;
		timeoutLayer = unSelectLayer.delay(delay);
	});
	$('layer').observe('mouseover', function() {
		timeoutLayer2 = selectLayer();
	});
	$('layer').observe('mouseout', function() {
	    window.clearTimeout(timeoutLayer2);
		focusLayer = false;
		timeoutLayer = unSelectLayer.delay(delay);
	});
}
/**
 * レイヤーらマウスオーバーしたときの処理
 */
function selectLayer() {
	focusLayer = true;
    window.clearTimeout(timeoutLayer);
    if (!viewLayer) {
//		$('layer').show();
		$('layer2').show().setOpacity(0.3);
		$('layer').visualEffect("SlideDown", {'duration':0.35});
		viewLayer = true;
    }
}
/**
 * レイヤーらマウスアウトしたときの処理（遅延部分）
 */
function unSelectLayer() {

	// すでに同じボタンにフォーカスが戻っている場合は処理しない
	if (focusLayer) {
	    window.clearTimeout(timeoutLayer);
		return;
	}
	$('layer').hide();
	$('layer2').hide();
	viewLayer = false;
}




var clicked = false;
var COOKIE_NAME = 'omikuji';
/**
 * おみくじボタンの初期化
 */
function omikujiInit(){
	var button = $('omikuji-switch');
	button.observe('mouseover', function() {
		$('omikuji-fukidasi').show();
		if (!clicked) {
			var oldtext = null;
    		clicked = true;
    		
			// cookieから前回のうらないを取得
            for (var i = 0; i < document.cookie.split('; ').length; i++) {
                var crumb = document.cookie.split('; ')[i].split('=');
                if (crumb[0] == COOKIE_NAME && crumb[1] != null) {
                	oldtext = crumb[1];
                    break;
                }
            }
			if (oldtext != null) {
				omikujiSet.delay(1.2, unescape(oldtext));
			} else {
				omikujiGet.delay(1.2);
			}
		}
	});
	button.observe('click', function(event) {
		event.stop();
	});
}
function omikujiSet(text) {
	$('omikuji-area').update(text);
}
/**
 * おみくじ取得
 */
function omikujiGet() {
	var area = $('omikuji-area');
    new Ajax.Request( 
        '/api/omikuji.json', 
        { 
            method: 'get', 
            requestHeaders:['If-Modified-Since', 'Thu, 01 Jun 1970 00:00:00 GMT'],	// IEでの強制キャッシュ回避処理
            
            onLoading: function(request) { 
            	// onLoadingはonSuccesより遅い可能性があるので、ここでは使用しない
            },
            onSuccess: function(request) { 
				var json = eval('(' + request.responseText + ')');             
				area.update(json.text);
				
				// cookieに保存
				var hostname = location.hostname;
				var dindex = hostname.indexOf('.');
				var domain;
				if (dindex == -1) domain = ''; 
				else domain = '; domain=' + hostname.substring(dindex + 1);
				
	            var date = new Date();	// 23:59:59に消滅
	            date.setHours(23);
	            date.setMinutes(59);
	            date.setSeconds(59);
	            var expires = '; expires=' + date.toGMTString();
	            var tmp = 'omikuji=' + escape(json.text) + expires + domain + '; path=/';
	            document.cookie = tmp;
            },
            onFailure: function(request) { 
				area.update('取得できませんでした');
            }
        } 
    ); 
	
}
/**
 * オーバーチュア広告取得
 */
function getOverture(site, elSet){
	if (elSet == null) return;
	
	var count = 0;
	for (j = 0; j < elSet.length; j++) {
	    var item = elSet[j];
		count += item.count;
	}
	var url = '/api/overture.json';
	var param = "site=" + site
			  + "&count=" + count
			  + "&page=" + encodeURIComponent(location.href);
    new Ajax.Request( 
            url, 
            { 
                method: 'get', 
                parameters: param ,
                requestHeaders:['If-Modified-Since', 'Thu, 01 Jun 1970 00:00:00 GMT'],	// IEでの強制キャッシュ回避処理
                
                onSuccess: function(request) { 
    				eval(request.responseText);
    				if (zSr != null && zSr.length > 6) {
    					// 広告が得られた
    					var pos = 0;
    					for (j = 0; j < elSet.length; j++) {
    					    var item = elSet[j];
    						var el = item.id;
    						var c = item.count;
    						var div = new Element('div').addClassName('ov-inner');
        					for (i = 6 + pos; i < 6 + pos + c * 6 ; i+= 6) {
        						// 広告をパース
        						if (i + 4 > zSr.length) break;
        						var text = zSr[i];
        						var url = zSr[i+2];
        						var title = zSr[i+3];
        						var corp = zSr[i+4];

        						// CSSで構成する
            					var dl = new Element('div').addClassName('ov-div');
        						var a = new Element('a', {'href': url, 'target': '_blank'}).addClassName('ov-link');
        						var dt = new Element('span').addClassName('ov-title').update(title);
        						var dd1 = new Element('span').addClassName('ov-text').update(text);
        						var dd2 = new Element('span').addClassName('ov-corp').update(corp);
        						dl.insert(a); 
        						a.insert(dt); 
        						a.insert(dd2); 
        						a.insert(dd1); 
        						div.insert(dl);
        					}
        					pos += (c * 6);
        					
    						var pr = new Element('span').addClassName('pr').update('インタレストマッチ - ');
    						var aboutLink = 'http://ov.yahoo.co.jp/service/int/index.html';
    						var prlink = new Element('a', {'href':aboutLink, 'target':'_blank'}).addClassName('ov-about').update('広告の掲載について');
    						pr.insert(prlink);
    						div.insert(pr);
        					$(el).insert(div);
    					}
    				}
                },
                onFailure: function(request) { 
                	//alert('miss');
                }
            } 
        );
}

