/*
Copyright (c) 2006, 阿部慎也 All rights reserved. 

以下の条件を満たす場合に限り、再頒布および使用が許可されます。 

・上記の著作権表示、本条件一覧、および下記免責条項を含めること。 
・書面による特別の許可なしに、本ソフトウェアから派生した製品の
　宣伝または販売促進に、著作権者の名前またはコントリビューターの
　名前を使用してはならない。 

本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」
提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に
対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる
保証もありません。
著作権者もコントリビューターも、事由のいかんを問わず、損害発生の原因いか
んを問わず、かつ責任の根拠が契約であるか厳格責任であるか（過失その他の）
不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされて
いたとしても、本ソフトウェアの使用によって発生した（代替品または代用サー
ビスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、また
それに限定されない）直接損害、間接損害、偶発的な損害、特別損害、懲罰的損
害、または結果損害について、一切責任を負わないものとします。 
*/
TabMenu = Class.create();
TabMenu.prototype = {
	/*
		args['offImg1'] 非選択タブの左側画像 
		args['offImg2'] 非選択タブの右側画像 
		args['onImg1']  選択タブの左側画像 
		args['onImg2']  選択タブの右側画像 
		args['leftMin'] offImg1の幅を指定. 
		args['left']    左の空き 
		args['right']   右の空き 
		args['top']	    上の空き 
		args['color']   文字の色 
		args['bgImg']   タブ全体の背景画像 (option)
	*/
	initialize: function(args) {
		this.args = args;
	},
	addTab: function(obj) {
	
		var args = this.args;
		var selectTab = this.selectTab;

		var element = $(obj);
		if (! element) {
			return;
		}
		var tabArea = document.createElement('div');
		var tab = document.createElement('ul');

		tabArea.style.styleFloat = 'left'; // IE
		tabArea.style.cssFloat   = 'left'; // Gecko
		tabArea.style.width      = '619px';
		tabArea.style.padding    = '0px';
		tabArea.style.margin     = '0px';
		tabArea.style.border     = '0px';
		if (args['bgImg']) {
			tabArea.style.background = 'url(' + args['bgImg'] + ') repeat-x bottom';
		}

		tab.style.styleFloat    = 'left'; // IE
		tab.style.cssFloat      = 'left'; // Gecko
		tab.style.listStyleType = 'none';
		tab.style.margin        = '0px';
		tab.style.padding       = '0px';
		tab.style.paddingLeft   = '10px';

		var areaIdList = [];
		var showFlag = true;
		for (var i=0; i<element.childNodes.length; i++) {
			var e = element.childNodes[i];
			if (e.tagName) {
				var tabName = e.getAttribute('tabName');
				if (tabName) {
					e.style.clear = 'both';
					var areaId = e.getAttribute('id');
					areaIdList.push(areaId);

					var li = document.createElement('li');
					var a = document.createElement('a');

					li.style.background    = 'url(' + args['offImg1'] + ') no-repeat left top';
					li.style.margin        = '15px 0px 0px 0px';
					li.style.padding       = '0 0 0 ' + args['leftMin'] + 'px';
					li.style.styleFloat    = 'left'; // IE
					li.style.cssFloat      = 'left'; // Gecko
					a.style.display        = 'block';
					a.style.background     = 'url(' + args['offImg2'] + ') no-repeat right top';
					a.style.paddingTop     = '' + args['top'] + 'px';
					a.style.paddingRight   = '' + args['right'] + 'px';
					a.style.paddingBottom  = '9px';
					a.style.paddingLeft    = '' + (args['left'] - args['leftMin']) + 'px';
					a.style.textDecoration = 'none';
					a.style.color          = args['color'];
					a.style.lineHeight     = '90%';
					a.style.cursor         = 'pointer';
					a.setAttribute('areaId', areaId);
					
					function click(event) {
						var src = event.target ? event.target : event.srcElement;
						var aid = src.getAttribute('areaId');
						for (var i=0; i<tab.childNodes.length; i++) {
							var tmp_li  = tab.childNodes[i];
							var tmp_a   = tmp_li.firstChild;
							var tmp_aid = tmp_a.getAttribute('areaId');
							if (aid == tmp_aid) {
								tmp_li.style.backgroundImage = 'url(' + args['onImg1'] + ')';
								tmp_a.style.backgroundImage  = 'url(' + args['onImg2'] + ')';
							} else {
								tmp_li.style.backgroundImage = 'url(' + args['offImg1'] + ')';
								tmp_a.style.backgroundImage  = 'url(' + args['offImg2'] + ')';
							}
						}
						
						var areaIdList = tab.getAttribute('areaIdList').split(',');
						for (var i=0; i<areaIdList.length; i++) {
							if (areaIdList[i] == aid) {
								$(areaIdList[i]).style.display = 'block';
							} else {
								$(areaIdList[i]).style.display = 'none';
							}
						}
					}
					Event.observe(a, 'click', click, false);
					
					a.appendChild(document.createTextNode(tabName));
					li.appendChild(a);
					tab.appendChild(li);
				}
				if (showFlag) {
					e.style.display = 'block';
					li.style.backgroundImage = 'url(' + args['onImg1'] + ')';
					a.style.backgroundImage = 'url(' + args['onImg2'] + ')';
					showFlag = false;
				} else {
					e.style.display = 'none';
				}
			}
		}
		tab.setAttribute('areaIdList', areaIdList.join(','));
		tabArea.appendChild(tab);
		element.insertBefore(tabArea, element.firstChild);
	}
}
