
(function(){
	function addEvent( obj, type, fn ){
		if (obj.addEventListener)
			obj.addEventListener( type, fn, false );
		else if (obj.attachEvent){
			obj["e"+type+fn] = fn;
			obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
			obj.attachEvent( "on"+type, obj[type+fn] );
		}
	}

	function createElement(element) {
		if (typeof document.createElementNS != 'undefined') {
			return document.createElementNS('http://www.w3.org/1999/xhtml', element);
		}
		if (typeof document.createElement != 'undefined') {
			return document.createElement(element);
		}
		return false;
	}

	/* 
		浏览器兼容的通用滑动门面板
		Author: joeke(哉崽)<joeke.cn@gmail.com>
	*/
	function joPanel(){
		
		this.selects = document.getElementsByTagName("select");
		var divs = document.getElementsByTagName('div');
		var joPanelDivs = [];

		for (var i = 0; i < divs.length; i++) {
			if (/\bjoPanel\b/.test(divs[i].className)){  //正则表达式匹配
				joPanelDivs[joPanelDivs.length] = divs[i];
			}
		}
		var thediv, outer, joPanelBorderL, joPanelBorderR;
		for (var i = 0; i < joPanelDivs.length; i++) {
			
			thediv = joPanelDivs[i];
			
			outer = createElement('div');
			
			outer.className = thediv.className;
			
			outer.className = thediv.className.replace('joPanel', 'joPaneler');
			
			thediv.className = 'joPanelInner';
			
			thediv.parentNode.replaceChild(outer, thediv);
			
			joPanelBorderL = createElement('div');
			
			joPanelBorderL.className = 'joPanelBorderL';
			
			outer.appendChild(joPanelBorderL);
		
			joPanelBorderR = createElement('div');
	
			joPanelBorderR.className = 'joPanelBorderR';
	
			joPanelBorderL.appendChild(joPanelBorderR);
		
			joPanelBorderR.appendChild(thediv);
	
			this._insertTop(outer);
	
			this._insertBottom(outer);
	
		}
		this._fixSelects();
	}

	joPanel.prototype = {

			_insertTop : function (obj) {
				d=createElement("div");
				d.className="joPanelTop"; 
				d2=createElement("div");
				d.appendChild(d2);
				obj.insertBefore(d,obj.firstChild);
			},

			_insertBottom : function insertBottom(obj) {
				d=createElement("div");
				d.className="joPanelBottom";
				d2=createElement("div");
				d.appendChild(d2);
				obj.appendChild(d);
			},
			
			_fixSelects : function(){
				for(var i=0; i<this.selects.length; i++){
						if(this.selects[i].joPanelSelect){
							this.selects[i].style.visibility = "visible";
						}
				}
			}
	
	}

	function initJoPanel(){
		
		new joPanel();
	}

	if(document.getElementById && document.createTextNode)
		addEvent(window, 'load', initJoPanel);

})();