
var MOverture = {
	/** 広告表示フラグ(true/false) */
	isEnable: true,
	/** TESTフラグ(true/false) */
	isTest: false,
	/** Partner ID */
	partnerId: 'mapion_jp_cat_ctxt',
	/** configパラメータ */
	config: '3402075060',
	/** コンテキストID(デフォルト) */
	ctxtId: 'test01',
	/** URL */
	adUrl: 'http://im.ov.yahoo.co.jp/js_flat/',
	/** 分析用の識別ID(デフォルト) */
	type: 'mapion',
	/** 広告取得件数(デフォルト) */
	count: 5,
	/** タイマーID */
	timerID: null,
	/** JSONリクエスト */
	jsonRequest: '',
	/** リトライ回数 */
	retryCount: 0,
	/** リトライMAX */
	retryMax: 20,
	/** リトライ間隔(ms) */
	retryInterval: 100,
	/** ID */
	id: '_MOvertureCMScript',
	/** タイトル */
	title: '<a href="http://ov.yahoo.co.jp/service/int/index.html" target="_blank" class="adblock_title">[PR]</a>',
	/** 広告を表示させるエレメントID(デフォルト)  */
	panel: new Array( 'adSide' ),
	/** パネルあたりの広告数(デフォルト) */
	adPerPanel: new Array( '5' ),

	/** encoding*/
	enc: null,
	/** デフォルトエンコード */
	default_encoding: 'euc-jp',

	/**
	 * 初期化処理
	 */
	init: function(){
		if( MOverture.isEnable == false ) return;

		// エンコードを指定
		if(MOverture.enc == null){
			MOverture.enc = MOverture.default_encoding;
		}

		// 呼び出しURL
//		var url = MOverture.adUrl + '?mkt=jp'
//			+ '&config=' + MOverture.config
		var url = MOverture.adUrl + ''
			+ '?source=' + MOverture.partnerId
			+ '&outputCharEnc=' + MOverture.enc
			+ '&ctxtId=' + (MOverture.isTest ? 'test01' : MOverture.ctxtId)
			+ '&type=' + MOverture.type
			+ '&maxCount=' + MOverture.count
			+ '&ctxtUrl=' + encodeURIComponent( location.protocol + '//' + location.host + location.pathname )
			+ Math.floor(Math.random() * 100000);
		
		// scriptタグを生成
		//MOverture.jsonRequest = new JSONscriptRequest( url,"EUC-JP" );
		//MOverture.jsonRequest.buildScriptTag( false );
		//MOverture.jsonRequest.addScriptTag();

		// scriptエレメント
		MOverture.retryCount
		if (MOverture.timerID != null) clearTimeout(MOverture.timerID);
		MOverture.timerID = null;
		var elScript = document.createElement('script');
		elScript.type = 'text/javascript';
		elScript.src = url;
		elScript.id = MOverture.id;
		elScript.charset = MOverture.enc;
		document.getElementsByTagName('head')[0].appendChild( elScript );
		
		MOverture.show();
	},

	/**
	 * 広告の表示処理
	 */
	show: function(){
		// 広告情報が読み込まれるまで待機
		if (typeof(zSr) == "undefined" || zSr == null) {
			MOverture.retryCount += 1;
			if( MOverture.retryCount > MOverture.retryMax ) return;
			timerID = setTimeout( MOverture.show, MOverture.retryInterval );
			return;
		}

		// 各パネルへ広告を表示
		var index = 6;
		var len = zSr.length/index-1;
		var num1,num2 = null;
		
		for( var p=0; p < MOverture.panel.length; p++ ){
			
			// ループ回数をセット
			var num = MOverture.set( p, len );
			num1 = num[0];
			num2 = num[1];
			
			var adStr = '<ul>';
			
			var adStrList = '';
			//for( var ad=0 ; index < zSr.length && ad < MOverture.adPerPanel; index+=6 ){
			for( var ad=num1; index<zSr.length && ad<num2; index+=6 ){
				var descr = zSr[index];			// listing description
				var unused1 = zSr[index+1];		// (ignore)
				var clickURL = zSr[index+2];	// listing link
				var title = zSr[index+3];		// listing title
				var sitehost = zSr[index+4];	// advertiserfs domain name
				var unused2 = zSr[index+5];		// (ignore)
				
				adStrList += '<li><a target="_blank" href="' + clickURL + '">'
					+ '<em class="ad_title" style="padding:0 0 0 16px;background:url(http://www.mapion.co.jp/adOverture/img/ico_arrow.gif) 0 1px no-repeat">' + title + '</em>'
					+ '<span class="ad_read" style="padding:4px 0 2px 16px;">' + descr + '</span>'
					+ '<span class="ad_url" style="padding:0 0 0 16px;">' + sitehost + '</span></a></li>';
				ad++;
			}
			adStr += adStrList + '</ul>';
			if (adStrList != '') {
				adStr += '<p class="adblock_title">' + MOverture.title + '</p>';
			}
			if( document.getElementById( MOverture.panel[p] ) ){
				document.getElementById( MOverture.panel[p] ).innerHTML = adStr;
			}
		}
		// 初期化
		MOverture.timerID=null;
		zSr=null;
		MOverture.retryCount=0;

		
		//スクリプトタグ削除
		var sctipttag = document.getElementById( MOverture.id );
		document.getElementsByTagName('head')[0].removeChild( sctipttag );
	},
	
	/**
	 * ループの回数をセット
	 */
	set: function( p, len ){
		
		// Overture表示エリア数
		switch( MOverture.panel.length ){
			
			case 0 : break;
			
			case 1 :
				// 「エリア1の表示数」が「検索結果件数」以上
				if( parseInt(MOverture.adPerPanel[0]) > len ){
					num1=0; num2=len;
				}else{
					num1=0; num2=MOverture.adPerPanel[p];
				}
			break;
			
			case 2 :
				// 「エリア1とエリア2の合計表示件数」
				var count_all = parseInt(MOverture.adPerPanel[0])+parseInt(MOverture.adPerPanel[1]);
				
				if( MOverture.count < count_all  ){
					// 「取得数」が「合計表示件数」未満
					if( MOverture.count <= parseInt(MOverture.adPerPanel[0]) ){
						// 「取得数」が「エリア1の表示数」以下
						switch( p ){
							case 0: num1=0; num2=MOverture.count; break;
							case 1: num1=0; num2=0; break;
						}
					}else{
						// 「取得数」が「エリア1の表示数」以上
						switch( p ){
							case 0: num1=0; num2 = MOverture.adPerPanel[p]; break;
							case 1: num1=MOverture.adPerPanel[p-1]; num2=count_all; break;
						}
					}
				
				}else if( MOverture.count >= count_all ){
					// 「取得数」が「合計表示件数」以内
					switch( p ){
						case 0: num1=0; num2=MOverture.adPerPanel[p]; break;
						case 1: num1=MOverture.adPerPanel[p-1]; num2=count_all; break;
					}
				}

			break;

			default :
				// 「エリア1の表示数」が「検索結果件数」以上
				if( parseInt(MOverture.adPerPanel[0]) > len ){
					num1=0; num2=len;
				}else{
					num1=0; num2=MOverture.adPerPanel[p];
				}
			break;
		}
		return num = new Array(num1,num2);
	}
};


