/*
common script lib. Ver.5.0.9.3
2010.10.19.
*/

/*
SWFObject v2.2 <http://code.google.com/p/swfobject/> 
is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/

/*
faster access by caching the window's properties by amachang.
<http://d.hatena.ne.jp/amachang/20071010/1192012056>
@cc_on eval((function(props) { var code = []; for (var i = 0, l = props.length;i<l;i++){ var prop = props[i]; window['_'+prop]=window[prop]; code.push(prop+'=_'+prop); }; return 'var '+code.join(','); })('document self top parent alert setInterval clearInterval setTimeout clearTimeout'.split(' '))); @
*/

/*
setInterval03.js by amachang.
<http://d.hatena.ne.jp/amachang/20060924/1159084608>
*/
(function(){ var _si_nativeSetInterval = window.setInterval , _si_nativeClearInterval = window.clearInterval , _si_intervalTime = 10 , _si_counter = 1 , _si_length = 0 , _si_functions = {} , _si_counters = {} , _si_numbers = {} , _si_intervalId = undefined; var _si_loop = function() { var f = _si_functions, c = _si_counters, n = _si_numbers; for(var i in f) { if(!--c[i]) { f[i](); c[i] = n[i]; } } }; window.setInterval = function(handler, time) { if(typeof handler == 'string') handler = new Function(handler); _si_functions[_si_counter] = handler; _si_counters[_si_counter] = _si_numbers[_si_counter] = Math.ceil(time / _si_intervalTime); if (++_si_length && !_si_intervalId) { _si_intervalId = _si_nativeSetInterval(_si_loop, _si_intervalTime); }; return _si_counter++; }; window.clearInterval = function(id) { if(_si_functions[id]) { delete _si_functions[id]; delete _si_numbers[id]; delete _si_counters[id]; if (!--_si_length && _si_intervalId) { _si_nativeClearInterval(_si_intervalId); _si_intervalId = undefined; } } }; })();



(function(){
	
	
	var OBJECT_NAME = "com";
	
	
	function _Object(){
		var Wrap = this; this.obj = {};
		var Substance = this.obj;
		for(var i in this)(function(prop){
			if(Wrap[prop] instanceof Function)(function(name,method){
				Substance[name] = function(){
					return method.apply(Substance,arguments);
				}
			})(prop,Wrap[prop]);
		})(i);
		return this.obj;
	}
	_Object.prototype = {
		each : function(){
			var func = arguments[0];
			for(var i in this){
				if(i in _Object.prototype) continue;
				func.apply(this[i],[i,this[i]]);
			}
		}
	};
	
	
	
	function _Array(){
		var Wrap = this; this.arr = [];
		[].push.apply(this.arr,arguments);
		var Substance = this.arr;
		for(var i in this)(function(prop){
			if(Wrap[prop] instanceof Function)(function(name,method){
				Substance[name] = function(){
					return method.apply(Substance,arguments);
				}
			})(prop,Wrap[prop]);
		})(i);
		this.arr.isComArray = true;
		return this.arr;
	};
	_Array.prototype = {
		item : function(){
			var A = this;
			if(isNaN(arguments[0])){
				return this[0];
			}
			else{
				if(arguments[0] > 0){
					return this[arguments[0]];
				}
				else{
					return this[this.length + arguments[0]];
				}
			}
		},
		each : function(){
			var func = arguments[0];
			for(var i=0 , l=this.length ; i<l ; i++) func.apply(this[i],[i,this[i]]);
		},
		reach : function(){
			var func = arguments[0];
			for(var i=this.length-1 ; i>=0 ; i--) func.apply(this[i],[i,this[i]]);
		},
		shuffle : function(){
			var tmp = [];
			tmp.push.apply(tmp,this);
			var len = tmp.length , ret = new _Array();
			while(len){
				var c = Math.floor(Math.random() * len);
				ret[ret.length] = tmp[c];
				tmp.splice(c,1);
				len--;
			}
			return ret;
		},
		search : function(){
			var ret = new _Array() , needle = arguments[0];
			if(arguments.length < 1) return ret;
			this.each(function(index){
				if(this == needle) ret.push(index);
			});
			return ret;
		},
		swap : function(){
			if(arguments.length < 2) return this;
			var ret = new _Array() ,
				isKey = (arguments.length > 2 && arguments[2].toUpperCase() == "KEY") ? true : false ,
				ARR = this;
			if(isKey){
				this.each(function(index){
					if(index == arguments[0]) ret.push(ARR[arguments[1]]);
					else if(index == arguments[1]) ret.push(ARR[arguments[0]]);
					else ret.push(this);
				});
			}
			else{
				var item1 = this.search(arguments[0]);
				var item2 = this.search(arguments[1]);
				if(item1.length < 1 || item2.length < 2) return this;
				this.each(function(index){
					if(index == item1[0]) ret.push(ARR[item1[0]]);
					else if(index == item2[0]) ret.push(ARR[item2[0]]);
					else ret.push(this);
				});
			}
			return ret;
		},
		remove : function(){
			if(arguments.length < 1) return this;
			var A = this;
			var arg = new _Array(); arg.push.apply(arg,arguments);
			
			for(var i=this.length - 1 ; i>=0 ; i--)(function(index,target){
				var f = false;
				arg.each(function(){ if(target == this) f = true; });
				if(!!f) A.splice(index,1);
			})(i,this[i]);
		}
	};
	
	
	
	function _String(){
		var Wrap = this;
		this.str = new String(arguments[0]);
		var Substance = this.str;
		for(var i in this)(function(prop){
			if(Wrap[prop] instanceof Function)(function(name,method){
				Substance[name] = function(){
					return method.apply(Substance,arguments);
				}
			})(prop,Wrap[prop]);
		})(i);
		return this.str;
	};
	_String.prototype = {
		addGetParameter : function(param){
			return (this.indexOf("?") != -1) ? this + "&" + _createGetString(param) : this + "?" + _createGetString(param) ;
		},
		untiCache : function(){
			return this + ((this.indexOf("?") != -1) ? "&" : "?") + (new Date()).getTime() ;
		},
		trim : function(){
			return this.replace(/^\s*|\s*$/g,"");
		},
		each : function(){
			var fn = (arguments.length > 0 && typeof arguments[0] == "function") ? arguments[0] : null ;
			if(fn) for(var i=0 , l=this.length ; i<l ; i++) fn.call(this.charAt(i),this);
		},
		shuffle : function(){
			var S = this,
				ret = "";
			(function(){
				var n = Math.floor(Math.random() * S.length);
				ret += S.charAt(n);
				S = S.substr(0,n) + S.substr(n+1);
				if(S.length > 0) arguments.callee();
			})();
			return new _String(ret);
		},
		reverse : function(){
			var S = this,
				ret = "";
			this.each(function(s){
				ret = s + ret;
			});
			return new _String(ret);
		}
	};
	
	
	
	function _Image(){
		var Wrap = this;
		this.img = _createComElement("img");
		var Substance = this.img;
		for(var i in this)(function(prop){
			if(Wrap[prop] instanceof Function)(function(name,method){
				Substance[name] = function(){
					return method.apply(Substance,arguments);
				}
			})(prop,Wrap[prop]);
		})(i);
		return this.img;
	};
	_Image.prototype = {
		load : function(){
			var arg = new _Array(); arg.push.apply(arg,arguments);
			var src = (arg.length > 0 && typeof arg[0] == "string") ? arg[0] : null ;
			var callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
			if(callback) this.addEventListener("load",callback);
			this.src = src;
			return this;
		}
	};
	
	
	
	function _event(){
		this.element = {};
		this.func = new _Array();
	};
	_event.prototype = {
		addElement : function(ee,eid){
			this.element[eid] = ee;
		}
	};
	
	
	
	function _eventElement(element){
		this.obj = (element.isCE) ? element : _comElement(element) ;
		this.func = {};
		this.listener = {};
	};
	_eventElement.prototype = {
		__addEvent : function(type,useCapture){
			if(document.addEventListener) this.obj.__addEventListener(type,this.listener[type],useCapture);
			else if(document.attachEvent){
				if((type == "load" && /IMG|INPUT|SCRIPT|FRAME|IFRAME/.test(this.obj.nodeName)) && /complete|loaded/.test(this.obj.readyState)) this.exec(type,window.event);
				else this.obj.attachEvent("on" + type,this.listener[type]);
			}
		},
		__removeEvent : function(type){
			if(document.removeEventListener) this.obj.__removeEventListener(type,this.listener[type]);
			else if(document.detachEvent) this.obj.detachEvent("on" + type,this.listener[type]);
		},
		exec : function(type,evt){
			var EE = this;
			if(this.func[type]) this.func[type].each(function(index){
				if(!!_com.event.func[this]) _com.event.func[this].call(EE.obj,evt);
			});
		},
		add : function(type,key,useCapture){
			var EE = this;
			if(!this.func[type]) this.func[type] = new _Array();
			this.func[type].push(key);
			if(!this.listener[type]){
				this.listener[type] = function(e){
					var evt = (window.event) ? window.event : e ;
					EE.exec(type,evt);
				};
				this.__addEvent(type,useCapture);
			}
		},
		remove : function(){
			var arg = new _Array(); arg.push.apply(arg,arguments);
			var EE = this;
			var arg_type = (arg.length > 0 && typeof arg[0] == "string") ? arg[0] : null ;
			var arg_key = (arg.length > 1 && !isNaN(arg[1])) ? arg[1] : null ;
			for(var type in this.func){
				if(arg_type == null || arg_type == type){
					if(arg_key != null) EE.func[type].each(function(index){
						if(this == arg_key) EE.func[type][index] = null;
					});
					if(arg_key == null || this.func[type].length < 1){
						delete this.func[type];
						this.__removeEvent(type);
						this.listener[type] = null;
						delete this.listener[type];
					}
				}
			}
		}
	};
	
	
	
	var _com = {
		__WindowOnload:			window.onload,
		__WindowOnresize:		window.onresize,
		__WindowOnscroll:		window.onscroll,
		_startup_items:			new _Array(),
		_onresize_items:		new _Array(),
		_onscroll_items:		new _Array(),
		_scriptName:			"com.v.5093.js",
		_SARI_safemode:			1,
		_SARI_safemode_array:		new _Array("img","input"),
		_SARI_className:		"SARI",
		_SARI_object:			{},
		_hover_object:			{},
		_mailto_className:		"mailto",
		_DOM:				false,
		_highestdepth:			0,
		event:				new _event(),
		_e:				new _Array(),
		_browser:			_browsercheck(),
		
		
		/* main items */
		C:				_Cookie,
		D:				_getElementsBySelector,
		E:				_comElementCollection,
		G:				_createComElement,
		A:				_comElement,
		B:				_crawl,
		
		
		/* enhancing built-in object */
		Object:				_Object,
		Array:				_Array,
		String:				_String,
		Image:				_Image,
		
		
		/* functions */
		bind:				_bind,
		unbind:				_unbind,
		hover:				_hover,
		unhover:			_unhover,
		browsercheck:			_browsercheck,
		CompareVersion:			_CompareVersion,
		marge:				_marge,
		HighestDepth:			_HighestDepth,
		getScreenInfo:			_getScreenInfo,
		Import:				_Import,
		maximum:			_maximum,
		minimum:			_minimum,
		getCurrentScript:		_getCurrentScript,
		empty:				_empty,
		getUrlInfo:			_getUrlInfo,
		puWindow:			_puWindow,
		popup0:				_popup0,
		popup1:				_popup1,
		isChildNode:			_isChildNode,
		randStr:			_randStr,
		createGetString:		_createGetString,
		isArray:			_isArray,
		setStyle:			_setStyle,
		getSize:			_getSize,
		getOffsetPosition:		_getOffsetPosition,
		setClass:			_setClass,
		removeClass:			_removeClass,
		getClass:			_getClass,
		isClass:			_isClass,
		isAtt:				_isAtt,
		getElementsByTagAndClassName:	_getElementsByTagAndClassName,
		getBeforeElement:		_getBeforeElement,
		getNextElement:			_getNextElement,
		getChildElements:		_getChildElements,
		getChildElementsByTagName:	_getChildElementsByTagName,
		getChildElementById:		_getChildElementById,
		getParentElementByTagName:	_getParentElementByTagName,
		getElementsBySelector:		_getElementsBySelector,
		clearChildNodes:		_clearChildNodes,
		serialize:			_serialize,
		comElementCollection:		_comElementCollection,
		createComElement:		_createComElement,
		comElement:			_comElement,
		str2time:			_str2time,
		isGMT:				_isGMT,
		Cookie:				_Cookie,
		createXMLHttpRequest:		_createXMLHttpRequest,
		crawl:				_crawl,
		decelerate:			_decelerate,
		SARI:				_SARI,
		LBX:				_LBX,
		LBXSet:				_LBXSet,
		fade:				_fade,
		scroll:				_scroll,
		mailto2link:			_mailto2link,
		version:			"5.0.9.3"
	};
	
	
	
	_com._startup_items.push(function(){ _com._highestdepth = new _HighestDepth(); });
	_com._startup_items.push(_SARI_setup);
	_com._startup_items.push(_mailto2link);
	
	
	
	function _bind(element,type,fn){
		var useCapture = (arguments.length > 3 && arguments[3] == true) ? true : false ;
		if(!element.eid){
			element.eid = _randStr(16);
			_com.event.addElement(new _eventElement(element),element.eid);
		}
		var key = null;
		var sres = _com.event.func.search(fn);
		if(sres.length < 1){
			_com.event.func.push(fn);
			key = _com.event.func.length - 1;
		}
		else key = sres[0];
		_com.event.element[element.eid].add(type,key,useCapture);
	};
	
	
	
	 function _unbind(element,type,fn){
		if(!element.eid) return;
		var sres = _com.event.func.search(fn);
		var key = (sres.length > 0) ? parseInt(sres[0]) : null;
		_com.event.element[element.eid].remove(type,key);
	};
	
	
	
	function _hover(element,fn1,fn2){
		var retid = (arguments[arguments.length - 1] === true) ? true : false ;
		_bind(element,"mouseover",fn1);
		var hfn2 = function(evt){
			var p = (evt.relatedTarget) ? evt.relatedTarget : evt.fromElement;
			var s = (evt.target) ? evt.target : evt.srcElement;
			if(!_isChildNode(p,s)) fn2.apply(this,arguments);
		};
		_bind(element,"mouseout",hfn2);
		var hid = _randStr(16);
		_com._hover_object[hid] = { over : fn1, out : hfn2 };
		if(!_isArray(element.hoverID)) element.hoverID = new _Array();
		element.hoverID.push(hid);
		return (retid) ? hid : element ;
	};
	
	
	
	function _unhover(element){
		var id = (arguments.length > 1 && typeof arguments[1] == "string") ? arguments[1] : false ;
		if(!element.hoverID) return element;
		
		if(id != false && !!_com._hover_object[id]){
			_unbind(element,"mouseover",_com._hover_object[id].over);
			_unbind(element,"mouseout",_com._hover_object[id].out);
			element.hoverID.remove(id);
			delete _com._hover_object[id];
		}
		else{
			element.hoverID.each(function(){
				_unbind(element,"mouseover",_com._hover_object[this].over);
				_unbind(element,"mouseout",_com._hover_object[this].out);
				delete _com._hover_object[this];
			});
			delete element.hoverID;
		}
		return element;
	}
	
	
	
	function _browsercheck(){
		function getUserAgent(){
			return navigator.userAgent;
		};
		function client(){
			var str = null ,
				UA = getUserAgent();
			if(UA.toUpperCase().indexOf("MSIE") != -1) str = "MSIE";
			else if(UA.toUpperCase().indexOf("SAFARI") != -1) str = "Safari";
			else if(UA.toUpperCase().indexOf("FIREFOX") != -1) str = "Firefox";
			else if(UA.toUpperCase().indexOf("NETSCAPE") != -1 || ( UA.toUpperCase().indexOf("MOZILLA/4") != -1 && UA.toUpperCase().indexOf("MSIE") == -1 )) str = "Netscape";
			else if(UA.toUpperCase().indexOf("OPERA") != -1) str = "Opera";
			return str;
		};
		function platform(){
			var str = { major : null, minor : null } ,
				UA = getUserAgent();
			if(UA.toUpperCase().indexOf("WINDOWS") != -1){
				str["major"] = "Windows";
				if(UA.toUpperCase().indexOf("NT 6.") != -1) str["minor"] = "Vista";
				else if(UA.toUpperCase().indexOf("NT 5.1") != -1) str["minor"] = "XP";
				else if(UA.toUpperCase().indexOf("NT 5.0") != -1) str["minor"] = "2000";
				else if(UA.toUpperCase().indexOf("WINDOWS 95") != -1 || UA.toUpperCase().indexOf("WIN 95") != -1) str["minor"] = "95";
				else if(UA.toUpperCase().indexOf("WINDOWS 98") != -1 || UA.toUpperCase().indexOf("WIN 98") != -1 ) str["minor"] = "98";
				else if(UA.toUpperCase().indexOf("WIN 9X 4.90") != -1) str["minor"] = "ME";
			}
			else if(UA.toUpperCase().indexOf("MAC") != -1){
				var pattern = new RegExp("MSIE ([0-9\.]+)") ,
					match = UA.match(pattern);
				if(UA.toUpperCase().indexOf("MAC OS X") != -1 || (match != null && match[1] - 0 >= 5.1)) str["major"] = "MacOSX";
				else str["major"] = "Mac";
			}
			else if(UA.toUpperCase().indexOf("X11") != -1){
				str["major"] = "unix";
			};
			return str;
		};
		function version(){
			var str = { major : null, minor : null } ,
				Cl = client() ,
				Pl = platform().major ,
				UA = getUserAgent();
			if(Cl == "MSIE"){
				var pattern = new RegExp("MSIE ([0-9\.]+)") ,
					match = UA.match(pattern);
				if(match != null){
					str["major"] = match[1].charAt(0);
					str["minor"] = match[1];
				}
			}
			if(Cl == "Safari"){
				var pattern = new RegExp("Safari/([0-9\.]+)") ,
					match = UA.match(pattern);
				if(match != null){
					var v = match[1] - 0;
					if(_CompareVersion(v.toString(),"312.6") == true || _CompareVersion(v.toString(),"312.6") == "312.6") str["major"] = 1;
					else if((_CompareVersion(v.toString(),"412") == v) && (_CompareVersion(v.toString(),"419.3") == true || _CompareVersion(v.toString(),"419.3") == "419.3")) str["major"] = 2;
					else if(_CompareVersion(v.toString(),"522") == v && (_CompareVersion(v.toString(),"525.27.1") == true || _CompareVersion(v.toString(),"525.27.1") == "525.27.1")) str["major"] = 3;
					else if(_CompareVersion(v.toString(),"525.27.1") == v) str["major"] = 4;
					str["minor"] = match[1];
				}
			}
			if(Cl == "Firefox"){
				var pattern = new RegExp("Firefox/([0-9\.]+)") ,
					match = UA.match(pattern);
				if(match != null){
					str["major"] = match[1].charAt(0);
					str["minor"] = match[1];
				}
			}
			if(Cl == "Netscape"){
				var pattern = new RegExp("Netscape/([0-9\.]+)") ,
					match = UA.match(pattern);
				if(match != null){
					str["major"] = match[1].charAt(0);
					str["minor"] = match[1];
				}
				else{
					var pattern = new RegExp("Mozilla/([0-9\.]+)") ,
						match = UA.match(pattern);
					if(match != null){
						str["major"] = match[1].charAt(0);
						str["minor"] = match[1];
					}
				}
			}
			if(Cl == "Opera"){
				var pattern = new RegExp("Opera/([0-9\.]+)") ,
					match = UA.match(pattern);
				if(match != null){
					str["major"] = match[1].charAt(0);
					str["minor"] = match[1];
				}
			}
			return str;
		};
		var PLF = platform();
		var NAV = client();
		var VER = version();
		return {
			plf : PLF,
			nav : NAV,
			ver : VER,
			IE : function(){
				if(NAV != "MSIE") return false;
				else{
					var ver = (arguments.length > 0) ? arguments[0] : null ;
					if(!isNaN(ver)) return (ver == VER.major || ver == VER.minor);
					else{
						var ret = false;
						ver.replace(/(\d+)([+-]+)/,function($0,num,sufix){
							if(sufix == "+") ret = parseInt(num) >= VER.major;
							else if(sufix == "++") ret = parseInt(num) > VER.major;
							else if(sufix == "-") ret = parseInt(num) <= VER.major;
							else if(sufix == "--") ret = parseInt(num) < VER.major;
						});
					}
				}
			}
		};
	};
	
	
	
	function _CompareVersion(ver1,ver2){
		var ret = true, v1 = ver1.split("."), v2 = ver2.split("."), d1 = 0, d2 = 0, L = Math.min(v1.length,v2.length);
		for(var i=0 ; i<L ; i++){
			if(ret != true) break;
			d1 = (!v1[i]) ? 0 : parseInt(v1[i]) ;
			d2 = (!v2[i]) ? 0 : parseInt(v2[i]) ;
			if(d1 > d2) ret = ver1;
			if(d1 < d2) ret = ver2;
		};
		return ret;
	};
	
	
	
	function _marge(base,addon){
		var arg = new _Array(); arg.push.apply(arg,arguments);
		var override = (arg.length > 2 && arg[2] == true) ? true : false ;
		if(typeof base == "object" && typeof addon == "object"){
			var ret = base;
			(function(B,A){
				for(var i in A){
					if(i in B){
						if((typeof B[i] == "object" && typeof A[i] == "object") && A[i].nodeType != 1) arguments.callee(B[i],A[i]);
						else if(override) B[i] = A[i];
					}
					else{
						B[i] = A[i];
					}
				}
			})(ret,addon);
			return ret;
		}
		else{
			return base;
		}
	};
	
	
	
	function _HighestDepth(){
		var n = (arguments.length > 0 && !isNaN(arguments[0])) ? arguments[0] : 0 ;
		var Wrap = this;
		this.value = new Number(n);
		var Substance = this.value;
		for(var i in Wrap)(function(prop){
			if(Wrap[prop] instanceof Function)(function(name,method){
				Substance[name] = function(){
					return method.apply(Substance,arguments);
				};
			})(prop,Wrap[prop]);
		})(i);
		return this.value;
	};
	_HighestDepth.prototype = {
		refresh : function(){
			var root = (arguments.length > 0 && arguments[0].nodeType == 1) ? arguments[0] : document.body , d = 0;
			(function(el){
				var cn = el.childNodes;
				for(var i=0 , l=cn.length ; i<l ; i++){
					var elem = cn[i];
					if(elem.nodeType == 1){
						var z = (function(){
							var st = null;
							if(_com._browser.nav == "MSIE") st =  elem.currentStyle;
							else st = document.defaultView.getComputedStyle(elem,"");
							return (st && st.zIndex && !isNaN(st.zIndex)) ? st.zIndex - 0 : 0;
						})();
						if(z > d) d = z;
						if(elem.childNodes && elem.childNodes.length > 0) arguments.callee(elem);
					}
				}
			})(root);
			return new _HighestDepth(d);
		}
	};
	
	
	
	function _getScreenInfo(){
		function info(){
			this.page   = { width : 0, height : 0 };
			this.window = { width : 0, height : 0 };
			this.scroll = { left : 0, top : 0 };
			var style = document.body.currentStyle || document.defaultView.getComputedStyle(document.body,"") ,
				m = parseInt(style.marginLeft) + parseInt(style.marginRight);
			if (window.innerHeight && window.scrollMaxY) {
				this.page.width  = document.body.scrollWidth + m;
				this.page.height = window.innerHeight + window.scrollMaxY;
			}
			else if (document.body.scrollHeight > document.body.offsetHeight){
				this.page.width  = document.body.scrollWidth;
				this.page.height = document.body.scrollHeight;
			}
			else {
				this.page.width  = document.body.offsetWidth + m;
				this.page.height = document.body.offsetHeight;
			}
			if(document.documentElement && document.documentElement.clientWidth){
				this.window.width  = document.documentElement.clientWidth;
				this.window.height = document.documentElement.clientHeight;
			}
			else if(document.body.clientWidth){
				this.window.width  = document.body.clientWidth;
				this.window.height = document.body.clientHeight;
			}
			else{
				this.window.width  = self.innerWidth;
				this.window.height = self.innerHeight;
			}
			if(self.pageYOffset){
				this.scroll.left = self.pageXOffset;
				this.scroll.top  = self.pageYOffset;
			}
			else if(document.documentElement && document.documentElement.scrollTop){
				this.scroll.left = document.documentElement.scrollLeft;
				this.scroll.top  = document.documentElement.scrollTop;
			}
			else{
				this.scroll.left = document.body.scrollLeft;
				this.scroll.top  = document.body.scrollTop;
			}
			if(this.page.height < this.window.height){
				this.page.height = this.window.height;
			}
		};
		return new info();
	};
	
	
	
	function _Import(src){
		var att = (arguments.length > 1 && typeof arguments[1] == "object") ? arguments[1] : {} ,
			script = document.createElement("script") ,
			flag = true;
		script.type = "text/javascript";
		script.src = src;
		for(var i in att) script.setAttribute(i,att[i]);
		_getElementsBySelector("script").each(function(index){
			if(this.src == script.src) flag = false;
		});
		if(flag !== true) return;
		if(_com._DOM !== true) document.write("<" + "script type=\"text/javascript\" src=\"" + src + "\"></" + "script>");
		else _getElementsBySelector("head")[0].appendChild(script);
	};
	
	
	
	function _maximum(){
		var arg = new _Array(); arg.push.apply(arg,arguments);
		var ret = null;
		arg.each(function(){
			if(isNaN(this)) return;
			if(ret === null) ret = this;
			else ret = Math.max(ret,this);
		});
		return ret;
	};
	
	
	
	function _minimum(){
		var arg = new _Array(); arg.push.apply(arg,arguments);
		var ret = null;
		arg.each(function(){
			if(isNaN(this)) return;
			if(ret === null) ret = this;
			else ret = Math.min(ret,this);
		});
		return ret;
	};
	
	
	
	function _getCurrentScript(){
		var ret = null;
		try{
			(function(obj){
				if(obj.nodeName.toLowerCase() == "script") ret = obj;
				else ret = arguments.callee(obj.lastChild);
			})(document);
		}catch(e){
			_comElementCollection("script").each(function(){
				if(this.src.indexOf(_com._scriptName) != -1) ret = this.obj;
			});
		};
		return ret;
	};
	
	
	
	function _empty(obj){
		var ret = true ,
			opt = (arguments.length > 1 && arguments[1] === true) ? true : false ;
		if(!obj){
			return undefined;
		}
		else if(_isArray(obj)){
			ret = (obj.length == 0);
		}
		else if(obj.nodeType == 1 && obj.childNodes.length != 0){
			if(opt){
				ret = false;
			}
			else{
				for(var i=0 , l=obj.childNodes.length ; i<l ; i++){
					if(obj.childNodes[i].nodeType == 1){
						ret = false;
						break;
					}
				}
			}
		};
		return ret;
	};
	
	
	
	function _getUrlInfo(){
		function info(url){
			var I = this;
			var sect = new _Array();
			(function(){
				var tmp1 = url.split("#");
				var tmp2 = tmp1[0].split("?");
				sect.push(tmp2[0]);
				sect.push((tmp2[1]) ? tmp2[1] : null );
				sect.push((tmp1[1]) ? tmp1[1] : null );
			})();
			var scheme_tmp = sect[0].match(/^(.*):\/\//);
			this.scheme = (scheme_tmp && scheme_tmp[1]) ? scheme_tmp[1] : null ;
			var host_tmp = sect[0].match(/:\/\/(?:(?:([^:@\/]+):)?([^:@\/]+)@)?(?:([^:@\/]+))/);
			this.host = (host_tmp && host_tmp[3]) ? host_tmp[3] : null ;
			this.passphrase = (host_tmp && host_tmp[1] && host_tmp[2]) ? host_tmp[2] : null ;
			this.userName = (host_tmp && host_tmp[2]) ? ((host_tmp[1]) ? host_tmp[1] : host_tmp[2] ) : null ;
			this.path = (function(){
				if(I.host) return sect[0].split(I.host)[1];
				else return sect[0];
			})();
			this.directory = {};
			var dir_str = (function(){
				var ret = I.path.substring(0,I.path.lastIndexOf("/")+1);
				return (ret.length > 0) ? ret : null ;
			})();
			var dir_arr = (function(){
				if(!dir_str) return null;
				var ret = new _Array();
				ret.push.apply(ret,dir_str.split("/"));
				if(ret[0].length == 0) ret.splice(0,1);
				if(ret.item(-1).length == 0) ret.splice(ret.length-1,1);
				return ret;
			})();
			if(dir_str) this.directory.string = dir_str;
			if(dir_arr) this.directory.array = dir_arr;
			if(dir_arr) this.directory.length = dir_arr.length;
			this.file = (function(){
				if(!I.path) return null;
				var ret = I.path.substring(I.path.lastIndexOf("/")+1,I.path.length);
				return (ret.length > 0) ? ret : null ;
			})();
			this.hash = (sect[2]) ? sect[2] : null ;
			this.query = {};
			var que_str = (sect[1]) ? sect[1] : null ;
			var que_len = 0;
			var que_arr = (function(){
				if(!que_str) return null;
				var ret = null;
				var tmp = new _Array();
				tmp.push.apply(tmp,que_str.replace(/&([^&;]+);/g,"%%%$1%%%").split("&"));
				tmp.each(function(){
					var t = this.replace(/%%%([^%]+)%%%/g,"&$1;").split("=");
					if(t[0].length < 1) return;
					if(!ret) ret = {};
					ret[t[0]] = (t[1]) ? t[1] : null ;
					que_len++;
				});
				return ret;
			})();
			if(que_str) this.query.string = que_str;
			if(que_arr) this.query.array = que_arr;
			if(que_len) this.query.length = que_len;
		};
		return new info( (arguments.length > 0) ? arguments[0] : self.location.href );
	};
	
	
	
	function _puWindow(url,nam,wid,hei,prop){
		wid = (wid <= window.screen.width)  ? wid : window.screen.width  * 0.8 ;
		hei = (hei <= window.screen.height) ? hei : window.screen.height * 0.8 ;
		var offset = 0 , w = window.screen.width , h = window.screen.height , l = (w-wid)/2 , t = ((h-hei)/2)-offset;
		sty = prop + ",width=" + wid + ",height=" + hei + ",left=" + l + ",top=" + t;
		return window.open(url,nam,sty);
	};
	
	
	
	function _popup0(url,nam,wid,hei){
		return this.puWindow(url,nam,wid,hei,"status=no,scrollbars=no,resizable=no");
	};
	
	
	
	function _popup1(url,nam,wid,hei){
		return this.puWindow(url,nam,wid,hei,"status=yes,scrollbars=yes,resizable=yes");
	};
	
	
	
	function _isChildNode(element,parent){
		var elem = element;
		try{
			while(!!elem && elem.parentNode !== parent) elem = elem.parentNode;
		}
		catch(e){};
		if(!elem) return false;
		else return elem.parentNode && elem.parentNode === parent;
	};
	
	
	
	function _randStr(){
		var arg = new _Array(); arg.push.apply(arg,arguments);
		var l = (arg.length > 0 && !isNaN(arg[0])) ? arg[0] : 8 ,
			let = ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + ((arg.length > 1 && typeof arg[1] == "string") ? arg[1] : "")).split("") ,
			n = let.length,
			i = 0,
			ret = "";
		for(; i<l ; i++) ret += let[Math.floor(Math.random() * n)];
		return ret;
	};
	
	
	
	function _createGetString(param){
		var str = "";
		for(var i in param){
			if(_isArray(param[i])){
				str += (str == "") ? "" : "&" ;
				for(var j=0,l=param[i].length ; j<l ; j++){
					str += i + "[]=" + param[i][j];
				}
			}
			else{
				str += (str == "") ? "" : "&" ;
				str += i + "=" + param[i];
			}
		};
		return str;
	};
	
	
	
	function _isArray(array){
		if(!array) return false;
		if(!!array.isComArray) return true;
		else return !(
			!array || 
			(!array.length || array.length == 0) || 
			typeof array !== 'object' || 
			!array.constructor || 
			array.nodeType || 
			array.item
		);
	};
	
	
	
	function _setStyle(obj,style){
		if(!obj) return;
		for(var i in style){
			if(i.indexOf("-") != -1){ i = i.replace(/\-([\w])/g,function($0,$1){ return $1.toUpperCase(); }); }
			if(_com._browser.nav == "MSIE"){
				if(i == "top"){
					if(/[\d\.\-]+px/.test(style[i])) obj.style.posTop = parseInt(style[i]);
					else obj.style.top = style[i];
				}
				else if(i == "bottom" ){
					if(/[\d\.\-]+px/.test(style[i])) obj.style.posBottom = parseInt(style[i]);
					else obj.style.bottom = style[i];
				}
				else if(i == "left"   ){
					if(/[\d\.\-]+px/.test(style[i])) obj.style.posLeft = parseInt(style[i]);
					else obj.style.left = style[i];
				}
				else if(i == "right"  ){
					if(/[\d\.\-]+px/.test(style[i])) obj.style.posRight = parseInt(style[i]);
					else obj.style.right = style[i];
				}
				else if(i == "width"  ){
					if(/[\d\.\-]+px/.test(style[i])) obj.style.pixelWidth  = parseInt(style[i]);
					else obj.style.width = style[i];
				}
				else if(i == "height" ){
					if(/[\d\.\-]+px/.test(style[i])) obj.style.pixelHeight  = parseInt(style[i]);
					else obj.style.height = style[i];
				}
				else if(i == "opacity"){
					if(obj.parentNode) obj.style.filter = obj.currentStyle.filter;
					var pattern = /alpha\(opacity=[^\)]+\)/ , new_alpha_str = "alpha(opacity=" + (style[i] * 100) + ")";
					if(pattern.test(obj.style.filter)){ obj.style.filter = obj.style.filter.replace(pattern,new_alpha_str); }
					else{ obj.style.filter += "\n" + new_alpha_str; }
				}
				else if(i == "backgroundImage" && /.*?\.png[\'\"]?\)$/i.test(style[i]) && _com._browser.ver.major < 7){
					if(obj.parentNode) obj.style.filter = obj.currentStyle.filter;
					var pattern = /progid:DXImageTransform.Microsoft.AlphaImageLoader\([^\)]+\)/ ,
						src = style[i].match(/url\(["']?([^\'\"\)]+)['"]?\)/)[1],
						new_ail_str = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='crop', src='" + src + "')";
					if(pattern.test(obj.style.filter)) obj.style.filter = obj.style.filter.replace(pattern,new_ail_str);
					else obj.style.filter += "\n" + new_ail_str;
				}
				else if(i == "filter"){
					if(obj.parentNode) obj.style.filter = obj.currentStyle.filter;
					var name = style[i].split(":")[0] , pattern = new RegExp(name + ":([^\r\n]+)");
					if(pattern.test(obj.style.filter)) obj.style.filter = obj.style.filter.replace(pattern,style[i]);
					else obj.style.filter += "\n" + style[i];
				}
				else if(i == "float"){ obj.style.styleFloat = style[i]; }
				else{ obj.style[i] = style[i]; }
			}
			else{
				if(i == "float"){ obj.style.cssFloat = style[i]; }
				else obj.style[i] = style[i];
			};
		}
	};
	
	
	
	function _getSize(element){
		return { w : element.offsetWidth , h : element.offsetHeight };
	};
	
	
	
	function _getOffsetPosition(obj){
		var ret = { offset : { left : 0, top  : 0 }, absolute : { left : 0, top : 0 } };
		function getOffset(obj){
			var ret = { left : 0, top  : 0 };
			if(_com._browser.nav != "MSIE"){
				ret.left = obj.offsetLeft;
				ret.top  = obj.offsetTop;
			}
			else{
				(function(obj){
					var f = arguments.callee;
					ret.left += obj.offsetLeft;
					ret.top  += obj.offsetTop;
					try{
						if(obj.offsetParent){
							var op_style = obj.offsetParent.currentStyle;
							if(op_style.position == "static"){
								f(obj.offsetParent);
							}
						}
					}
					catch(e){}
				})(obj);
			};
			return ret;
		};
		ret.offset.left = getOffset(obj).left;
		ret.offset.top  = getOffset(obj).top;
		(function(obj){
			var f = arguments.callee , o = getOffset(obj);
			ret.absolute.left += o.left;
			ret.absolute.top  += o.top;
			(function(obj){
				var g = arguments.callee;
				if(obj.parentNode && obj.parentNode.nodeName != "HTML"){
					var p = obj.parentNode , style = p.currentStyle || document.defaultView.getComputedStyle(p,"");
					if(p.nodeName == "TABLE" || p.nodeName == "TR" || p.nodeName == "TD" || p.nodeName == "TH" || p.nodeName == "CAPTION"){
						if(_com._browser.nav == "MSIE"){
							g(p);
						}
						else if(p == obj.offsetParent){
							f(p);
						}
						else{
							g(p);
						}
					}
					else if(style.position != "static"){
						f(p);
					}
					else{
						g(p);
					}
				}
			})(obj)
		})(obj);
		return ret;
	};
	
	
	
	function _setClass(){
		var arg = new _Array(); arg.push.apply(arg,arguments);
		var element = arg[0];
		arg.each(function(index,item){
			if(index == 0) return;
			var tmp = new _Array();
			tmp.push.apply(tmp,item.split(","));
			tmp.each(function(t,value){
				if(!element.className || element.className.length < 1) element.className = value;
				else if(element.className.indexOf(item) != -1) return;
				else element.className = element.className + " " + value;
			});
		});
		return element;
	};
	
	
	
	function _removeClass(){
		var arg = new _Array(); arg.push.apply(arg,arguments);
		var element = arg[0];
		if(!element.className || element.className.length < 1) return element;
		arg.each(function(index,item){
			if(index == 0) return;
			var tmp = new _Array();
			tmp.push.apply(tmp,item.split(","));
			tmp.each(function(t,value){
				element.className = element.className.replace(new RegExp("(\s)?("+value+")(\s)?"),function($0,$1,$2,$3){
					if(!!$1 && !!$2) return " ";
					else return "";
				});
			});
		});
		element.className = _String.prototype.trim.call(element.className);
		return element;
	};
	
	
	
	function _getClass(element){
		var ret = new _Array();
		element.className = element.className.replace(/\s+/g,"");
		ret.push.apply(ret,element.className.split(" "));
		return ret;
	};
	
	
	
	function _isClass(element,className){
		if(!element.className) return;
		var ret = false;
		for(var cls = element.className.split(" ") , i=0 , l=cls.length ; i<l ; i++){
			if(cls[i] == className){
				ret = true;
				break;
			}
		}
		return ret;
	};
	
	
	
	function _isAtt(element,att){
		var ret = true;
		for(var i in att){
			if(!element[i] || element[i] != att[i]){
				ret = false;
				break;
			}
		}
		return ret;
	};
	
	
	
	function _getElementsByTagAndClassName(tag_name,class_name){
		return _getElementsBySelector((tag_name == "*") ? "."+class_name : tag_name+"."+class_name);
	};
	
	
	
	function _getBeforeElement(obj){
		var ret = false;
		(function(elem){
			if(!!elem.previousSibling){
				var tmp = elem.previousSibling;
				if(tmp.nodeType == 1) ret = _comElement(tmp);
				else arguments.callee(tmp);
			}
		})(obj);
		return ret;
	};
	
	
	
	function _getNextElement(obj){
		var ret = false;
		(function(elem){
			if(!!elem.nextSibling){
				var tmp = elem.nextSibling;
				if(tmp.nodeType == 1) ret = _comElement(tmp);
				else arguments.callee(tmp);
			}
		})(obj);
		return ret;
	};
	
	
	
	function _getChildElements(obj){
		var ret = new _Array() , cn = obj.childNodes;
		for(var i=0 , l=cn.length ; i<l ; i++) if(cn[i].nodeType == 1) ret.push(_comElement(cn[i]));
		return ret;
	};
	
	
	
	function _getChildElementsByTagName(obj,tagname){
		var ret = new _Array();
		if(!obj.childNodes) return ret;
		var cn = obj.childNodes;
		for(var i=0 , l=cn.length ; i<l ; i++) if(cn[i].nodeType == 1 && (cn[i].nodeName == tagname.toUpperCase() || tagname == "*")) ret.push(_comElement(cn[i]));
		return ret;
	};
	
	
	
	function _getChildElementById(obj,id){
		var ret = null;
		var cn = obj.childNodes;
		for(var i=0 , l=cn.length ; i<l ; i++){
			if(cn[i].nodeType == 1 && cn[i].id == id) ret = _comElement(cn[i]);
			break;
		}
		return ret;
	};
	
	
	
	function _getParentElementByTagName(node,tagName){
		var ret = null;
		(function(n){
			var p = n.parentNode;
			if(p.nodeName == tagName.toUpperCase()) ret = _comElement(p);
			else if(p.nodeName != "HTML") arguments.callee(p);
		})(node);
		return ret;
	};
	
	
	
	function _getElementsBySelector(selector){
		var _ret = new _Array() ,
			_arg = arguments ,
			_root = (_arg.length>1&&_arg[1].nodeType==1)?_arg[1]:document;
		if(_root.querySelectorAll){
			var tmp = _root.querySelectorAll(selector);
			if(_com._browser.nav != "MSIE") _ret.push.apply(_ret,Array.prototype.slice.call(tmp));
			else{
				for(var i=0,l=tmp.length ; i<l ; i++) _ret.push(tmp[i]);
			}
		}
		else{
			var _r = -1 ,
			_sel = new _Array() ,
			_sep_tmp = null ,
			_sep_pattern = /[ >\+]/g ,
			_tagname_pattern = /^(A|ABBR|ACRONYM|ADDRESS|APPLET|AREA|B|BASE|BASEFONT|BDO|BGSOUND|BIG|BLINK|BLOCKQUOTE|BODY|BR|BUTTON|CAPTION|CENTER|CITE|CODE|COL|COLGROUP|COMMENT|DD|DEL|DFN|DIR|DIV|DL|DT|EM|EMBED|FIELDSET|FONT|FORM|FRAME|FRAMESET|H1|H2|H3|H4|H5|H6|HEAD|HR|HTML|I|IFRAME|ILAYER|IMG|INPUT|INS|ISINDEX|KBD|LABEL|LAYER|LEGEND|LI|LINK|LISTING|MAP|MARQUEE|MENU|META|MULTICOL|NOBR|NOEMBED|NOFRAMES|NOLAYER|NOSCRIPT|OBJECT|OL|OPTGROUP|OPTION|P|PARAM|PLAINTEXT|PRE|Q|RB|RP|RT|RUBY|S|SAMP|SCRIPT|SELECT|SMALL|SPACER|SPAN|STRIKE|STRONG|STYLE|SUB|SUP|TABLE|TBODY|TD|TEXTAREA|TFOOT|TH|THEAD|TITLE|TR|TT|U|UL|VAR|WBR|XMP)$/ig ,
			_classname_pattern = /\.([a-z_\u00C0-\uFFEE\-][\w\u00C0-\uFFEE\-]*)/i ,
			_id_pattern = /#([a-z_\u00C0-\uFFEE\-][\w\u00C0-\uFFEE\-]*)/i ,
			_att_pattern = /\[([^\]=]+)(?:=["']?([^\'\"\]]+)['"]?)?\]/g ,
			_pseudo_pattern = /:(link|visited|hover|active|first\-child|last\-child|focus|first\-line|first\-letter|nth\-child|nth\-last\-child|nth\-of\-type|nth\-last\-of\-type)(?:\(([^\)]+)\))?/ig ,
			_quick_selector = {
				"body" : document.body
			};
			selector = _String.prototype.trim.call(selector);
			selector = selector.replace(/(['"])([^"']+)\1/g,function($0,$1,$2){ return $1 + $2.replace(/\s/g,"%%NBSP%%") + $1; });
			selector = selector.replace(/\s*(?:\[|\()[^\]\)]+(?:\]|\))/g,function($0){ return _String.prototype.trim.call($0).replace(/\s/g,""); });
			selector = selector.replace(/\s*( |>|\+|\:)\s*/g,"$1");
			(function(selsrc,root){
				if(selsrc.indexOf(",") != -1){
					var tmp = selsrc.split(",");
					for(var i=0 , l=tmp.length ; i<l ; i++) arguments.callee(tmp[i],root);
				}
				else{
					var sel_array = selsrc.replace(_sep_pattern,"%%SEP%%").replace(/%%NBSP%%/g," ").split("%%SEP%%") ,
						sep_match = selsrc.match(_sep_pattern) ,
						ret = [] ,
						r = -1 ,
						i=0 ,
						len=sel_array.length;
					if(!sep_match) sep_match = [];
					else sep_match.unshift(null);
					(function(INDEX,ROOT){
						var F = arguments.callee , ATT = null , PSEUDO = null , TAG = null , CLASS = null , ID = null;
						var SEL = sel_array[INDEX].replace(_att_pattern,function($0,name,value){
							if(!ATT) ATT = {}; ATT[name] = value;
							return "";
						}).replace(_pseudo_pattern,function($0,name,syntax){
							if(!PSEUDO) PSEUDO = {}; PSEUDO[name] = syntax;
							return "";
						}).replace(_classname_pattern,function($0,value){
							CLASS = value;
							return "";
						}).replace(_id_pattern,function($0,value){
							ID = value;
							return "";
						}).replace(_tagname_pattern,function($0){
							TAG = $0;
							return "";
						});
						var SEP = sep_match[INDEX];
						if(SEP == "+"){
							(function(){
								if(ROOT == document) return;
								var pE = _getBeforeElement(ROOT) , nE = _getNextElement(ROOT) , tmp = [];
								if(pE) tmp.push(pE); if(nE) tmp.push(nE); if(tmp.length < 1) return;
								for(var t=0 , n=tmp.length ; t<n ; t++)(function(ind,item){
									var flag = true;
									if(TAG && item.nodeName != TAG.toUpperCase()) flag = false;
									if(CLASS && !_isClass(item,CLASS)) flag = false;
									if(ID && item.id != ID) flag = false;
									if(ATT && !_isAtt(item,ATT)) flag = false;
									if(flag == true){
										if(INDEX < len - 1) F(INDEX + 1,item);
										else _ret[++_r] = item;
									}
								})(t,tmp[t]);
							})();
						}
						else{
							(function(){
								if(ID){
									var tmp = document.getElementById(ID);
									if(tmp && (ROOT == document || tmp.parentNode == ROOT) && (!ATT || _isAtt(tmp,ATT))){
										if(INDEX < len - 1) F(INDEX + 1,tmp);
										else _ret[++_r] = tmp;
									}
								}
								else{
									var tmp = (SEP == ">") ? _getChildElementsByTagName(ROOT,(TAG)?TAG:"*") : ROOT.getElementsByTagName((TAG)?TAG:"*");
									for(var t=0 , n=tmp.length ; t<n ; t++)(function(ind,item){
										var flag = true;
										if(CLASS && !_isClass(item,CLASS)) flag = false;
										if(ATT && !_isAtt(item,ATT)) flag = false;
										if(flag == true){
											if(INDEX < len - 1) F(INDEX + 1,item);
											else _ret[++_r] = item;
										}
									})(t,tmp[t]);
								}
							})();
						}
					})(i,root);
				}
			})(selector,_root);
		}
		return _ret;
	};
	
	
	
	function _clearChildNodes(obj){
		if(!obj) return;
		var cn = obj.childNodes , ret = new _Array();
		for(var i=cn.length-1 ; i>=0 ; i--){
			ret.push(cn[i]);
			obj.removeChild(cn[i]);
		}
		return ret.reverse();
	};
	
	
	
	function _serialize(form){
		var ret_obj = {};
		if(!form.isCE) form = _comElement(form);
		function addItem(name,value){
			value = encodeURIComponent(value);
			if(!ret_obj[name]) ret_obj[name] = value;
			else{
				if(_isArray(ret_obj[name])) ret_obj[name].push(value);
				else{
					ret_obj[name] = new _Array(ret_obj[name]);
					ret_obj[name].push(value);
				}
			}
		}
		form.E("input,select,textarea").each(function(index,item){
			if(!item.name) return;
			if(item.nodeName == "INPUT"){
				if(/text|password|hidden|submit|button|image/.test(item.type.toLowerCase())) addItem(item.name,item.value);
				else if(/radio|checkbox/.test(item.type.toLowerCase()) && item.checked == true) addItem(item.name,item.value);
			}
			else if(item.nodeName == "SELECT") item.E("option").each(function(index,opt){ if(opt.selected == true) addItem(item.name,item.value); });
			else if(item.nodeName == "TEXTAREA") addItem(item.name,item.value);
		});
		return ret_obj;
	};
	
	
	
	function _comElementCollection(){
		function ComCollection(selector){
			this.selector = { value : selector, type : undefined };
			this.length = 0;
		}
		ComCollection.prototype = {
			__additem : function(element){
				this[this.length] = _comElement(element);
				this.length++;
			},
			each : function(){
				var fn = (arguments.length > 0 && typeof arguments[0] == "function") ? arguments[0] : null;
				if(fn) for(var i=0 , l=this.length ; i<l ; i++) fn.call(this[i],i,this[i]);
				return this;
			},
			addEventListener : function(type,callback){
				var useCapture = (arguments.length > 2 && arguments[2] == true) ? true : false ;
				this.each(function(){ this.addEventListener(type,callback,useCapture); });
				return this;
			},
			removeEventListener : function(type,callback){
				var useCapture = (arguments.length > 2 && arguments[2] == true) ? true : false ;
				this.each(function(){ this.removeEventListener(type,callback,useCapture); });
				return this;
			},
			hover : function(fn1,fn2){
				var retid = (arguments[arguments.length - 1] == true) ? true : false ;
				this.each(function(){ this.hover(fn1,fn2,retid); });
				return this;
			},
			unhover : function(){
				var id = (arguments.length > 0 && typeof arguments[0] == "string") ? arguments[0] : null ;
				this.each(function(){ this.unhover(id); });
				return this;
			},
			isChildNode : function(parent){
				var isAll = (arguments.length > 1 && arguments[1] == true) ? true : false ;
				var ret = false;
				if(isAll) this.each(function(){ var r = this.isChildNode(parent); if(r) ret = r; });
				else ret = this[0].isChildNode(parent);
				return ret;
			},
			setStyle : function(){
				var style = arguments[0];
				var isAll = (arguments.length > 1 && arguments[1] == true) ? true : false ;
				if(isAll) return this.each(function(){ this.setStyle(style); });
				else return this[0].setStyle(style);
			},
			getSize : function(){
				var isAll = (arguments.length > 0 && arguments[0] == true) ? true : false ;
				if(isAll){
					var ret = new _Array();
					this.each(function(){ ret.push(this.getSize()); });
					return ret;
				}
				else return this[0].getSize();
			},
			getOffsetPosition : function(){
				var isAll = (arguments.length > 0 && arguments[0] == true) ? true : false ;
				if(isAll){
					var ret = new _Array();
					this.each(function(){ ret.push(this.getOffsetPosition()); });
					return ret;
				}
				else return this[0].getOffsetPosition();
			},
			setClass : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var isAll = (arg.item(-1) === true) ? true : false ;
				if(isAll){
					arg.remove(true);
					return this.each(function(){ this.setClass.apply(this,arg); });
				}
				else return this[0].setClass.apply(this[0],arg);
			},
			removeClass : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var isAll = (arg.item(-1) === true) ? true : false ;
				if(isAll){
					arg.remove(true);
					return this.each(function(){ this.removeClass.apply(this,arg); });
				}
				else return this[0].removeClass.apply(this[0],arg);
			},
			getClass : function(){
				var isAll = (arguments.length > 0 && arguments[0] == true) ? true : false ;
				if(isAll){
					var ret = new _Array();
					this.each(function(){ ret.push(this.getClass()); });
					return ret;
				}
				else return this[0].getClass();
			},
			setAtt : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var isAll = (((arg.length == 2 && typeof arg[0] == "object") || (arg.length == 3 && typeof arg[0] == "string")) && arg.item(-1) === true) ? true : false ;
				if(isAll){
					arg.splice(arg.length -1,1);
					return this.each(function(){ this.setAtt.apply(this,arg); });
				}
				else return this[0].setAtt.apply(this[0],arg);
			},
			getAtt : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var isAll = (((arg.length == 2 && typeof arg[0] == "string") || (arg.length == 1)) && arg.item(-1) === true) ? true : false ;
				if(isAll){
					arg.splice(arg.length -1,1);
					var ret = new _Array();
					this.each(function(){ ret.push(this.getAtt.apply(this,arg)); });
					return ret;
				}
				else return this[0].getAtt.apply(this[0],arg);
			},
			append : function(){
				var node = arguments[0];
				if(_isArray(node)) return this.each(function(index){ if(!!node[index]) this.append(node[index]); });
				else return this[0].append(node);
			},
			remove : function(){
				var node = arguments[0];
				if(_isArray(node)) return this.each(function(index){ if(!!node[index]) this.remove(node[index]); });
				else return this[0].remove(node);
			},
			before : function(){
				var node = arguments[0];
				if(_isArray(node)) return this.each(function(index){ if(!!node[index]) this.before(node[index]); });
				else return this[0].before(node);
			},
			after : function(){
				var node = arguments[0];
				if(_isArray(node)) return this.each(function(index){ if(!!node[index]) this.after(node[index]); });
				else return this[0].after(node);
			},
			animate : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				if(arg.item(-1) === true) this.each(function(){ this.animate.apply(this,arg); });
				else this[0].animate.apply(this,arg);
			}
		};
		var selector = arguments[0] ,
			parent = (arguments.length > 1 && arguments[1].nodeType == 1) ? arguments[1] : document ,
			ret = new ComCollection(selector);
		if(selector.nodeType == 1) ret.__additem(selector);
		else if(typeof selector == "object") for(var i in selector) ret.__additem(selector[i]);
		else _getElementsBySelector(selector,parent).each(function(){ ret.__additem(this); });
		return ret;
	};
	
	
	
	function _createComElement(html){
		/* this is under construnction */
		var arg = new _Array(); arg.push.apply(arg,arguments);
		var tag_pattern = /<(\/)?([^>]+)>/;
		var tagname_pattern = /^(A|ABBR|ACRONYM|ADDRESS|APPLET|AREA|B|BASE|BASEFONT|BDO|BGSOUND|BIG|BLINK|BLOCKQUOTE|BODY|BR|BUTTON|CAPTION|CENTER|CITE|CODE|COL|COLGROUP|COMMENT|DD|DEL|DFN|DIR|DIV|DL|DT|EM|EMBED|FIELDSET|FONT|FORM|FRAME|FRAMESET|H1|H2|H3|H4|H5|H6|HEAD|HR|HTML|I|IFRAME|ILAYER|IMG|INPUT|INS|ISINDEX|KBD|LABEL|LAYER|LEGEND|LI|LINK|LISTING|MAP|MARQUEE|MENU|META|MULTICOL|NOBR|NOEMBED|NOFRAMES|NOLAYER|NOSCRIPT|OBJECT|OL|OPTGROUP|OPTION|P|PARAM|PLAINTEXT|PRE|Q|RB|RP|RT|RUBY|S|SAMP|SCRIPT|SELECT|SMALL|SPACER|SPAN|STRIKE|STRONG|STYLE|SUB|SUP|TABLE|TBODY|TD|TEXTAREA|TFOOT|TH|THEAD|TITLE|TR|TT|U|UL|VAR|WBR|XMP)$/i;
		var empty_tag_pattern = /^(AREA|BASE|BASEFONT|BGSOUND|BR|COL|EMBED|FRAME|HR|IFRAME|ILAYER|IMG|INPUT|LINK|META|NOBR|SPACER)$/i;
		var block_tag_pattern = /^(BLOCKQUOTE|BODY|CAPTION|DD|DIV|DL|DT|FIELDSET|FORM|H1|H2|H3|H4|H5|H6|HTML|ILAYER|LAYER|LEGEND|LI|OL|P|PRE|TABLE|TBODY|TD|TFOOT|TH|THEAD|TR|UL)$/i;
		var att_pattern = / ([^=]+)(?:=["']?([^\'\"\]]+)['"]?)?/g;
		var ret = null;
		if(tagname_pattern.test(html)){
			ret = _comElement(document.createElement(html));
			if(arg.length > 1 && typeof arg[1] == "object") ret.att(arg[1]);
			if(arg.length > 2 && typeof arg[2] == "object") ret.setStyle(arg[2]);
		}
		else ret = document.createTextNode(html);
		return ret;
	};
	
	
	
	function _comElement(obj){
		var ret = null;
		_com._e.each(function(index){
			if(this == obj) ret = this;
		});
		if(!ret){
			ret = (function(element){
				if(element.addEventListener) element.__addEventListener = element.addEventListener;
				element.addEventListener = function(type,cb){
					var useCapture = (arguments.length > 2 && arguments[2] === true) ? true : false ;
					_bind(element,type,cb,useCapture);
					return element;
				};
				if(element.removeEventListener) element.__removeEventListener = element.removeEventListener;
				element.removeEventListener = function(type,cb){
					var useCapture = (arguments.length > 2 && arguments[2] === true) ? true : false ;
					_unbind(element,type,cb,useCapture);
					return element;
				};
				element.hover = function(fn1,fn2){
					var retid = (arguments[arguments.length - 1] == true) ? true : false ;
					return _hover(element,fn1,fn2,retid);
				};
				element.unhover = function(){
					var id = (arguments.length > 0 && typeof arguments[0] == "string") ? arguments[0] : null ;
					return _unhover(element,id);
				};
				element.isChildNode = function(parent){
					return _isChildNode(element,parent);
				};
				element.setStyle = function(style){
					_setStyle(element,style);
					return element;
				};
				element.getSize = function(){
					return _getSize(element);
				};
				element.getOffsetPosition = function(){
					return _getOffsetPosition(element);
				};
				element.setClass = function(){
					var arr = [element];
					for(var i=0,l=arguments.length ; i<l ; i++) arr.push(arguments[i]);
					return _setClass.apply(this,arr);
				};
				element.removeClass = function(){
					var arr = [element];
					for(var i=0,l=arguments.length ; i<l ; i++) arr.push(arguments[i]);
					return _removeClass.apply(this,arr);
				};
				element.isClass = function(){
					var arr = [element];
					for(var i=0,l=arguments.length ; i<l ; i++) arr.push(arguments[i]);
					return _isClass.apply(this,arr);
				};
				element.getClass = function(){
					return _getClass(element);
				};
				element.setAtt = function(){
					if(typeof arguments[0] == "object"){
						var override = (arguments.length > 1 && arguments[1] == true) ? true : false;
						for(var i in arguments[0]){
							if(!element.getAttribute(i) || override == true || i.toUpperCase() == "CLASS"){
								if(i.toUpperCase() == "CLASS") element.setClass(arguments[0][i]);
								else element.setAttribute(i,arguments[0][i]);
							}
						}
					}
					else if(arguments.length >= 2 && typeof arguments[0] == "string" && typeof arguments[1] == "string"){
						var override = (arguments.length > 2 && arguments[2] == true) ? true : false;
						if(!element.getAttribute(arguments[0]) || override == true || arguments[0].toUpperCase() == "CLASS"){
							if(arguments[0].toUpperCase() == "CLASS") element.setClass(arguments[1]);
							else element.setAttribute(arguments[0],arguments[1]);
						}
					}
					return element;
				};
				element.getAtt = function(){
					if(arguments.length > 0 && typeof arguments[0] == "string"){
						if(arguments[0].toUpperCase() == "CLASS") return element.className;
						else return element.getAttribute(arguments[0]);
					}
					else{
						var ret = {};
						for(var i=0 , l=element.attributes.length ; i<l ; i++)(function(){
							var att_name = (element.attributes[i].nodeName.toUpperCase == "CLASS" || element.attributes[i].nodeName.toUpperCase == "CLASSNAME") ? "class" : element.attributes[i].nodeName ;
							var att_value = (att_name == "class") ? element.className : element.getAttribute(att_name) ;
							ret[att_name] = att_value;
						})(i);
						return ret;
					}
				};
				element.att = function(){
					if(arguments.length < 1) return element.getAtt();
					else if(arguments.length == 1 && typeof arguments[0] == "string") return element.getAtt.apply(element,arguments);
					else if(arguments.length >= 1 && typeof arguments[0] == "object") return element.setAtt.apply(element,arguments);
					else if(arguments.length == 2) return element.setAtt.apply(element,arguments);
					else return element;
				};
				element.append = function(node){
					element.appendChild(node);
					return element;
				};
				element.remove = function(node){
					element.removeChild(node);
					return element;
				};
				element.before = function(node){
					element.parentNode.insertBefore(node,element);
					return element;
				};
				element.after = function(node){
					var strict = (arguments.length > 1 && arguments[1] == true) ? true : false ;
					var n = _getNextElement(element);
					if(strict && element.nextSibling) element.parentNode.insertBefore(node,element.NextSibling);
					else if(n) element.parentNode.insertBefore(node,n);
					else element.parentNode.appendChild(node);
					return element;
				};
				element.Delete = function(){
					var p = element.parentNode;
					if(arguments.length > 0 && arguments[0] == true){
						_clearChildNodes(element).each(function(index){
							p.insertBefore(this,element);
						});
						p.removeChild(element);
					}
					else{
						p.removeChild(element);
					}
					return element;
				};
				element.getElementsBySelector = function(selector){
					return _getElementsBySelector(selector,element);
				};
				element.D = element.getElementsBySelector;
				element.getBeforeElement = function(){
					return _getBeforeElement(element);
				};
				element.getNextElement = function(){
					return _getNextElement(element);
				};
				element.getChildElements = function(){
					return _getChildElements(element);
				};
				element.getChildElementsByTagName = function(tagname){
					return _getChildElementsByTagName(element,tagname);
				};
				element.clearChildNodes = function(){
					return _clearChildNodes(element);
				};
				element.serialize = function(){
					return _serialize(element);
				};
				element.getParentElementByTagName = function(tagName){
					return _getParentElementByTagName(element,tagName);
				};
				element.E = function(selector){
					return _comElementCollection(selector,element);
				};
				element.isCE = true;
				return element;
			})(obj);
			_com._e.push(ret);
		}
		return ret;
	};
	
	
	
	function _str2time(str){
		var now = new Date(),
			dest = new Date(),
			years   = (function(str){ var tmp = str.match(/(\d+)Y(ear(s)?)?/);   return (!!tmp) ? parseInt(tmp[1]) : 0 ; })(str),
			months  = (function(str){ var tmp = str.match(/(\d+)M(onth(s)?)?/);  return (!!tmp) ? parseInt(tmp[1]) : 0 ; })(str),
			days    = (function(str){ var tmp = str.match(/(\d+)D(ay(s)?)?/);    return (!!tmp) ? parseInt(tmp[1]) : 0 ; })(str),
			hours   = (function(str){ var tmp = str.match(/(\d+)h(our(s)?)?/);   return (!!tmp) ? parseInt(tmp[1]) : 0 ; })(str),
			minutes = (function(str){ var tmp = str.match(/(\d+)m(inute(s)?)?/); return (!!tmp) ? parseInt(tmp[1]) : 0 ; })(str),
			seconds = (function(str){ var tmp = str.match(/(\d+)s(econd(s)?)?/); return (!!tmp) ? parseInt(tmp[1]) : 0 ; })(str);
		if(years)   dest.setFullYear(now.getFullYear() + years);
		if(months)  dest.setMonth(now.getMonth() + months);
		if(days)    dest.setDate(now.getDate() + days);
		if(hours)   dest.setHours(now.getHours() + hours);
		if(minutes) dest.setMinutes(now.getMinutes() + minutes);
		if(seconds) dest.setSeconds(now.getSeconds() + seconds);
		return dest;
	};
	
	
	
	function _isGMT(str){
		return /\w\w\w, \d\d \w\w\w \d\d\d\d \d\d:\d\d:\d\d GMT/.test(str);
	};
	
	
	
	function _Cookie(){
		function c(){
			this.length = 0;
			this.Refresh();
		}
		c.prototype = {
			Refresh : function(){
				var C = this, tmp = new _Array(), l = 0;
				tmp.push.apply(tmp,document.cookie.replace(/\s?;\s?/,";").split(";"));
				tmp.each(function(){
					var tmp = _String.prototype.trim.call(this).replace(/\s?=\s?/,"=").split("=");
					C[tmp[0]] = tmp[1];
					l++;
				});
				this.length = l;
				return this;
			},
			Get : function(name){
				return (!!this[name]) ? this[name] : false ;
			},
			Set : function(){
				var C = this;
				var arg = new _Array(); arg.push.apply(arg,arguments);
				if(typeof arg[0] == "string") this.__Set.apply(this,arg);
				else if(typeof arg[0] == "object"){
					for(var n in arg[0])(function(){
						var args = []; args.push.apply(args,arguments);
						if(arg.length > 1) args.push(arg[1]);
						if(arg.length > 2) args.push(arg[2]);
						C.__Set.apply(C,args);
					})(n,arg[0][n]);
				}
				return this.Refresh();
			},
			__Set : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var name = arg[0];
				var value = arg[1];
				var expire = (function(){
					var ret = null;
					if(arg.length > 2 && arg[2] instanceof Date) ret = arg[2].toGMTString();
					else if(arg.length > 2 && typeof arg[2] == "string") ret = (_isGMT(arg[2])) ? arg[2] : _str2time(arg[2]).toGMTString() ;
					return ret;
				})();
				var path = (function(){
					var ret = location.pathname;
					if(arg.length > 3 && arg[3].charAt(0) == "/") ret = arg[3];
					return ret;
				})();
				var str = name + "=" + value + "; ";
				if(!!path) str += "path=" + path + "; ";
				if(!!expire) str += "expires=" + expire + "; ";
				document.cookie = str;
			}
		};
		return new c();
	};
	
	
	
	function _createXMLHttpRequest(){
		var XMLhttpObject = null;
		try{
			XMLhttpObject = new XMLHttpRequest();
		}
		catch(e){
			try{
				XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e){
				try{
					XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e){
					return null;
				}
			}
		};
		return XMLhttpObject;
	};
	
	
	
	function _crawl(){
		function Crawler(){
			this.XHR = _createXMLHttpRequest();
			this.response = {
				text : null, xml : null
			};
		};
		Crawler.prototype = {
			Load : function(url){
				var L = this , callback = (arguments.length > 1 && typeof arguments[1] == "function") ? arguments[1] : false  , errorfunc = (arguments.length > 2 && typeof arguments[2] == "function") ? arguments[2] : false ;
				this.XHR.open("GET",url,true);
				this.XHR.send(null);
				function DO(){
					if(L.XHR.responseText && L.XHR.status == 200){
						L.response.text = L.XHR.responseText;
						L.response.xml  = L.XHR.responseXML;
						if(callback) callback(L.response);
					}
					else{
						if(errorfunc) errorfunc();
					}
				}
				if(L.XHR.readyState == 4 && L.XHR.responseText) DO();
				else L.XHR.onreadystatechange = function(){ if(L.XHR.readyState == 4 && L.XHR.responseText){ DO(); } };
			},
			Post : function(url){
				if(arguments.length < 2){ this.Load(url); return; };
				var P = this , dat = this.CreateData(arguments[1]) , callback = (arguments.length > 2 && typeof arguments[2] == "function") ? arguments[2] : false  , errorfunc = (arguments.length > 3 && typeof arguments[3] == "function") ? arguments[3] : false ;
				this.XHR.open("POST",url,true);
				this.XHR.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				this.XHR.send(dat);
				function DO(){
					if(P.XHR.status == 200){
						P.response.text = P.XHR.responseText;
						P.response.xml  = P.XHR.responseXML;
						if(callback) callback(P.response);
					}
					else{
						if(errorfunc) errorfunc();
					}
				}
				if(P.XHR.readyState == 4 && P.XHR.responseText) DO();
				else P.XHR.onreadystatechange = function(){ if(P.XHR.readyState == 4 && P.XHR.responseText){ DO(); } };
			},
			CreateData : function(dat){
				return _createGetString((dat.nodeType == 1 && dat.nodeName == "FORM") ? _serialize(dat) : dat);
			}
		};
		return new Crawler();
	};
	
	
	
	function _decelerate(){
		function Decelerate(){
			this.available = true;
			this.timerID = null;
			this.fn = null;
			this.calc = function(p){ return p; };
			this.T = 1 * 1000;
			this.callback = null;
		};
		Decelerate.prototype = {
			Init : function(){
				this.available = true;
				this.timerID = null;
				this.fn = null;
				this.T = 1 * 1000;
				this.callback = null;
			},
			Stop : function(){
				this.available = false;
				clearTimeout(this.timerID);
				this.available = true;
			},
			Start : function(){
				var D = this;
				var t = 0;
				var p = 0;
				var start = new Date().getTime();
				(function(){
					t = new Date().getTime() - start;
					p = t / D.T;
					if(t < D.T && D.available == true){
						if(D.fn) D.fn.call(D,D.calc(p),p);
						D.timerID = setTimeout(arguments.callee,10);
					}
					else if(t >= D.T){
						if(D.fn) D.fn.call(D,1,1);
						if(D.callback) D.callback.call(D);
					}
				})();
			},
			Liner : function(){
				this.fn = (arguments.length > 0 && typeof arguments[0] == "function") ? arguments[0] : null;
				this.T = (arguments.length > 1 && !isNaN(arguments[1])) ? arguments[1] * 1000 : 1 * 1000;
				this.callback = (arguments.length > 2 && typeof arguments[2] == "function") ? arguments[2] : false;
				this.calc = function(p){ return p; };
			},
			Ease : function(){
				this.fn = (arguments.length > 0 && typeof arguments[0] == "function") ? arguments[0] : null;
				this.T = (arguments.length > 1 && !isNaN(arguments[1])) ? arguments[1] * 1000 : 1 * 1000;
				this.callback = (arguments.length > 2 && typeof arguments[2] == "function") ? arguments[2] : false;
				var ease = (arguments.length > 3 && !isNaN(arguments[3])) ? arguments[3] : -2;
				if(ease > 0) this.calc = function(p){ return Math.pow(p,ease); };
				else this.calc = function(p){ return 1 - Math.pow((1 - p),Math.abs(ease)); };
			},
			Trigon : function(){
				this.fn = (arguments.length > 0 && typeof arguments[0] == "function") ? arguments[0] : null;
				this.T = (arguments.length > 1 && !isNaN(arguments[1])) ? arguments[1] * 1000 : 1 * 1000;
				this.callback = (arguments.length > 2 && typeof arguments[2] == "function") ? arguments[2] : false;
				this.calc = function(p){ return Math.sin(Math.PI / 2 * (p)); };
			},
			Circle : function(){
				this.fn = (arguments.length > 0 && typeof arguments[0] == "function") ? arguments[0] : null;
				this.T = (arguments.length > 1 && !isNaN(arguments[1])) ? arguments[1] * 1000 : 1 * 1000;
				this.callback = (arguments.length > 2 && typeof arguments[2] == "function") ? arguments[2] : false;
				this.calc = function(p){ return Math.sqrt(2 * p - Math.pow(p,2)); };
			},
			Exp : function(){
				this.fn = (arguments.length > 0 && typeof arguments[0] == "function") ? arguments[0] : null;
				this.T = (arguments.length > 1 && !isNaN(arguments[1])) ? arguments[1] * 1000 : 1 * 1000;
				this.callback = (arguments.length > 2 && typeof arguments[2] == "function") ? arguments[2] : false;
				this.calc = function(p){ return 1 - Math.exp(-6 * p); };
			},
			OverShoot : function(){
				this.fn = (arguments.length > 0 && typeof arguments[0] == "function") ? arguments[0] : null;
				this.T = (arguments.length > 1 && !isNaN(arguments[1])) ? arguments[1] * 1000 : 1 * 1000;
				this.callback = (arguments.length > 2 && typeof arguments[2] == "function") ? arguments[2] : false;
				var ext = (arguments.length > 3 && !isNaN(arguments[3])) ? Math.abs(arguments[3]) : 3 ;
				var ease = (arguments.length > 4 && !isNaN(arguments[4])) ? Math.abs(arguments[4]) : 50 ;
				this.calc = function(p){ return 1+Math.exp(-ease/10*p)*Math.sin((ext*2+1)/2*Math.PI*p-Math.PI/2); };
			},
			Bounce : function(){
				this.fn = (arguments.length > 0 && typeof arguments[0] == "function") ? arguments[0] : null;
				this.T = (arguments.length > 1 && !isNaN(arguments[1])) ? arguments[1] * 1000 : 1 * 1000;
				this.callback = (arguments.length > 2 && typeof arguments[2] == "function") ? arguments[2] : false;
				var ext = (arguments.length > 3 && !isNaN(arguments[3])) ? Math.abs(arguments[3]) : 3 ;
				var ease = (arguments.length > 4 && !isNaN(arguments[4])) ? Math.abs(arguments[4]) : 50 ;
				this.calc = function(p){ return 1 - Math.exp(-ease/10*p)*Math.abs(Math.sin((ext*2-1)/2*Math.PI*p - Math.PI/2)); };
			},
			Throw : function(){
				this.fn = (arguments.length > 0 && typeof arguments[0] == "function") ? arguments[0] : null;
				this.T = (arguments.length > 1 && !isNaN(arguments[1])) ? arguments[1] * 1000 : 1 * 1000;
				this.callback = (arguments.length > 2 && typeof arguments[2] == "function") ? arguments[2] : false;
				var e1 = (arguments.length > 3 && !isNaN(arguments[3])) ? Math.abs(arguments[3]) : 4 ;
				var e2 = (arguments.length > 4 && !isNaN(arguments[4])) ? Math.abs(arguments[4]) : 6 ;
				if(e1 > 10) e1 /= 10;
				if(e2 > 10) e2 /= 10;
				e1 = 2 * Math.floor(e1 / 2);
				e2 = 2 * Math.floor(e2 / 2);
				this.calc = function(p){ return Math.pow(Math.pow(p-1,e1)-1,e2); };
			}
		};
		return new Decelerate();
	};
	
	
	
	function _SARI(element){
		var SR = this , pattern = /_f[12]\./;
		this.obj = (element.isCE) ? element : _comElement(element);
		this.f1 = new _Image().load(this.obj.src);
		this.f2 = new _Image().load(this.obj.src.replace(pattern,"_f2."),function(){ SR.SetRollOver(); });
		this.hid = null;
	};
	_SARI.prototype = {
		SetRollOver : function(){
			var SR = this;
			if(!this.obj.isClass(_com._SARI_className)) return;
			this.hid = this.obj.hover(function(){ SR.Swap(); },function(){ SR.Restore(); },true);
			_com._SARI_object[this.obj.eid] = this;
		},
		RemoveRollOver : function(){
			this.obj.unhover(this.hid);
			delete _com._SARI_object[this.obj.eid];
		},
		Swap : function(){
			this.obj.src = this.f2.src;
		},
		Restore : function(){
			this.obj.src = this.f1.src;
		}
	};
	
	
	
	function _SARI_setup(){
		_getElementsBySelector((_com._SARI_safemode == 0)?_com._SARI_className:"img."+_com._SARI_className+",input."+_com._SARI_className).each(function(){
			new _SARI(this);
		});
	};
	
	
	
	function _LBX(){
		var Arg = new _Array(); Arg.push.apply(Arg,arguments);
		var L = this;
		this.stat = 0;
		this.jamElements = new _Array();
		this.misc = _marge({
			curtain : {
				alpha : 0.8,
				speed : 0.5,
				isCloser : false
			},
			shutter : {
				isStep : false,
				speed : 0.5,
				isAnime : true
			},
			viewer : {
				isAnime : true,
				speed : 0.5
			},
			closeButton : {
				type : "close",
				event : {
					click : function(){ L.Quit(); }
				},
				speed : 0.5
			},
			prevButton : {
				type : "step",
				speed : 0.5
			},
			nextButton : {
				type : "step",
				speed : 0.5
			},
			loading : {
				type : "loading",
				speed : 0.5,
				opacity : 1
			}
		},((Arg.length > 0 && typeof Arg[0] == "object") ? Arg[0] : {}),true);
		this.event = {
			__Init : function(){
				if(!!L.misc.event) _marge(this,L.misc.event);
			}
		};
		this.curtain = {
			obj : _createComElement("div"),
			dec : _decelerate(),
			size : { w : 0 , h : 0 },
			pos : { x : 0 , y : 0 },
			opacity : 0,
			alpha : L.misc.curtain.alpha,
			speed : L.misc.curtain.speed,
			isCloser : L.misc.curtain.isCloser,
			style : { backgroundColor : "#000000" },
			Show : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var C = this,
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				L.HideJamElements();
				this.obj.setStyle({
					position : "absolute",
					zIndex : _com._highestdepth + 1,
					opacity : 0
				});
				this.Resize();
				document.body.appendChild(this.obj);
				this.dec.Stop();
				this.dec.Trigon(function(p){
					var o = C.alpha * p;
					if(C.opacity <= o){
						C.obj.setStyle({ opacity : o });
						C.opacity = o;
					}
				},C.speed,function(){
					if(callback) callback();
				});
				this.dec.Start();
			},
			Hide : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var C = this,
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				this.dec.Stop();
				this.dec.Trigon(function(p){
					var o = C.alpha * (1 - p);
					if(C.opacity >= o){
						C.obj.setStyle({ opacity : o });
						C.opacity = o;
					}
				},C.speed,function(){
					if(callback) callback();
					C.obj.Delete();
					C.obj.setStyle({
						position : "absolute",
						zIndex : _com._highestdepth + 1,
						top : "0px",
						left : "0px",
						opacity : 0
					});
					L.ShowJamElements();
				});
				this.dec.Start();
			},
			Resize : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var S = this,
					SI = _getScreenInfo(),
					wid = (arg.length > 0 && arg[0] != null && !isNaN(arg[0])) ? arg[0] : _maximum(
						SI.page.width ,
						L.shutter.pos.x + L.shutter.size.w + L.shutter.offset.right ,
						L.shutter.closeButton.pos.x + L.shutter.closeButton.size.w ,
						L.shutter.prevButton.pos.x  + L.shutter.prevButton.size.w ,
						L.shutter.nextButton.pos.x  + L.shutter.nextButton.size.w
					),
					hei = (arg.length > 1 && arg[1] != null && !isNaN(arg[1])) ? arg[1] : _maximum(
						SI.page.height ,
						L.shutter.pos.y + L.shutter.size.h + L.shutter.offset.bottom ,
						L.shutter.closeButton.pos.y + L.shutter.closeButton.size.h ,
						L.shutter.prevButton.pos.y  + L.shutter.prevButton.size.h ,
						L.shutter.nextButton.pos.y  + L.shutter.nextButton.size.h
					) + 50, 
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				this.size.w = wid;
				this.size.h = hei;
				this.obj.setStyle({
					width : this.size.w + "px",
					height : this.size.h + "px",
					left : SI.scroll.left + "px"
				});
				if(callback) callback();
			},
			Init : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var C = this,
					misc = (arg.length > 0 && typeof arg[0] == "object") ? arg[0] : {} ;
				if(L.misc.curtain.alpha != undefined) this.alpha = (L.misc.curtain.alpha < 1) ? L.misc.curtain.alpha : L.misc.curtain.alpha / 100 ;
				if(L.misc.curtain.style != undefined) this.style = _marge(this.style,L.misc.curtain.style,true);
				this.size = { w : 0 , h : 0 };
				this.pos = { x : 0 , y : 0 };
				this.opacity = 0;
				this.obj.setStyle({
					position : "absolute",
					zIndex : _com._highestdepth + 1,
					top : "0px",
					left : "0px",
					opacity : 0
				});
				this.obj.setStyle(this.style);
				_com._onresize_items.push(function(){ C.Resize(); });
				_com._onscroll_items.push(function(){ C.Resize(); });
			}
		};
		function shutterButton(){
			var arg = new _Array(); arg.push.apply(arg,arguments);
			var SB = this;
			this.misc = misc = (arg.length > 0 && typeof arg[0] == "object") ? arg[0] : {};
			this.obj = _comElement(document.createElement((this.misc.nodeName) ? this.misc.nodeName : "div"));
			this.Mdec = _decelerate();
			this.Sdec = _decelerate();
			this.opacity = 0;
			this.stat = 0;
			this.speed = this.misc.speed;
			this.type = (this.misc.type && /close|step|loading/.test(this.misc.type)) ? this.misc.type : "close" ;
			this.position = (this.misc.position) ? this.misc.position : "top right outset";
			this.pos = { x : 0 , y : 0 };
			this.size = { w : 0 , h : 0 };
			this.style = _marge({
				opacity : this.opacity,
				display : "inline",
				color : "#ffffff",
				cursor : "pointer",
				zIndex : _com._highestdepth + 4,
				position : "absolute",
				left : "0px",
				top : "0px"
			},(this.misc.style)?this.misc.style:{},true);
			this.style = _marge(this.style,(_com._browser.nav == "MSIE") ? { zoom : 1 } : { display : "inline-block" });
			this.label = (function(){
				var ret = document.createTextNode(SB.type);
				if(SB.misc.label){
					if(SB.misc.label.nodeType == 1){
						var st = {
							padding : "0px",
							backgroundColor : "transparent"
						};
						SB.style = _marge(SB.style,st);
						ret = (SB.misc.label.isCE) ? SB.misc.label : _comElement(SB.misc.label) ;
						if(ret.nodeType == 1 && ret.nodeName == "IMG" && /_f[12]\./.test(ret.src))(function(){
							var f1 = document.createElement("img"); f1.src = ret.src.replace(/_f[12]\./,"_f1.");
							var f2 = document.createElement("img"); f2.src = ret.src.replace(/_f[12]\./,"_f2.");
							ret.addEventListener("mouseover",function(){ ret.src = f2.src });
							ret.addEventListener("mouseout" ,function(){ ret.src = f1.src });
						})()
					}
					else if(typeof SB.misc.label == "string"){
						if(/.*?\.(gif|jpg|png)$/.test(SB.misc.label)){
							var img = _comElement(document.createElement("img"));
							var st = {
								height : "0px",
								padding : "0px",
								backgroundColor : "transparent",
								overflow : "hidden"
							};
							img.addEventListener("load",function(){
								st["width"] = img.width + "px";
								st["paddingTop"] = img.height + "px";
								st["backgroundImage"] = "url(" + img.src + ")";
								SB.style = _marge(SB.style,st);
								SB.obj.setStyle(SB.style);
								SB.size = { w : img.width , h : img.height };
							});
							img.src = SB.misc.label;
							if(/_f[12]\./.test(img.src))(function(){
								var f1 = document.createElement("img"); f1.src = img.src.replace(/_f[12]\./,"_f1.");
								var f2 = document.createElement("img"); f2.src = img.src.replace(/_f[12]\./,"_f2.");
								SB.obj.addEventListener("mouseover",function(){ SB.obj.setStyle({ backgroundImage : "url(" + f2.src + ")" }); });
								SB.obj.addEventListener("mouseout" ,function(){ SB.obj.setStyle({ backgroundImage : "url(" + f1.src + ")" }); });
							})();
						}
						else{
							ret.nodeValue = SB.misc.label;
						}
					}
				}
				return ret;
			})();
			this.obj.append(this.label);
			if(this.misc.event){
				for(var i in this.misc.event){
					this.obj.addEventListener(i,this.misc.event[i]);
				}
			}
		};
		shutterButton.prototype = {
			Show : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var SB = this,
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				if(!this.obj.parentNode) document.body.appendChild(this.obj);
				this.Sdec.Stop();
				if(this.type == "loading"){
					this.obj.Delete();
					this.obj.setStyle({ opacity : 1 });
					this.opacity = 1;
					document.body.appendChild(this.obj);
					if(callback) callback;
				}
				else{
					this.Sdec.Trigon(function(p){
						var o = p;
						if(SB.opacity <= o){
							SB.obj.setStyle({ opacity : o });
							SB.opacity = o;
						}
					},this.speed,callback);
					this.Sdec.Start();
				}
			},
			Hide : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var SB = this,
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				this.Sdec.Stop();
				this.Sdec.Trigon(function(p){
					var o = 1 - p;
					if(SB.opacity >= o){
						SB.obj.setStyle({ opacity : o });
						SB.opacity = o;
					}
				},this.speed,function(){
					SB.Delete();
					if(callback) callback();
				});
				this.Sdec.Start();
			},
			Delete : function(){
				this.obj.Delete();
				this.opacity = 0;
				this.pos = { x : 0 , y : 0 };
				this.obj.setStyle(this.style);
			},
			MoveTo : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var SB = this,
					t = (arg.length > 0 && typeof arg[0] == "object") ? arg[0] : { x : this.pos.x , y : this.pos.y , w : 0 , h : 0 },
					isAnime = (arg.length > 1 && arg[1] == true) ? true : false ,
					SI = _getScreenInfo(),
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				if(this.type == "close"){
					var posV = this.position.toLowerCase().match(/top|bottom/i) || "bottom";
					var posH = this.position.toLowerCase().match(/center|left|right/i) || "center";
					var posA = this.position.toLowerCase().match(/inset|outset/i) || "outset";
				}
				else{
					var posV = this.position.toLowerCase().match(/top|center|bottom/i) || "center";
					var posH = this.position.toLowerCase().match(/left|right/i) || "left";
					var posA = this.position.toLowerCase().match(/inset|outset/i) || "outset";
				}
				if(this.obj.parentNode != document.body) document.body.appendChild(this.obj);
				tX = (function(){
					if(SB.type == "close"){
						if(posH == "left") return t.x;
						else if(posH == "right") return t.x + t.w - SB.obj.offsetWidth;
						else return t.x + (t.w - SB.obj.offsetWidth) / 2;
					}
					else if(SB.type == "step"){
						if(posA == "outset"){
							if(posH == "left") return t.x - SB.obj.offsetWidth;
							else return t.x + t.w;
						}
						else{
							if(posH == "left") return t.x;
							else return t.x + t.w - SB.obj.offsetWidth;
						}
					}
					else if(SB.type == "loading"){
						return (SI.window.width - SB.obj.offsetWidth) / 2 + SI.scroll.left;
					}
				})();
				tY = (function(){
					if(SB.type == "close"){
						if(posA == "outset"){
							if(posV == "top") return t.y - SB.obj.offsetHeight;
							else return t.y + t.h;
						}
						else{
							if(posV == "top") return t.y;
							else return t.y + t.h - SB.obj.offsetHeight;
						}
					}
					else if(SB.type == "step"){
						if(posV == "top") return t.y;
						else if(posV == "bottom") return t.y + t.h - SB.obj.offsetHeight;
						else return t.y + (t.h - SB.obj.offsetHeight) / 2;
					}
					else if(SB.type == "loading"){
						return SI.scroll.top + SI.window.height * 0.3;
					}
				})();
				if(isAnime){
					var p = { x : this.pos.x , y : this.pos.y };
					var t = { x : tX , y : tY };
					var d = { x : t.x - p.x , y : t.y - p.y };
					this.Mdec.Stop();
					this.Mdec.Trigon(function(P){
						var x = p.x + d.x * P;
						var y = p.y + d.y * P;
						SB.obj.setStyle({
							left : x + "px",
							top  : y + "px"
						});
						SB.pos.x = x;
						SB.pos.y = y;
					},0.5,callback);
					this.Mdec.Start();
				}
				else{
					this.pos.x = tX;
					this.pos.y = tY;
					this.obj.setStyle({
						left : this.pos.x + "px",
						top  : this.pos.y + "px"
					});
				}
			},
			Init : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var SB = this,
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				this.obj.setStyle(this.style);
			}
		};
		this.shutter = {
			obj : _createComElement("div"),
			dec : _decelerate(),
			size : { w : 0 , h : 0 },
			pos : { x : 0 , y : 0 },
			speed : L.misc.shutter.speed,
			opacity : 0,
			offset : _marge({ top : 30 , right : 0 , bottom : 20 , left : 0 },(L.misc.shutter.offset)?L.misc.shutter.offset:{},true),
			style : (L.misc.shutter.style) ? L.misc.shutter.style : {},
			isStep : (L.misc.shutter.isStep && L.misc.shutter.isStep == true) ? true : false ,
			isAnime : (L.misc.shutter.isAnime && L.misc.shutter.isAnime == true) ? true : false ,
			closeButton : new shutterButton(L.misc.closeButton),
			prevButton : new shutterButton(L.misc.prevButton),
			nextButton : new shutterButton(L.misc.nextButton),
			loading : new shutterButton(L.misc.loading),
			Show : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var S = this,
					SI = _getScreenInfo(),
					dat = (arg.length > 0 && typeof arg[0] == "object") ? arg[0] : {},
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				this.pos.x = SI.window.width / 2 + this.offset.left;
				this.pos.y = this.offset.top + SI.scroll.top;
				this.obj.setStyle({ left : this.pos.x + "px", top : this.pos.y + "px" });
				this.obj.setStyle(this.style);
				document.body.appendChild(this.obj);
				document.body.appendChild(this.closeButton.obj);
				if(callback) callback();
			},
			Hide : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var S = this,
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				this.obj.setStyle({ opacity : 0 });
				this.opacity = 0;
				if(_com._browser.nav == "MSIE"){
					this.obj.outerHTML = "";
				}
				else{
					this.obj.Delete();
				}
				this.Init();
				if(callback) callback();
			},
			Resize : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var S = this,
					SI = _getScreenInfo(),
					wid = (arg.length > 0 && !isNaN(arg[0])) ? arg[0] : 0,
					hei = (arg.length > 1 && !isNaN(arg[1])) ? arg[1] : 0, 
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				this.dec.Stop();
				var p = { w : this.size.w , h : this.size.h , x : this.pos.x , y : this.pos.y };
				var t = { w : wid , h : hei , x : (SI.window.width - wid) / 2 + SI.scroll.left + this.offset.left ,  y : this.offset.top + SI.scroll.top };
				var d = { w : t.w - p.w , h : t.h - p.h , x : t.x - p.x , y : t.y - p.y };
				if(t.x + t.w + S.offset.right > L.curtain.size.w) L.curtain.Resize(t.x + t.w + S.offset.right,null);
				if(t.y + t.h + S.offset.bottom > L.curtain.size.h) L.curtain.Resize(null,t.y + t.h + S.offset.bottom);
				this.closeButton.MoveTo(t,(this.closeButton.opacity !== 0) ? true : false);
				if(this.isStep) this.prevButton.MoveTo(t,(this.prevButton.opacity !== 0) ? true : false);
				if(this.isStep) this.nextButton.MoveTo(t,(this.nextButton.opacity !== 0) ? true : false);
				if(this.opacity < 1) this.obj.setStyle({ opacity : 1 });
				if(this.isAnime){
					this.dec.Trigon(function(n){
						S.size.w = p.w + d.w * n;
						S.pos.x = p.x + d.x * n;
						S.obj.setStyle({
							width : S.size.w + "px",
							left : S.pos.x + "px"
						});
					},S.speed,function(){
						S.dec.Trigon(function(m){
							S.size.h = p.h + d.h * m;
							S.pos.y = p.y + d.y * m;
							S.obj.setStyle({
								height : S.size.h + "px",
								top : S.pos.y + "px"
							});
						},S.speed,function(){
							if(S.closeButton.opacity === 0) S.closeButton.Show();
							if(callback) callback();
							if(!!L.event.Resize) L.event.Resize(L);
						});
						S.dec.Start();
					});
					this.dec.Start();
				}
				else{
					this.obj.setStyle({
						width : t.w + "px",
						height : t.h + "px",
						left : t.x + "px",
						top : t.y + "px"
					});
					if(this.closeButton.opacity === 0) this.closeButton.Show();
					if(callback) callback();
					if(!!L.event.Resize) L.event.Resize(L);
				}
			},
			Init : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var S = this ,
					misc = (arg.length > 0 && typeof arg[0] == "object") ? arg[0] : {} ;
				this.size = { w : 0 , h : 0 };
				this.pos = { x : 0 , y : 0 };
				for(var i in misc) this[i] = misc[i];
				this.obj.setStyle({
					position : "absolute",
					zIndex : _com._highestdepth + 2,
					left : this.pos.x + "px",
					top : this.pos.y + "px",
					width : this.size.w + "px",
					height : this.size.h + "px",
					overflow : "hidden",
					opacity : this.opacity
				});
				this.obj.setStyle(this.style);
			}
		};
		this.viewer = {
			obj : _createComElement("div"),
			dec : _decelerate(),
			opacity : 1,
			speed : L.misc.viewer.speed,
			isAnime : L.misc.viewer.isAnime,
			isLoaded : false,
			Load : function(){
				if(arguments.length < 1) return;
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var V = this, 
					SI = _getScreenInfo(),
					dat = (arg.length > 1 && typeof arg[1] == "object") ? arg[1] : {} ,
					callback = (arg.length > 1 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				L.shutter.obj.append(this.obj);
				this.obj.setStyle({
					opacity : this.opacity
				});
				var src = (arg[0] != null) ? arg[0] : null; if(dat.src != undefined) src = dat.src;
				var wid = (dat.width  != undefined) ? parseInt(dat.width)  : 0;
				var hei = (dat.height != undefined) ? parseInt(dat.height) : 0;
				if(typeof src == "function"){
					src(callback);
				}
				else if(src.nodeType == 1){
					var content = (src.isCE) ? src : _comElement(src);
					this.obj.append(content);
					if(content.readyState && !/complete|loaded/.test(content.readyState)){
						content.addEventListener("load",function(){
							V.isLoaded = true;
							L.shutter.Resize((wid) ? wid : content.offsetWidth,(hei) ? hei : content.offsetHeight,callback);
							if(!!L.event.Load) L.event.Load(L);
						});
					}
					else{
						this.isLoaded = true;
						L.shutter.Resize((wid) ? wid : content.offsetWidth,(hei) ? hei : content.offsetHeight,callback);
						if(!!L.event.Load) L.event.Load(L);
					}
				}
				else if(typeof src == "string"){
					if(/.*?(jpg|gif|png)$/.test(src)){
						var img = _createComElement("img");
						var stage = _createComElement("div");
						this.obj.append(stage);
						img.addEventListener("load",function(){
							V.isLoaded = true;
							stage.setStyle({
								width : ((wid) ? wid : img.width) + "px",
								height : ((hei) ? hei : img.height) + "px",
								backgroundImage : "url(" + src + ")",
								opacity : V.opacity
							});
							L.shutter.Resize((wid) ? wid : img.width,(hei) ? hei : img.height,callback);
							if(!!L.event.Load) L.event.Load(L);
						});
						img.src = src;
					}
					else{
						L.shutter.loading.MoveTo();
						L.shutter.loading.Show();
						if(_com._browser.nav == "Firefox"){
							L.shutter.Resize((wid) ? wid : SI.window.width * 0.75,(hei) ? hei : SI.window.height * 0.75,function(){
								var frame = _createComElement("iframe");
								frame.setAtt("frameBorder","0");
								frame.frameBorder = 0;
								frame.src = src;
								V.obj.append(frame);
								frame.addEventListener("load",function(){
									V.isLoaded = true;
									L.shutter.loading.Hide();
									if(callback) callback();
									if(!!L.event.Load) L.event.Load(L);
								});
								frame.setStyle({
									border : "0px",
									width : ((wid) ? wid : SI.window.width * 0.75) + "px",
									height : ((hei) ? hei : SI.window.height * 0.75) + "px"
								});
							});
						}
						else{
							var frame = _createComElement("iframe");
							frame.setAtt("frameBorder","0");
							frame.frameBorder = 0;
							frame.src = src;
							V.obj.append(frame);
							frame.addEventListener("load",function(){
								V.isLoaded = true;
								L.shutter.loading.Hide();
								if(callback) callback();
								L.shutter.Resize((wid) ? wid : SI.window.width * 0.75,(hei) ? hei : SI.window.height * 0.75,function(){
									if(callback) callback();
									if(!!L.event.Load) L.event.Load(L);
								});
							});
							frame.setStyle({
								border : "0px",
								width : ((wid) ? wid : SI.window.width * 0.75) + "px",
								height : ((hei) ? hei : SI.window.height * 0.75) + "px"
							});
						}
					}
				}
			},
			Show : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var V = this,
					content = this.obj.getChildElements(),
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				content = (content.length > 0) ? _comElement(content[0]) : null;
				this.dec.Stop();
				this.dec.Trigon(function(p){
					var o = p;
					if(V.opacity <= o){
						V.obj.setStyle({ opacity : o });
						if(content) content.setStyle({ opacity : o });
						V.opacity = o;
					}
				},this.speed,callback);
				this.dec.Start();
			},
			Hide : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var V = this,
					content = this.obj.getChildElements(),
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				content = (content.length > 0) ? _comElement(content[0]) : null;
				this.dec.Stop();
				this.dec.Trigon(function(p){
					var o = 1 - p;
					if(V.opacity >= o){
						V.obj.setStyle({ opacity : o });
						if(content) content.setStyle({ opacity : o });
						V.opacity = o;
					}
				},this.speed,function(){
					if(callback) callback();
				});
				this.dec.Start();
			},
			Clear : function(){
				var arg = new _Array(); arg.push.apply(arg,arguments);
				var V = this,
					callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
				this.obj.clearChildNodes();
				this.obj.Delete();
				this.opacity = 1;
				if(callback) callback();
			}
		};
		this.stat = 0;
		this.Init();
	};
	_LBX.prototype = {
		Init : function(){
			var L = this;
			if(this.curtain.isCloser === true) this.curtain.obj.onclick = function(){ L.Quit(); };
			this.event.__Init();
			this.curtain.Init();
			this.shutter.Init();
			this.shutter.closeButton.Init();
			this.shutter.prevButton.Init();
			this.shutter.nextButton.Init();
			this.shutter.loading.Init();
			if(!!this.event.Init) this.event.Init(this);
		},
		SetUp : function(){
			var arg = new _Array(); arg.push.apply(arg,arguments);
			var L = this,
				callback = (arg.length > 1 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
			this.stat = 1;
			this.curtain.Show(0.5,function(){
				L.shutter.Show(callback);
			});
		},
		Show : function(src){
			this.viewer.Load(src);
		},
		Quit : function(){
			var L = this;
			this.stat = 0;
			this.shutter.closeButton.Hide();
			if(this.shutter.isStep) this.shutter.prevButton.Hide();
			if(this.shutter.isStep) this.shutter.nextButton.Hide();
			this.viewer.Hide(function(){
				L.viewer.Clear(function(){
					L.shutter.Hide();
					L.curtain.Hide(function(){
						if(!!L.event.Quit) L.event.Quit(L);
					});
				});
			});
		},
		Simple : function(src){
			var arg = new _Array(); arg.push.apply(arg,arguments);
			var L = this,
				dat = (arg.length > 1 && typeof arg[1] == "object") ? arg[1] : {},
				callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null ;
			this.stat = 1;
			_com._highestdepth = _com._highestdepth.refresh();
			this.curtain.Show(0.8,function(){
				L.shutter.Show(function(){
					L.viewer.Load(src,dat,function(){
						L.viewer.Show(callback);
					});
				});
			});
		},
		ShowJamElements : function(){
			this.jamElements.each(function(){
				this.setStyle({ visibility : "visible" });
			});
			this.jamElements = new _Array();
		},
		HideJamElements : function(){
			var L = this;
			var selector = (arguments.length > 0 && typeof arguments == "string") ? arguments[0] : "select" ;
			_comElementCollection(selector).each(function(){
				L.jamElements.push(this);
				this.setStyle({ visibility : "hidden" });
			});
			if(_com._browser.nav == "Firefox" && _com._browser.plf.major == "MacOSX"){
				_getElementsBySelector("object").each(function(){
					if(/flash/.test(this.outerHTML)){
						L.jamElements.push(this);
						this.setStyle({ visibility : "hidden" });
					}
				});
			}
		}
	};
	
	
	
	function _LBXSet(){
		var arg = new _Array(); arg.push.apply(arg,arguments);
		var L = this,
			dat = (arg.length > 0 && _isArray(arg[0])) ? arg[0] : [];
		this.dat = new _Array(); this.dat.push.apply(this.dat,dat);
		this.misc = _marge({
			curtain : { alpha : 0.8, callback : null },
			shutter : { isStep : true, callback : null },
			load : { callback : null },
			viewer : { callback : null },
			prevButton : {
				event : {
					click : function(){ L.Step(-1); }
				}
			},
			nextButton : {
				event : {
					click : function(){ L.Step(1); }
				}
			}
		},((arg.length > 1 && typeof arg[1] == "object") ? arg[1] : {}),true);
		this.LBX = new _LBX(this.misc);
		this.article = _Array();
		this.current = 0;
		this.Init();
	};
	_LBXSet.prototype = {
		Init : function(){
			var L = this;
			this.dat.each(function(index,item){
				var target = (!!item.keyObject) ? item.keyObject : null ;
				var src = item.src;
				var type = (!!item.type) ? item.type : "click";
				var dat = (!!item.dat) ? item.dat : {};
				var index = item.index;
				if(!!target) target.addEventListener(type,function(evt){
					_com._highestdepth = _com._highestdepth.refresh();
					L.LBX.Init(L.misc);
					L.LBX.curtain.Show(L.misc.curtain.alpha,function(){
						if(L.misc.curtain.callback) L.misc.curtain.callback();
						L.LBX.shutter.Show(function(){
							if(L.misc.shutter.callback) L.misc.shutter.callback();
							L.LBX.viewer.Load(src,dat,function(){
								L.current = index;
								if(L.misc.load.callback) L.misc.Load.callback();
								L.LBX.viewer.Show(function(){
									if(L.misc.viewer.callback) L.misc.viewer.callback();
								});
								if(L.dat.length > 1){
									if(index > 0) L.LBX.shutter.prevButton.Show();
									else L.LBX.shutter.prevButton.MoveTo({x:-5000,y:-5000,w:0,h:0});
									if(index < L.dat.length - 1) L.LBX.shutter.nextButton.Show();
									else L.LBX.shutter.nextButton.MoveTo({x:-5000,y:-5000,w:0,h:0});
								}
							});
						});
					});
					if(evt.preventDefault) evt.preventDefault();
					else event.returnValue = false;
				});
			});
		},
		Start : function(){
			var L = this;
			var index = (arguments.length > 0 && !isNaN(arguments[0])) ? arguments[0] : 0 ;
			var item = this.dat[index];
			var target = item.keyObject;
			var src = item.src;
			var type = (!!item.type) ? item.type : "click";
			var dat = (!!item.dat) ? item.dat : {};
			var index = item.index;
			_com._highestdepth = _com._highestdepth.refresh();
			L.LBX.Init(L.misc);
			L.LBX.curtain.Show(L.misc.curtain.alpha,function(){
				if(L.misc.curtain.callback) L.misc.curtain.callback();
				L.LBX.shutter.Show(function(){
					if(L.misc.shutter.callback) L.misc.shutter.callback();
					L.LBX.viewer.Load(src,dat,function(){
						L.current = index;
						if(L.misc.load.callback) L.misc.Load.callback();
						L.LBX.viewer.Show(function(){
							if(L.misc.viewer.callback) L.misc.viewer.callback();
						});
						if(L.dat.length > 1){
							if(index > 0) L.LBX.shutter.prevButton.Show();
							else L.LBX.shutter.prevButton.MoveTo({x:-5000,y:-5000,w:0,h:0});
							if(index < L.dat.length - 1) L.LBX.shutter.nextButton.Show();
							else L.LBX.shutter.nextButton.MoveTo({x:-5000,y:-5000,w:0,h:0});
						}
					});
				});
			});
		},
		Step : function(){
			var arg = new _Array(); arg.push.apply(arg,arguments);
			var L = this,
				nextindex = (arg.length > 0 && !isNaN(arg[0])) ? (function(){
					if(L.current + arg[0] < 0) return 0;
					else if(L.current + arg[0] > L.dat.length - 1) return L.dat.length - 1;
					else return L.current + arg[0];
				})() : 0 ,
				callback = (arg.length > 0 && typeof arg.item(-1) == "function") ? arg.item(-1) : null;
			if(nextindex === 0) L.LBX.shutter.prevButton.Hide();
			if(nextindex === this.dat.length - 1) L.LBX.shutter.nextButton.Hide();
			L.LBX.viewer.Hide(function(){
				L.LBX.viewer.Clear(function(){
					L.LBX.viewer.opacity = 0;
					L.LBX.viewer.Load(L.dat[nextindex].src,L.dat[nextindex].dat,function(){
						L.current = nextindex;
						if(L.misc.load.callback) L.misc.Load.callback();
						L.LBX.viewer.Show(function(){
							if(L.misc.viewer.callback) L.misc.viewer.callback();
						});
						if(L.dat.length > 1){
							if(nextindex > 0) L.LBX.shutter.prevButton.Show();
							else L.LBX.shutter.prevButton.MoveTo({x:-5000,y:-5000,w:0,h:0});
							if(nextindex < L.dat.length - 1) L.LBX.shutter.nextButton.Show();
							else L.LBX.shutter.nextButton.MoveTo({x:-5000,y:-5000,w:0,h:0});
						}
					});
				});
			});
		}
	};
	
	
	
	function _LBXDefault(){
		_com._highestdepth = _com._highestdepth.refresh();
		var template = _marge({
			closeButton : {
				label : "close",
				position : "top right outset",
				style : {
					backgroundColor : "#ffffff",
					color : "#000000",
					fontSize : "12px",
					lineHeight : "1.3",
					fontFamily : "meiryo,Hiragino Kaku Gothic Pro,Arial",
					padding : "2px 5px"
				}
			},
			prevButton : {
				label : "prev",
				position : "center left outset",
				style : {
					backgroundColor : "#ffffff",
					color : "#000000",
					fontSize : "12px",
					lineHeight : "1.3",
					fontFamily : "meiryo,Hiragino Kaku Gothic Pro,Arial",
					padding : "2px 5px"
				}
			},
			nextButton : {
				label : "next",
				position : "center right outset",
				style : {
					backgroundColor : "#ffffff",
					color : "#000000",
					fontSize : "12px",
					lineHeight : "1.3",
					fontFamily : "meiryo,Hiragino Kaku Gothic Pro,Arial",
					padding : "2px 5px"
				}
			},
			shutter : {
				style : {
					backgroundColor : "#ffffff"
				},
				offset : {
					top : 30
				}
			},
			loading : {
				label : "Now Loading ...",
				style : {
					backgroundColor : "#ffffff",
					color : "#000000",
					fontSize : "12px",
					lineHeight : "1.3",
					fontFamily : "meiryo,Hiragino Kaku Gothic Pro,Arial",
					padding : "2px 5px"
				}
			}
		},((arguments.length > 0 && typeof arguments[0] == "object") ? arguments[0] : {}),true);
		/*var myLBX = new _LBX(template);*/
		function GetSrc(item){
			var ret = { src : null, dat : {} },
				size_pattern = /LBXSize:([\d]+),([\d]+)/;
			if(size_pattern.test(item.className)){
				ret.dat.width = item.className.match(size_pattern)[1];
				ret.dat.height = item.className.match(size_pattern)[2];
			}
			if(item.src && /.*?_S(?:_f[12])?\.(?:gif|jpg|png)$/.test(item.src)) ret.src = item.src.replace("_S","_L");
			else if(item.href) ret.src = item.href;
			return ret;
		}
		var group = new _Array();
		_comElementCollection(".LBX").each(function(index,item){
			if(/LBXGroup:([\d]+)/.test(item.className)){
				var gid = item.className.match(/LBXGroup:([\d]+)/)[1];
				if(group[gid]) group[gid].push(item);
				else group[gid] = new _Array(item);
			}
			else{
				var tmp = GetSrc(item);
				if(tmp.src) item.addEventListener("click",function(evt){
					myLBX.Simple(tmp.src,tmp.dat);
					if(evt.preventDefault) evt.preventDefault();
					else event.returnValue = false;
				});
			}
		});
		group.each(function(index,arr){
			if(!arr) return;
			var dat = [];
			arr.each(function(item_index,item){
				var tmp = GetSrc(item);
				if(tmp.src){
					dat.push({
						"index" : dat.length,
						src : tmp.src,
						dat : tmp.dat,
						keyObject : item
					});
				}
			});
			var myLBXSet = new _LBXSet(dat,template);
		});
	};
	/*this._startup_items.push(function(){ _LBXDefault(); });*/
	
	
	
	function _fade(obj){
		function Fade(obj){
			this.obj = (obj.isCE) ? obj : _comElement(obj);
			this.style = obj.currentStyle || document.defaultView.getComputedStyle(obj,'');
			this.alpha = 1;
			this.timerID = null;
			this.getAlpha();
		};
		Fade.prototype = {
			setAlpha : function(value){
				this.obj.setStyle({ opacity : value });
				this.alpha = value;
			},
			getAlpha : function(){
				if(_com._browser.nav == "MSIE"){
					var tmp = this.style.filter.match(/alpha\(opacity=([0-9]+)\)/);
					this.alpha = (tmp) ? tmp[1] / 100 : 1;
				}
				else this.alpha = this.style.opacity;
				return this.alpha;
			},
			In : function(){
				var a = (arguments.length > 0) ? arguments[0] : 5 ;
				var callback = (arguments.length > 0 && typeof arguments[arguments.length - 1] == "function") ? arguments[arguments.length - 1] : false ;
				this.To(1,a,callback);
			},
			Out : function(){
				var a = (arguments.length > 0) ? arguments[0] : 5 ;
				var callback = (arguments.length > 0 && typeof arguments[arguments.length - 1] == "function") ? arguments[arguments.length - 1] : false ;
				this.To(0,a,callback);
			},
			To : function(value){
				var F = this ,
					a = (arguments.length > 1) ? arguments[1] : 5 ,
					callback = (arguments.length > 2 && typeof arguments[2] == "function") ? arguments[2] : false ,
					pA = this.alpha ,
					tA = value ,
					dA = tA - pA ,
					Dec = _decelerate();
				Dec.Trigon(function(p){
					F.setAlpha(pA + dA * p);
				},a,callback);
				Dec.Start();
			}
		};
		return new Fade(obj);
	};
	
	
	
	function _scroll(){
		function Scroll(){
			this.obj = (arguments.length > 0) ? arguments[0] : window ;
			this.dec = _decelerate();
			this.timerID = null;
		};
		Scroll.prototype = {
			To : function(){
				var S = this , screenInfo = _getScreenInfo() , pX = screenInfo.scroll.left , pY = screenInfo.scroll.top;
				var tX = (arguments[0] == "undefined" || isNaN(arguments[0])) ? pX : arguments[0] ;
				if(tX > screenInfo.page.width)  tX = screenInfo.page.width;
				var tY = (arguments[1] == "undefined" || isNaN(arguments[1])) ? pY : arguments[1] ;
				if(tY > screenInfo.page.height) tY = screenInfo.page.height;
				var dX = tX - pX , dY = tY - pY;
				var a = (arguments.length > 2 && !isNaN(arguments[2])) ? arguments[2] : 5 ;
				if(a > 1) a = 1 / a;
				var callback = (arguments.length > 3 && typeof arguments[3] == "function") ? arguments[3] : false ;
				this.dec.Stop();
				this.dec.Ease(function(p){
					var x = pX + dX * p , y = pY + dY * p;
					S.obj.scrollTo(x,y);
				},a,callback);
				this.dec.Start();
			}
		};
		var obj = (arguments.length > 0) ? arguments[0] : window ;
		return new Scroll(obj);
	};
	
	
	
	function _mailto2link(){
		function Span(element){
			var S = this;
			this.obj = element;
			this.address = null;
			this.Init();
		};
		Span.prototype = {
			Init : function(){
				var S = this;
				this.address = (function(){
					if(!S.obj.childNodes || S.obj.childNodes.length < 1) return null;
					if(S.obj.childNodes[0].nodeName == "IMG"){ return S.obj.childNodes[0].alt; }
					else{ return S.obj.childNodes[0].nodeValue; }
				})();
				if(this.address) _bind(this.obj,"click",function(){ self.location.href = "mailto:" + S.address; });
			}
		};
		var span = [];
		_getElementsBySelector("span." + _com._mailto_className).each(function(){ span.push(new Span(this)); });
	};
	/* -------------------- SWFObject -------------------- */
	/*! SWFObject v2.2 <http://code.google.com/p/swfobject/> 
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
	*/
	_swfobject = function() {
		var UNDEF = "undefined", OBJECT = "object", SHOCKWAVE_FLASH = "Shockwave Flash", SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash", FLASH_MIME_TYPE = "application/x-shockwave-flash", EXPRESS_INSTALL_ID = "SWFObjectExprInst", ON_READY_STATE_CHANGE = "onreadystatechange", win = window, doc = document, nav = navigator, plugin = false, domLoadFnArr = [main], regObjArr = [], objIdArr = [], listenersArr = [], storedAltContent, storedAltContentId, storedCallbackFn, storedCallbackObj, isDomLoaded = false, isExpressInstallActive = false, dynamicStylesheet, dynamicStylesheetMedia, autoHideShow = true,
		ua = function() { var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF, u = nav.userAgent.toLowerCase(), p = nav.platform.toLowerCase(), windows = p ? /win/.test(p) : /win/.test(u), mac = p ? /mac/.test(p) : /mac/.test(u), webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, ie = !+"\v1", playerVersion = [0,0,0], d = null; if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) { d = nav.plugins[SHOCKWAVE_FLASH].description; if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { plugin = true; ie = false; d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10); playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10); playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0; } } else if (typeof win.ActiveXObject != UNDEF) { try { var a = new ActiveXObject(SHOCKWAVE_FLASH_AX); if (a) { d = a.GetVariable("$version"); if (d) { ie = true; d = d.split(" ")[1].split(","); playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; } } } catch(e) {} } return { w3:w3cdom, pv:playerVersion, wk:webkit, ie:ie, win:windows, mac:mac }; }(),
		onDomLoad = function() { if (!ua.w3) { return; } if ((typeof doc.readyState != UNDEF && doc.readyState == "complete") || (typeof doc.readyState == UNDEF && (doc.getElementsByTagName("body")[0] || doc.body))) { callDomLoadFunctions(); } if (!isDomLoaded) { if (typeof doc.addEventListener != UNDEF) { doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, false); }		 if (ua.ie && ua.win) { doc.attachEvent(ON_READY_STATE_CHANGE, function() { if (doc.readyState == "complete") { doc.detachEvent(ON_READY_STATE_CHANGE, arguments.callee); callDomLoadFunctions(); } }); if (win == top) { (function(){ if (isDomLoaded) { return; } try { doc.documentElement.doScroll("left"); } catch(e) { setTimeout(arguments.callee, 0); return; } callDomLoadFunctions(); })(); } } if (ua.wk) { (function(){ if (isDomLoaded) { return; } if (!/loaded|complete/.test(doc.readyState)) { setTimeout(arguments.callee, 0); return; } callDomLoadFunctions(); })(); } addLoadEvent(callDomLoadFunctions); } }();
		function callDomLoadFunctions() { if (isDomLoaded) { return; } try { var t = doc.getElementsByTagName("body")[0].appendChild(createElement("span")); t.parentNode.removeChild(t); } catch (e) { return; } isDomLoaded = true; var dl = domLoadFnArr.length; for (var i = 0; i < dl; i++) { domLoadFnArr[i](); } }
		function addDomLoadEvent(fn) { if (isDomLoaded) { fn(); } else {  domLoadFnArr[domLoadFnArr.length] = fn; } }
		function addLoadEvent(fn) { if (typeof win.addEventListener != UNDEF) { win.addEventListener("load", fn, false); } else if (typeof doc.addEventListener != UNDEF) { doc.addEventListener("load", fn, false); } else if (typeof win.attachEvent != UNDEF) { addListener(win, "onload", fn); } else if (typeof win.onload == "function") { var fnOld = win.onload; win.onload = function() { fnOld(); fn(); }; } else { win.onload = fn; } }
		function main() {  if (plugin) { testPlayerVersion(); } else { matchVersions(); } }
		function testPlayerVersion() { var b = doc.getElementsByTagName("body")[0]; var o = createElement(OBJECT); o.setAttribute("type", FLASH_MIME_TYPE); var t = b.appendChild(o); if (t) { var counter = 0; (function(){ if (typeof t.GetVariable != UNDEF) { var d = t.GetVariable("$version"); if (d) { d = d.split(" ")[1].split(","); ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; } } else if (counter < 10) { counter++; setTimeout(arguments.callee, 10); return; } b.removeChild(o); t = null; matchVersions(); })(); } else { matchVersions(); } }
		function matchVersions() { var rl = regObjArr.length; if (rl > 0) { for (var i = 0; i < rl; i++) { var id = regObjArr[i].id; var cb = regObjArr[i].callbackFn; var cbObj = {success:false, id:id}; if (ua.pv[0] > 0) { var obj = getElementById(id); if (obj) { if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) { setVisibility(id, true); if (cb) { cbObj.success = true; cbObj.ref = getObjectById(id); cb(cbObj); } } else if (regObjArr[i].expressInstall && canExpressInstall()) { var att = {}; att.data = regObjArr[i].expressInstall; att.width = obj.getAttribute("width") || "0"; att.height = obj.getAttribute("height") || "0"; if (obj.getAttribute("class")) { att.styleclass = obj.getAttribute("class"); } if (obj.getAttribute("align")) { att.align = obj.getAttribute("align"); } var par = {}; var p = obj.getElementsByTagName("param"); var pl = p.length; for (var j = 0; j < pl; j++) { if (p[j].getAttribute("name").toLowerCase() != "movie") { par[p[j].getAttribute("name")] = p[j].getAttribute("value"); } } showExpressInstall(att, par, id, cb); } else { displayAltContent(obj); if (cb) { cb(cbObj); } } } } else { setVisibility(id, true); if (cb) { var o = getObjectById(id); if (o && typeof o.SetVariable != UNDEF) {  cbObj.success = true; cbObj.ref = o; } cb(cbObj); } } } } }
		function getObjectById(objectIdStr) { var r = null; var o = getElementById(objectIdStr); if (o && o.nodeName == "OBJECT") { if (typeof o.SetVariable != UNDEF) { r = o; } else { var n = o.getElementsByTagName(OBJECT)[0]; if (n) { r = n; } } } return r; }
		function canExpressInstall() { return !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312); }
		function showExpressInstall(att, par, replaceElemIdStr, callbackFn) { isExpressInstallActive = true; storedCallbackFn = callbackFn || null; storedCallbackObj = {success:false, id:replaceElemIdStr}; var obj = getElementById(replaceElemIdStr); if (obj) { if (obj.nodeName == "OBJECT") { storedAltContent = abstractAltContent(obj); storedAltContentId = null; } else { storedAltContent = obj; storedAltContentId = replaceElemIdStr; } att.id = EXPRESS_INSTALL_ID; if (typeof att.width == UNDEF || (!/%$/.test(att.width) && parseInt(att.width, 10) < 310)) { att.width = "310"; } if (typeof att.height == UNDEF || (!/%$/.test(att.height) && parseInt(att.height, 10) < 137)) { att.height = "137"; } doc.title = doc.title.slice(0, 47) + " - Flash Player Installation"; var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn", fv = "MMredirectURL=" + win.location.toString().replace(/&/g,"%26") + "&MMplayerType=" + pt + "&MMdoctitle=" + doc.title; if (typeof par.flashvars != UNDEF) { par.flashvars += "&" + fv; } else { par.flashvars = fv; } if (ua.ie && ua.win && obj.readyState != 4) { var newObj = createElement("div"); replaceElemIdStr += "SWFObjectNew"; newObj.setAttribute("id", replaceElemIdStr); obj.parentNode.insertBefore(newObj, obj); obj.style.display = "none"; (function(){ if (obj.readyState == 4) { obj.parentNode.removeChild(obj); } else { setTimeout(arguments.callee, 10); } })(); } createSWF(att, par, replaceElemIdStr); } }
		function displayAltContent(obj) { if (ua.ie && ua.win && obj.readyState != 4) { var el = createElement("div"); obj.parentNode.insertBefore(el, obj); el.parentNode.replaceChild(abstractAltContent(obj), el); obj.style.display = "none"; (function(){ if (obj.readyState == 4) { obj.parentNode.removeChild(obj); } else { setTimeout(arguments.callee, 10); } })(); } else { obj.parentNode.replaceChild(abstractAltContent(obj), obj); } } 
		function abstractAltContent(obj) { var ac = createElement("div"); if (ua.win && ua.ie) { ac.innerHTML = obj.innerHTML; } else { var nestedObj = obj.getElementsByTagName(OBJECT)[0]; if (nestedObj) { var c = nestedObj.childNodes; if (c) { var cl = c.length; for (var i = 0; i < cl; i++) { if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) { ac.appendChild(c[i].cloneNode(true)); } } } } } return ac; }
		function createSWF(attObj, parObj, id) { var r, el = getElementById(id); if (ua.wk && ua.wk < 312) { return r; } if (el) { if (typeof attObj.id == UNDEF) { attObj.id = id; } if (ua.ie && ua.win) { var att = ""; for (var i in attObj) { if (attObj[i] != Object.prototype[i]) { if (i.toLowerCase() == "data") { parObj.movie = attObj[i]; } else if (i.toLowerCase() == "styleclass") { att += ' class="' + attObj[i] + '"'; } else if (i.toLowerCase() != "classid") { att += ' ' + i + '="' + attObj[i] + '"'; } } } var par = ""; for (var j in parObj) { if (parObj[j] != Object.prototype[j]) { par += '<param name="' + j + '" value="' + parObj[j] + '" />'; } } el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>'; objIdArr[objIdArr.length] = attObj.id; r = getElementById(attObj.id);	 } else { var o = createElement(OBJECT); o.setAttribute("type", FLASH_MIME_TYPE); for (var m in attObj) { if (attObj[m] != Object.prototype[m]) { if (m.toLowerCase() == "styleclass") { o.setAttribute("class", attObj[m]); } else if (m.toLowerCase() != "classid") { o.setAttribute(m, attObj[m]); } } } for (var n in parObj) { if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { createObjParam(o, n, parObj[n]); } } el.parentNode.replaceChild(o, el); r = o; } } return r; }
		function createObjParam(el, pName, pValue) { var p = createElement("param"); p.setAttribute("name", pName);	 p.setAttribute("value", pValue); el.appendChild(p); }
		function removeSWF(id) { var obj = getElementById(id); if (obj && obj.nodeName == "OBJECT") { if (ua.ie && ua.win) { obj.style.display = "none"; (function(){ if (obj.readyState == 4) { removeObjectInIE(id); } else { setTimeout(arguments.callee, 10); } })(); } else { obj.parentNode.removeChild(obj); } } }
		function removeObjectInIE(id) { var obj = getElementById(id); if (obj) { for (var i in obj) { if (typeof obj[i] == "function") { obj[i] = null; } } obj.parentNode.removeChild(obj); } }
		function getElementById(id) { var el = null; try { el = doc.getElementById(id); } catch (e) {} return el; }
		function createElement(el) { return doc.createElement(el); }
		function addListener(target, eventType, fn) { target.attachEvent(eventType, fn); listenersArr[listenersArr.length] = [target, eventType, fn]; }
		function hasPlayerVersion(rv) { var pv = ua.pv, v = rv.split("."); v[0] = parseInt(v[0], 10); v[1] = parseInt(v[1], 10) || 0; v[2] = parseInt(v[2], 10) || 0; return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false; }
		function createCSS(sel, decl, media, newStyle) { if (ua.ie && ua.mac) { return; } var h = doc.getElementsByTagName("head")[0]; if (!h) { return; } var m = (media && typeof media == "string") ? media : "screen"; if (newStyle) { dynamicStylesheet = null; dynamicStylesheetMedia = null; } if (!dynamicStylesheet || dynamicStylesheetMedia != m) {  var s = createElement("style"); s.setAttribute("type", "text/css"); s.setAttribute("media", m); dynamicStylesheet = h.appendChild(s); if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) { dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1]; } dynamicStylesheetMedia = m; } if (ua.ie && ua.win) { if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) { dynamicStylesheet.addRule(sel, decl); } } else { if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) { dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + "}")); } } }
		function setVisibility(id, isVisible) { if (!autoHideShow) { return; } var v = isVisible ? "visible" : "hidden"; if (isDomLoaded && getElementById(id)) { getElementById(id).style.visibility = v; } else { createCSS("#" + id, "visibility:" + v); } }
		function urlEncodeIfNecessary(s) { var regex = /[\\\"<>\.;]/; var hasBadChars = regex.exec(s) != null; return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s; }
		var cleanup = function() { if (ua.ie && ua.win) { window.attachEvent("onunload", function() { var ll = listenersArr.length; for (var i = 0; i < ll; i++) { listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]); } var il = objIdArr.length; for (var j = 0; j < il; j++) { removeSWF(objIdArr[j]); } for (var k in ua) { ua[k] = null; } ua = null; for (var l in _swfobject) { _swfobject[l] = null; } _swfobject = null; }); } }();
		return {
			registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) { if (ua.w3 && objectIdStr && swfVersionStr) { var regObj = {}; regObj.id = objectIdStr; regObj.swfVersion = swfVersionStr; regObj.expressInstall = xiSwfUrlStr; regObj.callbackFn = callbackFn; regObjArr[regObjArr.length] = regObj; setVisibility(objectIdStr, false); } else if (callbackFn) { callbackFn({success:false, id:objectIdStr}); } },
			getObjectById: function(objectIdStr) { if (ua.w3) { return getObjectById(objectIdStr); } },
			embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) { var callbackObj = {success:false, id:replaceElemIdStr}; if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) { setVisibility(replaceElemIdStr, false); addDomLoadEvent(function() { widthStr += ""; heightStr += ""; var att = {}; if (attObj && typeof attObj === OBJECT) { for (var i in attObj) { att[i] = attObj[i]; } } att.data = swfUrlStr; att.width = widthStr; att.height = heightStr; var par = {};  if (parObj && typeof parObj === OBJECT) { for (var j in parObj) { par[j] = parObj[j]; } } if (flashvarsObj && typeof flashvarsObj === OBJECT) { for (var k in flashvarsObj) { if (typeof par.flashvars != UNDEF) { par.flashvars += "&" + k + "=" + flashvarsObj[k]; } else { par.flashvars = k + "=" + flashvarsObj[k]; } } } if (hasPlayerVersion(swfVersionStr)) { var obj = createSWF(att, par, replaceElemIdStr); if (att.id == replaceElemIdStr) { setVisibility(replaceElemIdStr, true); } callbackObj.success = true; callbackObj.ref = obj; } else if (xiSwfUrlStr && canExpressInstall()) { att.data = xiSwfUrlStr; showExpressInstall(att, par, replaceElemIdStr, callbackFn); return; } else { setVisibility(replaceElemIdStr, true); } if (callbackFn) { callbackFn(callbackObj); } }); } else if (callbackFn) { callbackFn(callbackObj);	} },
			switchOffAutoHideShow: function() { autoHideShow = false; },
			ua: ua,
			getFlashPlayerVersion: function() { return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] }; },
			hasFlashPlayerVersion: hasPlayerVersion,
			createSWF: function(attObj, parObj, replaceElemIdStr) { if (ua.w3) { return createSWF(attObj, parObj, replaceElemIdStr); } else { return undefined; } },
			showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) { if (ua.w3 && canExpressInstall()) { showExpressInstall(att, par, replaceElemIdStr, callbackFn); } },
			removeSWF: function(objElemIdStr) { if (ua.w3) { removeSWF(objElemIdStr); } },
			createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) { if (ua.w3) { createCSS(selStr, declStr, mediaStr, newStyleBoolean); } },
			addDomLoadEvent: addDomLoadEvent,
			addLoadEvent: addLoadEvent,
			getQueryParamValue: function(param) { var q = doc.location.search || doc.location.hash; if (q) { if (/\?/.test(q)) { q = q.split("?")[1]; } if (param == null) { return urlEncodeIfNecessary(q); } var pairs = q.split("&"); for (var i = 0; i < pairs.length; i++) { if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) { return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1))); } } } return ""; },
			expressInstallCallback: function() { if (isExpressInstallActive) { var obj = getElementById(EXPRESS_INSTALL_ID); if (obj && storedAltContent) { obj.parentNode.replaceChild(storedAltContent, obj); if (storedAltContentId) { setVisibility(storedAltContentId, true); if (ua.ie && ua.win) { storedAltContent.style.display = "block"; } } if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); } } isExpressInstallActive = false; }  }
		};
	}();
	_com.swfobject = _swfobject;
	
	
	
	var Dom = {
		complete : function(){
			if(_com._DOM === true) return;
			_com._DOM = true;
			Dom.onload();
		},
		check : function(){
			var nav = _com._browser.nav;
			var ver = _com._browser.ver.major;
			if((nav == "Safari" && ver >= 4) || (nav != "Safari" && document.addEventListener)){
				document.addEventListener("DOMContentLoaded", Dom.complete, false);
			}
			else if(navigator.userAgent.toUpperCase().indexOf("MSIE") != -1 && window == top){
				(function(){
					try{
						document.documentElement.doScroll("left");
					}
					catch(e){
						setTimeout(arguments.callee,10);
						return;
					}
					Dom.complete();
				})();
				document.onreadystatechange = function(){
					if(document.readyState == "complete"){
						document.onreadystatechange = null;
						Dom.complete();
					}
				}
			}
			else if(navigator.userAgent.match(/webkit|safari|khtml/i)){
				var timerID = setInterval(function(){
					if(document.readyState.match(/loaded|complete/)){
						Dom.complete();
						clearInterval(timerID);
					}
				},10);
			}
			else{
				window.onload = function(){
					Dom.complete();
					if(typeof _com.__WindowOnload == "function") __WindowOnload();
				}
			}
		},
		onload : function(){
			_com._startup_items.each(function(){ this(); });
		}
	};
	Dom.check();
	window.onresize = function(){ _com._onresize_items.each(function(){ this(); }); if(typeof _com.__WindowOnresize == "function") _com.__WindowOnresize() };
	window.onscroll = function(){ _com._onscroll_items.each(function(){ this(); }); if(typeof _com.__WindowOnscroll == "function") _com.__WindowOnscroll() };
	
	window[OBJECT_NAME] = _com;
})();

