var loadParams;
var viewParams;


/**
 * Overtureから広告(配列)をロードし、表示します。
 */
function loadAndViewListings() {
	try {
		if (loadParams != null && loadParams.length > 0) {
			LoadListings(loadParams[0], loadParams[1], loadParams[2]);
			window.onload = function () {
				var i;
				var nAdIndex	= 0;
				for (i = 0; i < viewParams.length; i++) {
					nAdIndex = WriteListingsWithIndex(viewParams[i][0], viewParams[i][1], viewParams[i][2], nAdIndex);
				}
			}
		}
	}
	catch (e) { alert(e.message); };
}


/**
 * Overtureにアクセスし「zSr[]」を取得します。
 *
 * strCtxtId       : 
 * strCategoryName : デフォルトカテゴリー名 (フィラー)
 * nMaxCount       : 最大表示件数
 */
function LoadListings(strCtxtId, strCategoryName, nMaxCount) {
	var strOvUrl =
			'http://cm.jp.gmo.overture.com/js_flat_1_0/' +
			'?config=1647805522' +
			'&source=gmo_jp_point_cat_ctxt' +
			'&mkt=jp' +
			'&keywordCharEnc=euc-jp' +
			'&outputCharEnc=euc-jp' +
			'&ctxtId=' + strCtxtId +
			'&ctxtCat=' + strCategoryName +
			'&maxCount=' + nMaxCount;


	var strOvScript = '<script type="text/javascript" language="javascript" SRC="' + strOvUrl + '"></script>';

	document.write(strOvScript);
}


/**
 * Overture広告を表示します。
 * (この関数はonloadイベントによって呼び出されるように実装します)
 *
 * divId : 置換したいDIVオブジェクト
 * nStartIndex : 表示を開始する広告のインデックス
 * nEndIndex   : 表示を終了する広告のインデックス
 */
function WriteListingsWithIndex(divId, nStartIndex, nEndIndex, nAdIndex) {
	var strOutputSource='';
	var i = 6;	// 1広告あたりのカラム数
	while (i < zSr.length) {
		var descr    = zSr[i++]; // listing description
		var unused1  = zSr[i++]; // (ignore)
		var clickURL = zSr[i++]; // listing link
		var title    = zSr[i++]; // listing title
		var sitehost = zSr[i++]; // advertisers domain name
		var unused2  = zSr[i++]; // (ignore)

		if ( (nStartIndex <= ((i-6)/6)) && (((i-6)/6) <= nEndIndex) ) {
			var strOnclick	= 'clickOvFunc(' + nAdIndex + ')';
			strOutputSource += '<div id="pointOV">';
			strOutputSource += '<a href=' + clickURL + ' target="_blank" onclick="' + strOnclick + '">';
			strOutputSource += '<p id="ovtitle_' + nAdIndex + '" class="ovtitle">' + title + '</p><p id="ovurl_' + nAdIndex + '" class="ovurl">' + sitehost + '</p>';
			strOutputSource += '<p id="ovover_' + nAdIndex + '" class="ovover">' + descr + '</p>';
			/*strOutputSource += '<p id="ovurl_' + nAdIndex + '" class="ovurl">' + sitehost + '</p>';*/
			strOutputSource += '</a>';
			strOutputSource += '</div>';

			nAdIndex++;
		}
	}

	document.getElementById(divId).innerHTML=strOutputSource;

	return nAdIndex;
}


function clickOvFunc(nIndex) {
	var strActionUrl	= '/ptu/overture/store_click_info.do' +
			'?url=' + document.getElementById('ovurl_' + nIndex).innerText +
			'&title=' + encodeURL(document.getElementById('ovtitle_' + nIndex).innerHTML).split('%').join('^^');
	var httpObj	= null;
	try {
		httpObj	= new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch (e) { httpObj	= new XMLHttpRequest(); }
	httpObj.open("GET", strActionUrl, false);
	httpObj.send(null);
}




/**
 * Overtureインタレストマッチにクエリを投げ、取得結果を呼出元のdocumentオブジェクトに埋め込みます。
 * 
 *
 * strCtxtKeywords : 
 * strCategoryName : 
 * nMaxCount       : 最大表示件数
 */
function getInterestMatch(ctxtCat, ctxtKeywords, nMaxCount) {
	// リクエストクエリ生成
	var strOvUrl =
			'http://im.gmo.ov.yahoo.co.jp/js_flat/' +
			'?source=gmo_jp_point_cat_ctxt' +
			'&ctxtKeywords=' + encodeURIComponent(ctxtKeywords) + // とりあえずencodeURIComponentを使う。だめならecl
			'&ctxtUrl=' + encodeURIComponent(document.location.href) + 
//			'&ctxtCat='+ ctxtCat +
			'&keywordCharEnc=utf8' +
//			'&ctxtId=test' +
			'&ctxtId=defalt_finance' +
			'&outputCharEnc=euc-jp' +
			'&maxCount=' + nMaxCount +
			'&type=pt_im';
	var strOvScript = '<script type="text/javascript" language="javascript" SRC="' + strOvUrl + '"></script>';
	// document.writeのタグ自体を埋め込み、Overture側の実行結果を呼出元のページに追加。戻り値はjavascriptのプリミティブなオブジェクト。
	document.write(strOvScript);
}

/**
 * Overtureから広告(配列)をロードし、表示します。
 * loadParamsおよびviewParamsは、呼出元のページから読み込みます。
 */
function loadAndWriteInterestMatch() {
	try {
		if (loadParams != null && loadParams.length > 0) {
			getInterestMatch(loadParams[0], loadParams[1], loadParams[2]);
			window.onload = function () {
				var i;
				var nAdIndex	= 0;
				for (i = 0; i < viewParams.length; i++) {
					nAdIndex = WriteListingsWithIndex(viewParams[i][0], viewParams[i][1], viewParams[i][2], nAdIndex);
				}
			}
		}
	}
	catch (e) { alert(e.message); };
}
