/*********************************************************************
 * トラッキング処理 Javascript
 * 
 * Version 1.2.0
 * 
 * (c) 2006 LOFT Co., Ltd
 * 
 *********************************************************************
 * 
 * 前提：
 *   下記以外のブラウザは非対応
 * 
 *     Internet Explorer 5～
 *     Firefox 1～
 *     Netscape 6～
 *     Safari 1～
 *     Opera 6～
 *     Mozilla 1～
 * 
 * 処理概要：
 *   HTMLに記述されているAタグを取得し、URLパラメータとして
 *   引き継いだパラメータの値を hrefで指定しているURLに付加する
 * 
 * 追加・修正： 
 *   1.1.0　20070123 AREAタグにも適用（山内）
 *   1.2.0　20080710 src="javascript:__utmLinker('～');"に対応（CW石井）
 *   1.3.0　20090718 src="javascript:アコーディオンタイプ、タブタイプ"に対応（DUO前坂）
*********************************************************************/

// パラメータ名
var PARAM_NAME = "banner_id";

function replaceAnchor() {

	// 非対応ブラウザの場合、処理なし
	if (!document.getElementsByTagName) return;

	// Aタグのエレメントを取得（配列）
	var anchors = document.getElementsByTagName('a');

	// URLの取得
	var src_url = window.location.href;

	// 取得したエレメント数分、LOOP処理
	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];

//-----------------
		if(anchor != ""){
			// hrefで指定されたURLの取得
			var dst_url = String(anchor.href);

			// URLの置換
			var new_dst_url = succeed(dst_url, src_url);
			anchor.href = new_dst_url;
		}
//-----------------
	}
	// add by Yamauchi20070123 begin
	// AREAタグのエレメントを取得（配列）
	var anchors2 = document.getElementsByTagName('area');

	// 取得したエレメント数分、LOOP処理
	for (var i=0; i<anchors2.length; i++) {
		var anchor2 = anchors2[i];

		// hrefで指定されたURLの取得
		dst_url = String(anchor2.href);

		// URLの置換
		var new_dst_url2 = succeed(dst_url, src_url);
		anchor2.href = new_dst_url2;
	}
	// add by Yamauchi20070123 end 
}


function succeed(dst_url, src_url) {

	if (!src_url || (src_url == "")) return dst_url;
	else if (!dst_url || (dst_url == "")) return "";

	// アンカーの取得
	var anc_str = "";
	var anc_pos = dst_url.indexOf("#");

	// アンカーが存在する場合の処理
	if (anc_pos >= 0) {
		anc_str = dst_url.substr(anc_pos);
		dst_url = dst_url.substr(0, anc_pos);
	}

	// URLパラメータの取得
	var pos = src_url.indexOf("?");

	if (pos >= 0) {
		// アンカーの削除
		var src_anc_pos = src_url.indexOf("#");

		// アンカーが存在する場合の処理
		if (src_anc_pos >= 0) {
			src_url = src_url.substr(0, src_anc_pos);
		}

		var q_str     = src_url.substr(pos + 1);
		// パラメータごとに分解（配列に格納）
		var q_list    = q_str.split("&");
		var q_str_new = "";

		var q_fact;

		// パラメータ数分、LOOP処理
		for (var idx=0; idx<q_list.length; idx++) {
			q_fact = q_list[idx].split("=");
			// ref パラメータ の値を取得
			if (q_fact.length == 2 && q_fact[0] == PARAM_NAME) {
				q_str_new = PARAM_NAME + "=" + q_fact[1];
				break;
			}
		}

		// javascript:__utmLinker('～');
		if (dst_url.indexOf("javascript:__utmLinker(") == 0) {
			var end_quote_pos = dst_url.indexOf("')");
			
			var new_dst_url = "";
			new_dst_url += dst_url.substr(0, end_quote_pos);

			// 遷移先URLのパラメータ有無を判断し、ref パラメータを付加
			if (new_dst_url.indexOf("?") >= 0) {
				new_dst_url += "&" + q_str_new;
			} else {
				new_dst_url += "?" + q_str_new;
			}

			new_dst_url += dst_url.substr(end_quote_pos);
			
			return new_dst_url;
		}
		else {
			dst_url = dst_url.toString();

			if (dst_url.indexOf(q_str_new) < 0) {
				// 遷移先URLのパラメータ有無を判断し、ref パラメータを付加
				if (dst_url.indexOf("javascript") != 0) {
					if (dst_url.indexOf("?") >= 0) {
						dst_url = dst_url + "&" + q_str_new;
					} else {
						dst_url = dst_url + "?" + q_str_new;
					}
				}
			}
		}
	}

	return dst_url + anc_str;
}
