// 複数の要素からリファラーキーワードに応じて一つを有効（表示）にするモジュールです。
// 例1:<div name="referrer" title="キーワード1">要素1</div><div name="referrer" title="キーワード2">要素2</div><div name="referrer" title="キーワード3">要素3</div>
// 例2:<img name="referrer" alt="キーワード1 キーワード2"/><img name="referrer" alt="キーワード3 キーワード4"/>

var ReferrerChanger = Class.create();
ReferrerChanger.prototype = {
	initialize: function(options) {
		this.options = Object.extend({
			name: "referrer",
			debug: false
		}, options || {});
		var e = document.getElementsByClassName(this.options.name);
		if (!e.length)
			return;
		
		//全要素を非表示
		for (var i = 0; i < e.length; i++)
			Element.setStyle(e[i], {display:"none"});

		//リファラーから検索フレーズを取得
		var q = Hilite.decodeReferrer(document.referrer);
		if (this.options.debug) {
			q = decodeURIComponent(window.location.search).replace("?", "");
		}
		var words = [];
		if (q) {
			Cookie.set("q", encodeURIComponent(q.join(",")));
			words = q;
		//Cookieに検索フレーズが記録されている場合
		} else {
			if (q = Cookie.get("q")) {
				q = decodeURIComponent(q);
		    	words = q.split(",");
		    }
		}
		if (words.length) {
			//一つの要素を表示する
			var match = false;
			for (var i = 0; i < e.length; i++) {
				var phrase = e[i].getAttribute("title") || e[i].getAttribute("alt");
				if (phrase) {
					for (var j = 0; j < words.length; j++) {
						var rexp = new RegExp(words[j]);
						if (rexp.test(phrase)) {
			    			Element.setStyle(e[i], {display:"block"});
			    			match = true;
			    			break;
						}
					}
				}
				if (match)
					break;
			}
		}
		//マッチしない場合は先頭要素を出力
		if (!match) {
			Element.setStyle(e[0], {display:"block"});
		}
	}
}
