/*
* 
* タブ等スイッチによるコンテンツ切替スクリプト
*
* Copyright: (c) 2009 dmp.co.jp
**************************************/
var contentsSwticher = function(wrapClass, tabClass, viewClass){
	var displayType = "block";
	var tabHighLightFunction = function(){};
	var tabSelectorClickEventProc = function(targetObject){
		for (var i = 0; i < targetObject.tab.length; i++) {
			Event.observe(targetObject.tab[i], "click", onClickEvent(targetObject, i));
			var aTags = targetObject.tab[i].getElementsByTagName("a");
			for (var j = 0; j < aTags.length; j++) {
				aTags[j].href = "javascript:void(0);";
			}
		}
	}
	function onClickEvent(targetObject,targetNo){
		return function(mouseEvent){
			tabHighLightFunction(targetObject.tab, targetNo);
			for (var i = 0; i < targetObject.view.length; i++) {
				targetObject.view[i].style.display = "none";
			}
			targetObject.view[targetNo].style.display = displayType;
			targetObject.tab[targetNo].blur();
		}
	}
	var tabSelectorChangeEventProc = function(targetObject){
		for (var i = 0; i < targetObject.tab.length; i++) {
			Event.observe(targetObject.tab[i], "change", onChangeEvent(targetObject, targetObject.tab[i]));
		}
	}
	function onChangeEvent(targetObject, targetElement){
		return function(event){
			for (var i = 0; i < targetObject.view.length; i++) {
				targetObject.view[i].style.display = "none";
			}
			targetObject.view[targetElement.selectedIndex].style.display = displayType;
		}
	}
	//----
	var targetWrapClassArray = document.getElementsByClassName(wrapClass);
	var targetElementsArray = [];
	for(var ii = 0 ; ii < targetWrapClassArray.length ; ii++){
		var item = {};
		item.wrap = targetWrapClassArray[ii];
		item.tab = document.getElementsByClassName(tabClass,targetWrapClassArray[ii]);
		item.view = document.getElementsByClassName(viewClass,targetWrapClassArray[ii]);
		targetElementsArray.push(item);
	}
	function setClickEventDrive(){
		for (var ii = 0; ii < targetElementsArray.length; ii++) {
			var proc = new tabSelectorClickEventProc(targetElementsArray[ii], tabHighLightFunction);
		}
		functions.select = function( targetNo ){
			for (var ii = 0; ii < targetElementsArray.length; ii++) {
				onClickEvent( targetElementsArray[ii], targetNo )();
			}
		};
	}
	function setChangeEventDrive(){
		for (var ii = 0; ii < targetElementsArray.length; ii++) {
			var proc = new tabSelectorChangeEventProc(targetElementsArray[ii], tabHighLightFunction);
		}
		functions.select = function( targetNo ){
			for (var ii = 0; ii < targetElementsArray.length; ii++) {
				for (var i = 0; i < targetElementsArray[ii].view.length; i++) {
					targetElementsArray[ii].view[i].style.display = "none";
				}
				targetElementsArray[ii].view[targetNo].style.display = displayType;
			}
		}
	}
	function setHighLightFunction( highlightfunction ){
		tabHighLightFunction = highlightfunction;
	}
	functions = {
		select:function(){},
		setDisplayType:function( ChangeDisplayType ){
			displayType = ChangeDisplayType;
		},
		setClickEventDrive:setClickEventDrive,
		setChangeEventDrive:setChangeEventDrive,
		setHighLightFunction:setHighLightFunction
	};
	return functions;
}
