﻿function Tab(config) {
	/*
		config
			container    tab容器
			eventType    触发事件类型
			currentClass 选中后的className
			num          表示默认显示第几个tab
	*/
	config = {
		container: config.container || "tab",
		eventType: config.eventType || "click",
		currentClass: config.currentClass || "current",
		num: config.num || 0
	};
	
	this.c = getElementsByClassName(document, config.container, "div")[0];
	this.lis = this.c.getElementsByTagName("ul")[0].getElementsByTagName("a");
	this.divs = this.c.getElementsByTagName("div");
	var _this = this;
	
	//获取className元素,默认以浏览器原生的方法获取(FF3,Safari)
	function getElementsByClassName(node, name, type) {
		if (node.getElementsByClassName)
			return node.getElementsByClassName(name);
		else {
			var r = [], re = new RegExp("(^|\\s)" + name + "(\\s|$)"), e = (node || document).getElementsByTagName(type || "*");
			for ( var i = 0; i < e.length; i++ ) {
				if( re.test(e[i].className) )
					r.push(e[i]);
			}
			return r;
		}
	}
	
	//阻止浏览器默认事件
	function preventDefault(ev) {
		if ( ev && ev.preventDefault )
			ev.preventDefault();
		else
			window.event.returnValue = false;
	}
	
	//克隆已有的iframe，改变其src
	this.createElem = function(obj, n) {
		var elem = this.divs[0].getElementsByTagName("iframe")[0];
		if (n != 0){
			var newElem = elem.cloneNode(true);
			newElem.src = obj.href;
			this.divs[n].appendChild(newElem);
		}
		obj.href = "#";
		obj["on" + config.eventType] = function(){
			return _this.def(n);
		};
	};
	
	//注册事件
	this.register = function() {
		for ( var i = 0; i < this.lis.length; i++ ) {
			this.lis[i]["on" + config.eventType] = (function(i){
				return function(e){
					preventDefault(e);
					_this.createElem(this, i);
				}
			})(i);	
		}
		
	};
	
	//TAB 默认方法
	this.def = function(n, e) {
		n = n || config.num;
		for ( var i = 0; i < this.lis.length; i++ ) {
			this.lis[i].className = "";
			this.divs[i].style.display = "none";
		}
		this.lis[n].className = config.currentClass;
		this.divs[n].style.display = "";
	};
	
	this.init = function() {
		this.def();
		return this.register();
	};
}
var brand = new Tab({eventType: "mouseover"});
brand.init();
