
var SwapLink = Class.create();

SwapLink.prototype = {
	/*
	[sslAreas]
	type : Array
	value: SSL領域のURLであることを判別する為の文字列（ディレクトリ名、ファイル名、クエリ等）

	[navRoots]
	type : Array
	value: 置換対象のAタグを内包する親ノードのID。空欄の場合は全てのAタグが置換対象になる。
	
	[realHostName]
	type : String
	value: このスクリプトを動作させるホスト名、あるいは識別できる文字列。ここで指定した文字列を含まないホスト（テストサーバ等）では動作させないために使用。空欄の場合は全てホストで動作する。
	*/
	
	sslAreas: ['counsel_', 'counsel.php', 'eval', 'inquiry'],
	navRoots: ['naviArea', 'leftArea', 'rightArea', 'footer', 'header'],
	realHostName: 'www.tokyocity.jp',

	initialize: function() {
		var regExpString = this.sslAreas.join('|');
		regExpString = regExpString.replace(/([\.\?\&\+\-\%\$\/])/g, '\\$1');
		this.regExpPttn = RegExp(regExpString);
		
		var uri = document.location.href;
		if(this.realHostName && !uri.match(this.realHostName))  { return false; }
		else if(uri.match(this.regExpPttn)) { this.changeProtocol(); }
	},


	changeProtocol: function() {
		var linksNodes = new Array();

		if(this.navRoots.length) {
			for(var i=0; i<this.navRoots.length; i++) {
				var root = $(this.navRoots[i]);
				linksNodes = linksNodes.concat( $A(root.getElementsByTagName('a')) );
			}
		}
		else {
			linksNodes = document.getElementsByTagName('a');
		}
		
		for(var i=0; i<linksNodes.length; i++) {
			var orgHref = linksNodes[i].getAttribute('href',2);

			if(!orgHref.match(/^#/) && !orgHref.match(/^https?/) && !orgHref.match(this.regExpPttn)) {
				orgHref = orgHref.replace(/^\//, '');
				linksNodes[i].href = 'http://' + location.host + '/' + orgHref;
			}
		}
	}
}



Event.observe(
	window,
	'load',
	function() {
		var swaplink = new SwapLink();
	},
	false
);




