// CSS3MultiColumn - a javascript implementation of the CSS3 multi-column module ⼀⼀ 瘀㄀⸀　㄀ 戀攀琀愀 ⴀ 伀挀琀⸀ ㄀　 ㈀　　㔀// Copyright (c) 2005 C�dric Savarese <pro@4213miles.com> ⼀⼀ 吀栀椀猀 猀漀昀琀眀愀爀攀 椀猀 氀椀挀攀渀猀攀搀 甀渀搀攀爀 琀栀攀 䌀䌀ⴀ䜀一唀 䰀䜀倀䰀 㰀栀琀琀瀀㨀⼀⼀挀爀攀愀琀椀瘀攀挀漀洀洀漀渀猀⸀漀爀最⼀氀椀挀攀渀猀攀猀⼀䰀䜀倀䰀⼀㈀⸀㄀⼀㸀 ⼀⼀ 䘀漀爀 愀搀搀椀琀椀漀渀愀氀 椀渀昀漀爀洀愀琀椀漀渀Ⰰ 猀攀攀 㨀 栀琀琀瀀㨀⼀⼀眀眀眀⸀挀猀猀挀爀椀瀀琀椀渀最⸀挀漀洀⼀ ⼀⼀ 匀甀瀀瀀漀爀琀攀搀 倀爀漀瀀攀爀琀椀攀猀㨀 // column-count  ⼀⼀ 挀漀氀甀洀渀ⴀ眀椀搀琀栀ऀ// column-gap ⼀⼀ 挀漀氀甀洀渀ⴀ爀甀氀攀 ⼀⼀ 唀渀猀甀瀀瀀漀爀琀攀搀 倀爀漀瀀攀爀琀椀攀猀㨀 // column-rule-width (use column-rule instead) ⼀⼀ 挀漀氀甀洀渀ⴀ爀甀氀攀ⴀ猀琀礀氀攀 ⠀甀猀攀 挀漀氀甀洀渀ⴀ爀甀氀攀 椀渀猀琀攀愀搀⤀// column-rule-color (use column-rule instead) ⼀⼀ 挀漀氀甀洀渀ⴀ猀瀀愀渀// column-width-policy ⼀⼀ 挀漀氀甀洀渀ⴀ猀瀀愀挀攀ⴀ搀椀猀琀爀椀戀甀琀椀漀渀 function CSS3MultiColumn() { ऀ⼀⼀愀氀攀爀琀⠀✀䐀攀瘀攀氀漀瀀洀攀渀琀 嘀攀爀猀椀漀渀✀⤀㬀	var cssCache = new Object(); ऀ瘀愀爀 猀瀀氀椀琀愀戀氀攀吀愀最猀 㴀 渀攀眀 䄀爀爀愀礀⠀✀倀✀Ⰰ✀䐀䤀嘀✀Ⰰ ✀匀倀䄀一✀Ⰰ ✀䈀䰀伀䌀䬀儀唀伀吀䔀✀Ⰰ✀䄀䐀䐀刀䔀匀匀✀Ⰰ✀倀刀䔀✀Ⰰ ✀䄀✀Ⰰ ✀䔀䴀✀Ⰰ ✀䤀✀Ⰰ ✀匀吀刀伀一䜀✀Ⰰ ✀䈀✀Ⰰ ✀䌀䤀吀䔀✀Ⰰ ✀伀䰀✀Ⰰ ✀唀䰀✀Ⰰ ✀䰀䤀✀ ⤀㬀	var pseudoCSSRules = new Object(); ऀ瘀愀爀 甀琀 㴀 渀攀眀 䌀匀匀㌀唀琀椀氀椀琀礀⠀⤀㬀 ऀ瘀愀爀 搀攀戀甀最 㴀 甀琀⸀搀攀戀甀最㬀	if(document.location.search.match('mode=debug')) var isDebug = true; ऀ攀氀猀攀 瘀愀爀 椀猀䐀攀戀甀最 㴀 昀愀氀猀攀㬀		 ऀ瘀愀爀 戀攀猀琀匀瀀氀椀琀倀漀椀渀琀 㴀 渀甀氀氀㬀 	var secondSplitPoint = null; ऀ瘀愀爀 猀攀挀漀渀搀匀瀀氀椀琀䈀漀琀琀漀洀 㴀 　㬀	var documentReady = false; ऀ	// INITIALIZATION ऀ甀琀⸀堀䈀爀漀眀猀攀爀䄀搀搀䔀瘀攀渀琀䠀愀渀搀氀攀爀⠀眀椀渀搀漀眀Ⰰ✀氀漀愀搀✀Ⰰ昀甀渀挀琀椀漀渀⠀⤀ 笀 搀漀挀甀洀攀渀琀刀攀愀搀礀 㴀 琀爀甀攀㬀  瀀爀漀挀攀猀猀䔀氀攀洀攀渀琀猀⠀⤀㬀 紀 ⤀㬀	loadStylesheets(); ऀ	// CSS PARSING ऀ⼀⼀ ⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀ	// loadStylesheets:  ऀ⼀⼀ 䰀漀漀瀀 琀栀爀漀甀最栀 琀栀攀 猀琀礀氀攀猀栀攀攀琀猀 挀漀氀氀攀挀琀椀漀渀 愀渀搀 氀漀愀搀 琀栀攀 挀猀猀 琀攀砀琀 椀渀琀漀 琀栀攀 挀猀猀䌀愀挀栀攀 漀戀樀攀挀琀ऀ	function loadStylesheets() { ऀऀ椀昀⠀搀漀挀甀洀攀渀琀⸀猀琀礀氀攀匀栀攀攀琀猀⤀ 笀ऀ⼀⼀ 䘀椀爀攀昀漀砀 ☀ 䤀䔀			// initialize cache ऀऀऀ昀漀爀⠀瘀愀爀 椀㴀　㬀椀 㰀 搀漀挀甀洀攀渀琀⸀猀琀礀氀攀匀栀攀攀琀猀⸀氀攀渀最琀栀㬀椀⬀⬀⤀ 笀ऀऀऀ				cssCache[document.styleSheets[i].href] = false; ऀऀऀ紀			// load css in the cache			 ऀऀऀ昀漀爀⠀瘀愀爀 椀㴀　㬀椀 㰀 搀漀挀甀洀攀渀琀⸀猀琀礀氀攀匀栀攀攀琀猀⸀氀攀渀最琀栀㬀椀⬀⬀⤀ 笀ऀऀऀऀऀऀ				loadCssCache(document.styleSheets[i], 'parseStylesheets'); ऀऀऀ紀		} else if (document.getElementsByTagName) { // OPERA ऀऀऀ瘀愀爀 䰀琀 㴀 搀漀挀甀洀攀渀琀⸀最攀琀䔀氀攀洀攀渀琀猀䈀礀吀愀最一愀洀攀⠀✀氀椀渀欀✀⤀㬀			// initialize cache ऀऀऀ昀漀爀⠀瘀愀爀 椀㴀 　㬀 椀㰀䰀琀⸀氀攀渀最琀栀㬀 椀⬀⬀⤀ 笀				cssCache[Lt[i].href] = false; ऀऀऀ紀			// load css in the cache	 ऀऀऀ昀漀爀⠀瘀愀爀 椀㴀 　㬀 椀㰀䰀琀⸀氀攀渀最琀栀㬀 椀⬀⬀⤀ 笀				loadCssCache(Lt[i], 'parseStylesheets'); ऀऀऀ紀			//var St = document.getElementsByTagName('style'); ऀऀ紀	} 	// loadCssCache ऀ⼀⼀ 䄀猀礀渀挀栀爀漀渀漀甀猀 昀甀渀挀琀椀漀渀⸀ 䌀愀氀氀 琀栀攀 ✀挀愀氀氀戀愀挀欀✀ 昀甀渀挀琀椀漀渀 眀栀攀渀 搀漀渀攀⸀	function loadCssCache(s, callback) { ऀऀ椀昀 ⠀猀⸀栀爀攀昀 ☀☀ 猀⸀挀猀猀吀攀砀琀⤀ 笀			cssCache[s.href] = s.cssText; ऀऀऀ攀瘀愀氀⠀挀愀氀氀戀愀挀欀⤀⠀⤀㬀		} ऀऀ椀昀 ⠀猀⸀栀爀攀昀 ☀☀ 琀礀瀀攀漀昀 堀䴀䰀䠀琀琀瀀刀攀焀甀攀猀琀℀㴀✀甀渀搀攀昀椀渀攀搀✀⤀ 笀ऀ			var xmlhttp = new XMLHttpRequest();  ऀऀऀ⼀⼀椀昀⠀砀洀氀栀琀琀瀀⸀愀戀漀爀琀⤀ 砀洀氀栀琀琀瀀⸀愀戀漀爀琀⠀⤀㬀			xmlhttp.onreadystatechange = function() { ऀऀऀऀ椀昀⠀砀洀氀栀琀琀瀀⸀爀攀愀搀礀匀琀愀琀攀 㴀㴀 㐀⤀ 笀					if(typeof xmlhttp.status == 'undefined' || xmlhttp.status == 200 || xmlhttp.status == 304 ) { ऀऀऀऀऀऀ挀猀猀䌀愀挀栀攀嬀猀⸀栀爀攀昀崀 㴀 砀洀氀栀琀琀瀀⸀爀攀猀瀀漀渀猀攀吀攀砀琀㬀ऀऀऀऀऀऀऀऀ						eval(callback)(); ऀऀऀऀऀ紀				} ऀऀऀ紀			xmlhttp.open("GET", s.href, true); //synchrone transaction crashes Opera 8.01 ऀऀऀ砀洀氀栀琀琀瀀⸀猀攀渀搀⠀渀甀氀氀⤀㬀		} ऀ紀	 ऀ⼀⼀ 瀀愀爀猀攀匀琀礀氀攀猀栀攀攀琀猀㨀	// Iterates the cssCache object and send the serialized css to the mini-parser. ऀ昀甀渀挀琀椀漀渀 瀀愀爀猀攀匀琀礀氀攀猀栀攀攀琀猀⠀⤀ 笀ऀऀ		var allDone = true; ऀऀ昀漀爀⠀瘀愀爀 椀 椀渀 挀猀猀䌀愀挀栀攀⤀ 笀			if(cssCache[i]!=false) parseStylesheet(cssCache[i]); ऀऀऀ攀氀猀攀 愀氀氀䐀漀渀攀 㴀 昀愀氀猀攀㬀		}		 ऀऀ椀昀⠀愀氀氀䐀漀渀攀⤀ 笀ऀऀऀ			processElements(); ऀऀ紀	} 	// parseStylesheet: ऀ⼀⼀ 䰀漀愀搀猀 琀栀攀 瀀猀攀甀搀漀䌀匀匀刀甀氀攀猀 漀戀樀攀挀琀 眀椀琀栀 琀栀攀 瘀愀氀甀攀猀 昀漀爀 挀漀氀甀洀渀ⴀ挀漀甀渀琀Ⰰ 挀漀氀甀洀渀ⴀ眀椀搀琀栀Ⰰ 挀漀氀甀洀渀ⴀ最愀瀀⸀⸀⸀ 	function parseStylesheet(cssText) { ऀऀऀऀऀऀऀऀऀ 		// Retrieving column-count property ऀऀ瘀愀爀 挀挀 㴀 渀攀眀 甀琀⸀最攀琀倀猀攀甀搀漀䌀猀猀刀甀氀攀猀⠀✀挀漀氀甀洀渀ⴀ挀漀甀渀琀✀Ⰰ挀猀猀吀攀砀琀⤀㬀		for(var i=0; cc && i<cc.cssRules.length;i++) { ऀऀऀ椀昀⠀℀瀀猀攀甀搀漀䌀匀匀刀甀氀攀猀嬀挀挀⸀挀猀猀刀甀氀攀猀嬀椀崀⸀猀攀氀攀挀琀漀爀吀攀砀琀崀⤀ 				pseudoCSSRules[cc.cssRules[i].selectorText] = new Object(); ऀऀऀ瀀猀攀甀搀漀䌀匀匀刀甀氀攀猀嬀挀挀⸀挀猀猀刀甀氀攀猀嬀椀崀⸀猀攀氀攀挀琀漀爀吀攀砀琀崀嬀✀挀漀氀甀洀渀ⴀ挀漀甀渀琀✀崀 㴀 挀挀⸀挀猀猀刀甀氀攀猀嬀椀崀⸀瘀愀氀甀攀㬀		}	 ऀऀ⼀⼀ 刀攀琀爀椀攀瘀椀渀最 挀漀氀甀洀渀ⴀ眀椀搀琀栀 瀀爀漀瀀攀爀琀礀		cc = new ut.getPseudoCssRules('column-width',cssText);				 ऀऀ昀漀爀⠀瘀愀爀 椀㴀　㬀 挀挀 ☀☀ 椀㰀挀挀⸀挀猀猀刀甀氀攀猀⸀氀攀渀最琀栀㬀椀⬀⬀⤀ 笀			if(!pseudoCSSRules[cc.cssRules[i].selectorText])  ऀऀऀऀ瀀猀攀甀搀漀䌀匀匀刀甀氀攀猀嬀挀挀⸀挀猀猀刀甀氀攀猀嬀椀崀⸀猀攀氀攀挀琀漀爀吀攀砀琀崀 㴀 渀攀眀 伀戀樀攀挀琀⠀⤀㬀			pseudoCSSRules[cc.cssRules[i].selectorText]['column-width'] = cc.cssRules[i].value; ऀऀ紀		// Retrieving column-gap property ऀऀ挀挀 㴀 渀攀眀 甀琀⸀最攀琀倀猀攀甀搀漀䌀猀猀刀甀氀攀猀⠀✀挀漀氀甀洀渀ⴀ最愀瀀✀Ⰰ挀猀猀吀攀砀琀⤀㬀		for(var i=0; cc && i<cc.cssRules.length;i++) { ऀऀऀ椀昀⠀℀瀀猀攀甀搀漀䌀匀匀刀甀氀攀猀嬀挀挀⸀挀猀猀刀甀氀攀猀嬀椀崀⸀猀攀氀攀挀琀漀爀吀攀砀琀崀⤀ 				pseudoCSSRules[cc.cssRules[i].selectorText] = new Object(); ऀऀऀ瀀猀攀甀搀漀䌀匀匀刀甀氀攀猀嬀挀挀⸀挀猀猀刀甀氀攀猀嬀椀崀⸀猀攀氀攀挀琀漀爀吀攀砀琀崀嬀✀挀漀氀甀洀渀ⴀ最愀瀀✀崀 㴀 挀挀⸀挀猀猀刀甀氀攀猀嬀椀崀⸀瘀愀氀甀攀㬀		}			 ऀऀ⼀⼀ 刀攀琀爀椀攀瘀椀渀最 挀漀氀甀洀渀ⴀ爀甀氀攀 瀀爀漀瀀攀爀琀礀		cc = new ut.getPseudoCssRules('column-rule',cssText); ऀऀ昀漀爀⠀瘀愀爀 椀㴀　㬀 挀挀 ☀☀ 椀㰀挀挀⸀挀猀猀刀甀氀攀猀⸀氀攀渀最琀栀㬀椀⬀⬀⤀ 笀			if(!pseudoCSSRules[cc.cssRules[i].selectorText])  ऀऀऀऀ瀀猀攀甀搀漀䌀匀匀刀甀氀攀猀嬀挀挀⸀挀猀猀刀甀氀攀猀嬀椀崀⸀猀攀氀攀挀琀漀爀吀攀砀琀崀 㴀 渀攀眀 伀戀樀攀挀琀⠀⤀㬀			pseudoCSSRules[cc.cssRules[i].selectorText]['column-rule'] = cc.cssRules[i].value; ऀऀ紀ऀऀऀ	} ऀ 	// COLUMN PROCESSING  ऀ昀甀渀挀琀椀漀渀 瀀爀漀挀攀猀猀䔀氀攀洀攀渀琀猀⠀⤀ 笀		// wait for page to finish loading ऀऀ椀昀⠀℀搀漀挀甀洀攀渀琀刀攀愀搀礀⤀ 爀攀琀甀爀渀㬀		 ऀऀ昀漀爀⠀瘀愀爀 椀 椀渀 瀀猀攀甀搀漀䌀匀匀刀甀氀攀猀⤀ 笀			debug(i + ' cc:' + pseudoCSSRules[i]['column-count'] + ' cw:' + pseudoCSSRules[i]['column-width'] + ' cr:' + pseudoCSSRules[i]['column-rule'] + ' cg:' + pseudoCSSRules[i]['column-gap']);			 ऀऀऀ瘀愀爀 愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀猀 㴀 甀琀⸀挀猀猀儀甀攀爀礀⠀椀⤀㬀ऀऀऀ			for(var j=0;j<affectedElements.length;j++) { ऀऀऀऀ⼀⼀搀攀戀甀最⠀∀愀昀昀攀挀琀攀搀 攀氀攀洀攀渀琀㨀 ∀ ⬀ 愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀猀嬀樀崀⸀琀愀最一愀洀攀 ⬀ ✀ 嬀✀ ⬀ 愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀猀嬀樀崀⸀椀搀 ⬀ ✀ ⼀ ✀ ⬀ 愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀猀嬀樀崀⸀挀氀愀猀猀一愀洀攀 ⬀ ✀崀✀⤀㬀ऀऀऀऀऀऀऀऀऀऀऀऀऀऀऀऀऀऀऀ 				processElement(affectedElements[j], pseudoCSSRules[i]['column-count'], pseudoCSSRules[i]['column-width'], pseudoCSSRules[i]['column-gap'], pseudoCSSRules[i]['column-rule']); ऀऀऀ紀		} ऀ紀	 ऀ昀甀渀挀琀椀漀渀 瀀爀漀挀攀猀猀䔀氀攀洀攀渀琀⠀愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀Ⰰ 挀漀氀甀洀渀开挀漀甀渀琀Ⰰ 挀漀氀甀洀渀开眀椀搀琀栀Ⰰ 挀漀氀甀洀渀开最愀瀀Ⰰ 挀漀氀甀洀渀开爀甀氀攀 ⤀ 笀		//affectedElement.style.visibility = 'hidden'; ऀऀ瘀愀爀 眀椀搀琀栀唀渀椀琀㬀		var width; ऀऀ瘀愀爀 挀漀氀甀洀渀开爀甀氀攀开眀椀搀琀栀 㴀 　㬀		 ऀऀ⼀⼀ 䜀攀琀 愀瘀愀椀氀愀戀氀攀 眀椀搀琀栀		// see http://www.csscripting.com/css-multi-column/dom-width-height.php ऀऀ⼀⼀ 漀昀昀猀攀琀圀椀搀琀栀 ☀ 猀挀爀漀氀氀圀椀搀琀栀 愀爀攀 琀栀攀 漀渀氀礀 挀漀渀猀椀猀琀攀渀琀 瘀愀氀甀攀猀 愀挀爀漀猀猀 戀爀漀眀猀攀爀猀⸀		// offsetWidth includes border, padding and scroll bars ऀऀ⼀⼀ 猀挀爀漀氀氀圀椀搀琀栀 椀渀挀氀甀搀攀猀 戀漀爀搀攀爀 愀渀搀 瀀愀搀搀椀渀最		// clientWidth when available includes padding only. ऀऀ⼀⼀ 猀攀攀 栀琀琀瀀㨀⼀⼀洀猀搀渀⸀洀椀挀爀漀猀漀昀琀⸀挀漀洀⼀眀漀爀欀猀栀漀瀀⼀愀甀琀栀漀爀⼀漀洀⼀洀攀愀猀甀爀椀渀最⸀愀猀瀀		 ऀऀ椀昀⠀愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀⸀挀氀椀攀渀琀圀椀搀琀栀 ☀☀ 愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀⸀挀氀椀攀渀琀圀椀搀琀栀 ℀㴀 　⤀ 笀ऀऀऀ			var padding; ऀऀऀ椀昀⠀愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀⸀挀甀爀爀攀渀琀匀琀礀氀攀⤀ 笀				padding = parseInt(affectedElement.currentStyle.paddingLeft.replace(/[\D]*/gi,"")) + parseInt(affectedElement.currentStyle.paddingRight.replace(/[\D]*/gi,""))   ऀऀऀ紀 攀氀猀攀 椀昀 ⠀搀漀挀甀洀攀渀琀⸀搀攀昀愀甀氀琀嘀椀攀眀 ☀☀ 搀漀挀甀洀攀渀琀⸀搀攀昀愀甀氀琀嘀椀攀眀⸀最攀琀䌀漀洀瀀甀琀攀搀匀琀礀氀攀⤀ 笀				padding = parseInt(document.defaultView.getComputedStyle(affectedElement,"").getPropertyValue("padding-left").replace(/[\D]*/gi,"")) + parseInt(document.defaultView.getComputedStyle(affectedElement,"").getPropertyValue("padding-left").replace(/[\D]*/gi,""))   ऀऀऀऀ⼀⼀瀀愀搀搀椀渀最 㴀 瀀愀爀猀攀䤀渀琀⠀眀椀渀搀漀眀⸀最攀琀䌀漀洀瀀甀琀攀搀匀琀礀氀攀⠀愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀Ⰰ∀∀⤀⸀最攀琀倀爀漀瀀攀爀琀礀嘀愀氀甀攀⠀∀瀀愀搀搀椀渀最ⴀ氀攀昀琀∀⤀⸀爀攀瀀氀愀挀攀⠀⼀嬀尀䐀崀⨀⼀最椀Ⰰ∀∀⤀⤀ ⬀ 瀀愀爀猀攀䤀渀琀⠀眀椀渀搀漀眀⸀最攀琀䌀漀洀瀀甀琀攀搀匀琀礀氀攀⠀愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀Ⰰ∀∀⤀⸀最攀琀倀爀漀瀀攀爀琀礀嘀愀氀甀攀⠀∀瀀愀搀搀椀渀最ⴀ氀攀昀琀∀⤀⸀爀攀瀀氀愀挀攀⠀⼀嬀尀䐀崀⨀⼀最椀Ⰰ∀∀⤀⤀  			}  ऀऀऀ			if (isNaN(padding)) padding = 0;   ऀऀऀ眀椀搀琀栀 㴀 ⠀愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀⸀挀氀椀攀渀琀圀椀搀琀栀 ⴀ 瀀愀搀搀椀渀最⤀⸀琀漀匀琀爀椀渀最⠀⤀ ⬀ ∀瀀砀∀㬀		} ऀऀ攀氀猀攀 椀昀⠀愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀⸀猀挀爀漀氀氀圀椀搀琀栀⤀ 笀			var borderWidth; ऀऀऀ瘀愀爀 瀀愀搀搀椀渀最㬀			 ऀऀऀ椀昀⠀愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀⸀挀甀爀爀攀渀琀匀琀礀氀攀⤀ 笀				padding = parseInt(affectedElement.currentStyle.paddingLeft.replace(/[\D]*/gi,"")) + parseInt(affectedElement.currentStyle.paddingRight.replace(/[\D]*/gi,""))   ऀऀऀ紀 攀氀猀攀 椀昀 ⠀搀漀挀甀洀攀渀琀⸀搀攀昀愀甀氀琀嘀椀攀眀 ☀☀ 搀漀挀甀洀攀渀琀⸀搀攀昀愀甀氀琀嘀椀攀眀⸀最攀琀䌀漀洀瀀甀琀攀搀匀琀礀氀攀⤀ 笀ऀऀऀऀ				padding = parseInt(document.defaultView.getComputedStyle(affectedElement,"").getPropertyValue("padding-left").replace(/[\D]*/gi,"")) + parseInt(document.defaultView.getComputedStyle(affectedElement,"").getPropertyValue("padding-left").replace(/[\D]*/gi,""))   ऀऀऀ紀			 ऀऀऀ椀昀 ⠀椀猀一愀一⠀瀀愀搀搀椀渀最⤀⤀ 瀀愀搀搀椀渀最 㴀 　㬀  				 ऀऀऀ椀昀⠀愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀⸀挀甀爀爀攀渀琀匀琀礀氀攀⤀ 笀				borderWidth = parseInt(affectedElement.currentStyle.borderLeftWidth.replace(/[\D]*/gi,"")) + parseInt(affectedElement.currentStyle.borderRightWidth.replace(/[\D]*/gi,""))   ऀऀऀ紀 攀氀猀攀 椀昀 ⠀搀漀挀甀洀攀渀琀⸀搀攀昀愀甀氀琀嘀椀攀眀 ☀☀ 搀漀挀甀洀攀渀琀⸀搀攀昀愀甀氀琀嘀椀攀眀⸀最攀琀䌀漀洀瀀甀琀攀搀匀琀礀氀攀⤀ 笀				borderWidth = parseInt(document.defaultView.getComputedStyle(affectedElement,"").getPropertyValue("border-left-width").replace(/[\D]*/gi,"")) + parseInt(document.defaultView.getComputedStyle(affectedElement,"").getPropertyValue("border-right-width").replace(/[\D]*/gi,""))   ऀऀऀ紀			if (isNaN(borderWidth)) borderWidth = 0; ऀऀऀ			width = (affectedElement.scrollWidth - padding - borderWidth).toString() + "px";			 ऀऀ紀		else width = "99%"; // ever used?  		var availableWidth = parseInt(width.replace(/[\D]*/gi,""));			 		// Get width unit ऀऀ椀昀⠀℀挀漀氀甀洀渀开眀椀搀琀栀 簀簀 挀漀氀甀洀渀开眀椀搀琀栀 㴀㴀 ✀愀甀琀漀✀⤀ 		   	widthUnit = width.replace(/[\d]*/gi,""); ऀऀ攀氀猀攀			widthUnit = column_width.replace(/[\d]*/gi,""); ऀऀ椀昀⠀℀眀椀搀琀栀唀渀椀琀⤀ 			widthUnit = "px"; ऀऀ		if(!column_gap) { // Compute column spacing (column_gap) ऀऀऀ椀昀⠀眀椀搀琀栀唀渀椀琀㴀㴀∀─∀⤀ 				column_gap = 1; //%; ऀऀऀ攀氀猀攀				column_gap = 15; //px; ऀऀ紀 攀氀猀攀 笀			column_gap = parseInt(column_gap.replace(/[\D]*/gi,"")); ऀऀ紀		if(column_rule && column_rule != 'none') { ऀऀऀ挀漀氀甀洀渀开最愀瀀 㴀 䴀愀琀栀⸀昀氀漀漀爀⠀挀漀氀甀洀渀开最愀瀀⼀㈀⤀㬀			// we add half the original column_gap to the column_rule_width to fix the column_width count below. ऀऀऀ挀漀氀甀洀渀开爀甀氀攀开眀椀搀琀栀 㴀 挀漀氀甀洀渀开最愀瀀 ⬀ 瀀愀爀猀攀䤀渀琀⠀挀漀氀甀洀渀开爀甀氀攀⸀猀甀戀猀琀爀椀渀最⠀挀漀氀甀洀渀开爀甀氀攀⸀猀攀愀爀挀栀⠀⼀尀搀⼀⤀Ⰰ挀漀氀甀洀渀开爀甀氀攀⸀猀攀愀爀挀栀⠀⼀尀䐀⼀⤀⤀⤀㬀		}		 ऀऀ椀昀⠀℀挀漀氀甀洀渀开眀椀搀琀栀 簀簀 挀漀氀甀洀渀开眀椀搀琀栀 㴀㴀 ✀愀甀琀漀✀⤀ 笀⼀⼀ 䌀漀洀瀀甀琀攀 挀漀氀甀洀渀猀✀ 眀椀搀琀栀 			column_width = (availableWidth-((column_gap+column_rule_width)*(column_count-1))) / column_count; ऀऀ紀 攀氀猀攀 笀			column_width = parseInt(column_width.replace(/[\D]*/gi,"")) ऀऀऀ椀昀⠀℀挀漀氀甀洀渀开挀漀甀渀琀 簀簀 挀漀氀甀洀渀开挀漀甀渀琀 㴀㴀 ✀愀甀琀漀✀⤀ 笀⼀⼀ 䌀漀洀瀀甀琀攀 挀漀氀甀洀渀 挀漀甀渀琀				column_count = Math.floor(availableWidth / (column_width + column_gap)); ऀऀऀ紀		} ऀऀ		column_width -= 1;  ऀऀ		// Create a wrapper ऀऀ瘀愀爀 眀爀愀瀀瀀攀爀 㴀 搀漀挀甀洀攀渀琀⸀挀爀攀愀琀攀䔀氀攀洀攀渀琀⠀✀搀椀瘀✀⤀㬀 ⼀⼀愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀⸀琀愀最一愀洀攀		var pn = affectedElement.parentNode;   ऀऀ眀爀愀瀀瀀攀爀 㴀 瀀渀⸀椀渀猀攀爀琀䈀攀昀漀爀攀⠀眀爀愀瀀瀀攀爀Ⰰ 愀昀昀攀挀琀攀搀䔀氀攀洀攀渀琀⤀㬀		var elem =  pn.removeChild(affectedElement); ऀऀ攀氀攀洀 㴀 眀爀愀瀀瀀攀爀⸀愀瀀瀀攀渀搀䌀栀椀氀搀⠀攀氀攀洀⤀㬀		//wrapper.style.border = "1px solid #F00"; ऀऀ眀爀愀瀀瀀攀爀⸀挀氀愀猀猀一愀洀攀 㴀 攀氀攀洀⸀挀氀愀猀猀一愀洀攀㬀		elem.className = ""; ऀऀ⼀⼀ 猀椀渀挀攀 愀氀氀 挀漀氀甀洀渀猀 眀椀氀氀 戀攀 氀攀昀琀ⴀ昀氀漀愀琀椀渀最 眀攀 渀攀攀搀 琀漀 挀氀攀愀爀 琀栀攀 昀氀漀愀琀猀 愀昀琀攀爀 琀栀攀洀⸀		//wrapper.style.overflow = 'auto'; 		// Assign the content element a random Id ? ऀऀ攀氀攀洀⸀椀搀 㴀 甀琀⸀爀愀渀搀漀洀䤀搀⠀⤀㬀 ऀऀ⼀⼀ 䄀搀樀甀猀琀 挀漀渀琀攀渀琀✀猀 眀椀搀琀栀 愀渀搀 昀氀漀愀琀 琀栀攀 攀氀攀洀攀渀琀 		elem.style.width = column_width.toString() + widthUnit; ऀऀ⼀⼀攀氀攀洀⸀猀琀礀氀攀⸀瀀愀搀搀椀渀最 㴀 ∀　∀㬀		//elem.style.margin = "0";  ऀऀ		if(typeof elem.style.styleFloat != 'undefined') ऀऀऀ攀氀攀洀⸀猀琀礀氀攀⸀猀琀礀氀攀䘀氀漀愀琀  㴀 ∀氀攀昀琀∀㬀 		if(typeof elem.style.cssFloat != 'undefined')  ऀऀऀ攀氀攀洀⸀猀琀礀氀攀⸀挀猀猀䘀氀漀愀琀  㴀 ∀氀攀昀琀∀㬀  ऀऀ⼀⼀ 䌀漀洀瀀甀琀攀 䐀攀猀椀爀攀搀 䠀攀椀最栀琀		var newHeight = Math.floor(elem.offsetHeight / column_count)+14; ऀऀ椀昀⠀℀眀爀愀瀀瀀攀爀⸀椀搀⤀ 眀爀愀瀀瀀攀爀⸀椀搀 㴀 甀琀⸀爀愀渀搀漀洀䤀搀⠀⤀㬀		 ऀऀ⼀⼀ 䘀椀渀搀 猀瀀氀椀琀 瀀漀椀渀琀猀 ⠀樀 椀猀 琀栀攀 洀愀砀 ⌀ 漀昀 愀琀琀攀洀瀀琀猀 琀漀 昀椀渀搀 愀 最漀漀搀 栀攀椀最栀琀 眀椀琀栀 渀漀 甀渀猀瀀氀椀琀琀愀戀氀攀 攀氀攀洀攀渀琀 漀渀 琀栀攀 猀瀀氀椀琀 瀀漀椀渀琀⸀		var j=1; ऀऀ昀漀爀⠀瘀愀爀 椀㴀㄀㬀 椀 㰀 挀漀氀甀洀渀开挀漀甀渀琀 ☀☀ 攀氀攀洀 ☀☀ 樀 㰀 ⠀挀漀氀甀洀渀开挀漀甀渀琀 ⬀ 㔀⤀ 㬀 椀⬀⬀⤀ 笀			bestSplitPoint = null; ऀऀऀ猀攀挀漀渀搀匀瀀氀椀琀倀漀椀渀琀 㴀 渀甀氀氀㬀			secondSplitBottom = 0; ऀऀऀ昀椀渀搀匀瀀氀椀琀倀漀椀渀琀⠀攀氀攀洀Ⰰ 渀攀眀䠀攀椀最栀琀⨀椀Ⰰ 眀爀愀瀀瀀攀爀⤀㬀ऀऀऀ			 ऀऀऀ椀昀⠀椀猀䐀攀戀甀最⤀ 戀攀猀琀匀瀀氀椀琀倀漀椀渀琀⸀猀琀礀氀攀⸀戀漀爀搀攀爀 㴀 ∀㄀瀀砀 猀漀氀椀搀 ⌀　　䘀䘀　　∀㬀 ऀऀऀ椀昀⠀戀攀猀琀匀瀀氀椀琀倀漀椀渀琀 ☀☀ ℀椀猀䔀氀攀洀攀渀琀匀瀀氀椀琀愀戀氀攀⠀戀攀猀琀匀瀀氀椀琀倀漀椀渀琀⤀⤀ 笀					 ऀऀऀऀऀ渀攀眀䠀攀椀最栀琀 㴀 最攀琀䔀氀攀洀攀渀琀刀攀氀愀琀椀瘀攀吀漀瀀⠀戀攀猀琀匀瀀氀椀琀倀漀椀渀琀Ⰰ 眀爀愀瀀瀀攀爀⤀ ⬀ 戀攀猀琀匀瀀氀椀琀倀漀椀渀琀⸀漀昀昀猀攀琀䠀攀椀最栀琀 ⬀ ㄀　㬀					i=1; // reset the height. Try again. ऀऀऀऀऀ搀攀戀甀最⠀✀爀攀猀攀琀 渀攀眀 䠀攀椀最栀琀 㴀 ✀⬀渀攀眀䠀攀椀最栀琀 ⬀ ✀ 爀攀氀愀琀椀瘀攀琀漀瀀㴀✀ ⬀ 最攀琀䔀氀攀洀攀渀琀刀攀氀愀琀椀瘀攀吀漀瀀⠀戀攀猀琀匀瀀氀椀琀倀漀椀渀琀Ⰰ 眀爀愀瀀瀀攀爀⤀ ⬀ ✀ 漀昀昀猀攀琀䠀攀椀最栀琀㴀 ✀ ⬀ 戀攀猀琀匀瀀氀椀琀倀漀椀渀琀⸀漀昀昀猀攀琀䠀攀椀最栀琀 ⤀㬀			}			 ऀऀऀ攀氀猀攀 椀昀 ⠀℀戀攀猀琀匀瀀氀椀琀倀漀椀渀琀⤀ 笀				debug("No split point found with " + newHeight);  ऀऀऀ紀			 ऀऀऀ樀⬀⬀㬀		} ऀऀ		//wrapper.style.minHeight = newHeight + 'px'; ऀऀ⼀⼀椀昀⠀搀漀挀甀洀攀渀琀⸀愀氀氀 ☀☀ ℀眀椀渀搀漀眀⸀漀瀀攀爀愀⤀			//wrapper.style.height = newHeight + 'px'; ऀऀ搀攀戀甀最⠀✀㰀琀愀戀氀攀㸀㰀琀爀㸀㰀琀搀㸀䄀瘀愀椀氀⸀ 圀椀搀琀栀㰀⼀琀搀㸀㰀琀搀㸀✀⬀愀瘀愀椀氀愀戀氀攀圀椀搀琀栀⬀✀㰀⼀琀搀㸀㰀琀搀㸀唀渀椀琀猀㰀⼀琀搀㸀㰀琀搀㸀✀⬀眀椀搀琀栀唀渀椀琀⬀✀㰀⼀琀搀㸀㰀⼀琀爀㸀㰀琀爀㸀㰀琀搀㸀挀漀氀甀洀渀开眀椀搀琀栀㰀⼀琀搀㸀㰀琀搀㸀✀⬀挀漀氀甀洀渀开眀椀搀琀栀⬀✀㰀⼀琀搀㸀㰀琀搀㸀挀漀氀甀洀渀开挀漀甀渀琀㰀⼀琀搀㸀㰀琀搀㸀✀⬀挀漀氀甀洀渀开挀漀甀渀琀⬀✀㰀⼀琀搀㸀㰀⼀琀爀㸀㰀琀爀㸀㰀琀搀㸀挀漀氀甀洀渀开最愀瀀㰀⼀琀搀㸀㰀琀搀㸀✀⬀挀漀氀甀洀渀开最愀瀀⬀✀㰀⼀琀搀㸀㰀琀搀㸀挀漀氀甀洀渀开爀甀氀攀㰀⼀琀搀㸀㰀琀搀㸀✀⬀挀漀氀甀洀渀开爀甀氀攀⬀✀㰀⼀琀搀㸀㰀⼀琀爀㸀㰀琀爀㸀㰀琀搀㸀一攀眀 䠀攀椀最栀琀㰀⼀琀搀㸀㰀琀搀㸀✀ ⬀ 渀攀眀䠀攀椀最栀琀 ⬀ ✀㰀⼀琀搀㸀㰀琀搀㸀㰀⼀琀搀㸀㰀琀搀㸀㰀⼀琀搀㸀㰀⼀琀爀㸀㰀⼀琀愀戀氀攀㸀✀  ⤀㬀 		 ऀऀ昀漀爀⠀瘀愀爀 椀㴀㄀㬀 椀 㰀 挀漀氀甀洀渀开挀漀甀渀琀 ☀☀ 攀氀攀洀㬀 椀⬀⬀⤀ 笀			// Find the split point (a child element, sitting on the column split point) ऀऀऀ戀攀猀琀匀瀀氀椀琀倀漀椀渀琀 㴀 渀甀氀氀㬀			secondSplitPoint = null; ऀऀऀ猀攀挀漀渀搀匀瀀氀椀琀䈀漀琀琀漀洀 㴀 　㬀			 ऀऀऀ昀椀渀搀匀瀀氀椀琀倀漀椀渀琀⠀攀氀攀洀Ⰰ 渀攀眀䠀攀椀最栀琀Ⰰ 眀爀愀瀀瀀攀爀⤀㬀			if(bestSplitPoint && isElementSplitable(bestSplitPoint) && elem.id != bestSplitPoint.id) { ऀऀऀऀ瘀愀爀 猀瀀氀椀琀䔀 㴀 戀攀猀琀匀瀀氀椀琀倀漀椀渀琀㬀ऀऀऀऀ				if(isDebug) secondSplitPoint.style.border = "1px dotted #00F"; ऀऀऀ紀			else { ऀऀऀऀ瘀愀爀 猀瀀氀椀琀䔀 㴀 猀攀挀漀渀搀匀瀀氀椀琀倀漀椀渀琀㬀			} ऀऀऀ椀昀⠀℀猀瀀氀椀琀䔀⤀ 笀				debug("<hr />No split point found for " + elem.tagName + ' ' + newHeight); ऀऀऀऀ爀攀琀甀爀渀㬀			} ऀऀऀ			// DEBUG ONLY: SHOW SPLIT ELEMENT ऀऀऀ⼀⼀搀攀戀甀最⠀∀猀瀀氀椀琀 琀漀瀀㴀∀ ⬀ 最攀琀䔀氀攀洀攀渀琀刀攀氀愀琀椀瘀攀吀漀瀀⠀猀瀀氀椀琀䔀Ⰰ 眀爀愀瀀瀀攀爀⤀⤀㬀			if(isDebug) splitE.style.border = "1px solid #F00"; ऀऀऀ⼀⼀ 䔀一䐀 䐀䔀䈀唀䜀 伀一䰀夀㨀 匀䠀伀圀 匀倀䰀䤀吀 䔀䰀䔀䴀䔀一吀			 ऀऀऀ⼀⼀ 䌀爀攀愀琀攀 一攀眀 䌀漀氀甀洀渀ऀ			var newCol = elem.cloneNode(false); ऀऀऀ渀攀眀䌀漀氀⸀椀搀 㴀 甀琀⸀爀愀渀搀漀洀䤀搀⠀⤀㬀			 ऀऀऀ⼀⼀ 䤀渀猀攀爀琀 渀攀眀 挀漀氀甀洀渀 椀渀 琀栀攀 搀漀挀甀洀攀渀琀			elem.parentNode.insertBefore(newCol, elem.nextSibling); 			// Add the column_gap ऀऀऀ渀攀眀䌀漀氀⸀猀琀礀氀攀⸀瀀愀搀搀椀渀最䰀攀昀琀 㴀 挀漀氀甀洀渀开最愀瀀 ⬀ 眀椀搀琀栀唀渀椀琀㬀						 ऀऀऀ⼀⼀ 䄀搀搀 琀栀攀 挀漀氀甀洀渀开爀甀氀攀			if(column_rule && column_rule != 'none') {				 ऀऀऀऀ渀攀眀䌀漀氀⸀猀琀礀氀攀⸀戀漀爀搀攀爀䰀攀昀琀 㴀 挀漀氀甀洀渀开爀甀氀攀㬀				elem.style.paddingRight = column_gap + widthUnit;				 ऀऀऀ紀			if(document.all && !window.opera) ऀऀऀऀ攀氀攀洀⸀猀琀礀氀攀⸀栀攀椀最栀琀 㴀 渀攀眀䠀攀椀最栀琀⬀✀瀀砀✀㬀			elem.style.minHeight = newHeight+'px'; 			// Move all elements after the element to be splitted (splitE) to the new column ऀऀऀ瘀愀爀 椀渀猀攀爀琀倀漀椀渀琀 㴀 挀爀攀愀琀攀一漀搀攀䄀渀挀攀猀琀漀爀猀⠀猀瀀氀椀琀䔀Ⰰ攀氀攀洀Ⰰ 渀攀眀䌀漀氀Ⰰ ✀愀瀀瀀攀渀搀✀⤀㬀 ऀऀऀ瘀愀爀 爀攀昀䔀氀攀洀攀渀琀 㴀 猀瀀氀椀琀䔀㬀ऀऀऀ			while(refElement && refElement.id != elem.id ) { ऀऀऀऀ瘀愀爀 氀椀琀琀氀攀匀椀戀 㴀 爀攀昀䔀氀攀洀攀渀琀⸀渀攀砀琀匀椀戀氀椀渀最㬀				while(littleSib) { ऀऀऀऀऀ洀漀瘀攀一漀搀攀⠀氀椀琀琀氀攀匀椀戀Ⰰ 攀氀攀洀Ⰰ 渀攀眀䌀漀氀⤀㬀					littleSib = refElement.nextSibling;				 ऀऀऀऀ紀				refElement = refElement.parentNode;  ऀऀऀ紀 ऀऀऀ瘀愀爀 猀琀爀椀瀀瀀攀搀䰀椀渀攀 㴀 猀瀀氀椀琀䔀氀攀洀攀渀琀⠀猀瀀氀椀琀䔀Ⰰ 渀攀眀䠀攀椀最栀琀 ⴀ 最攀琀䔀氀攀洀攀渀琀刀攀氀愀琀椀瘀攀吀漀瀀⠀猀瀀氀椀琀䔀Ⰰ 眀爀愀瀀瀀攀爀⤀Ⰰ 攀氀攀洀Ⰰ 渀攀眀䌀漀氀⤀㬀ऀऀऀ ऀऀऀ⼀⼀ 挀氀攀愀渀椀渀最 攀洀瀀琀椀攀搀 攀氀攀洀攀渀琀猀			var pn = splitE.parentNode;			 ऀऀऀ眀栀椀氀攀⠀瀀渀 ☀☀ 瀀渀⸀椀搀 ℀㴀 攀氀攀洀⸀椀搀⤀ 笀				var n = pn.firstChild; ऀऀऀऀ眀栀椀氀攀⠀渀⤀ 笀ऀऀऀऀऀ					if((n.nodeType==1 && n.childNodes.length == 0) ||  ऀऀऀऀऀऀ⠀渀⸀渀漀搀攀吀礀瀀攀㴀㴀㌀ ☀☀ 渀⸀渀漀搀攀嘀愀氀甀攀⸀爀攀瀀氀愀挀攀⠀⼀嬀尀甀　　㈀　尀甀　　　㤀尀甀　　　䄀崀⨀⼀Ⰰ✀✀⤀ 㴀㴀 ∀∀⤀⤀ 笀						pn.removeChild(n); ऀऀऀऀऀऀ渀 㴀 瀀渀⸀昀椀爀猀琀䌀栀椀氀搀㬀					} else { ऀऀऀऀऀऀ渀 㴀 渀⸀渀攀砀琀匀椀戀氀椀渀最㬀					} ऀऀऀऀ紀				pn = pn.parentNode; ऀऀऀ紀ऀ			 ऀऀऀ⼀⼀ 椀昀 琀攀砀琀ⴀ愀氀椀最渀 椀猀 樀甀猀琀椀昀椀攀搀Ⰰ 椀渀猀攀爀琀 ☀渀戀猀瀀㬀 琀漀 昀漀爀挀攀 琀栀攀 樀甀猀琀椀昀礀ऀ			if(strippedLine) { ऀऀऀऀ猀瀀氀椀琀䔀 㴀 攀氀攀洀⸀氀愀猀琀䌀栀椀氀搀㬀				if(splitE && (document.defaultView  && document.defaultView.getComputedStyle(splitE,'').getPropertyValue('text-align')=='justify') || ऀऀऀऀ   ⠀猀瀀氀椀琀䔀⸀挀甀爀爀攀渀琀匀琀礀氀攀 ☀☀ 猀瀀氀椀琀䔀⸀挀甀爀爀攀渀琀匀琀礀氀攀⸀琀攀砀琀䄀氀椀最渀 㴀㴀 ✀樀甀猀琀椀昀礀✀⤀⤀ 笀					  var txtFiller = document.createTextNode(' ' + strippedLine.replace(/./g,"\u00a0")); // &nbsp; ऀऀऀऀऀ  瘀愀爀 昀椀氀氀攀爀 㴀 搀漀挀甀洀攀渀琀⸀挀爀攀愀琀攀䔀氀攀洀攀渀琀⠀✀猀瀀愀渀✀⤀㬀ऀऀऀऀ  					  splitE.appendChild(filler); 		 ऀऀऀऀऀ  昀椀氀氀攀爀⸀猀琀礀氀攀⸀氀椀渀攀䠀攀椀最栀琀㴀∀㄀瀀砀∀㬀					  filler.appendChild(txtFiller); ऀऀऀऀ紀 			} ऀऀऀ⼀⼀ 洀漀瘀攀 漀渀 琀漀 猀瀀氀椀琀 琀栀攀 渀攀眀氀礀 愀搀搀攀搀 挀漀氀甀洀渀			elem = newCol; ऀऀ紀		if(elem) {//mainly to set the column rule at the right height. ऀऀऀ椀昀⠀搀漀挀甀洀攀渀琀⸀愀氀氀 ☀☀ ℀眀椀渀搀漀眀⸀漀瀀攀爀愀⤀				elem.style.height = newHeight+'px'; ऀऀऀ攀氀攀洀⸀猀琀礀氀攀⸀洀椀渀䠀攀椀最栀琀 㴀 渀攀眀䠀攀椀最栀琀⬀✀瀀砀✀㬀  		} ऀऀ		var clearFloatDiv = document.createElement('div'); ऀऀ挀氀攀愀爀䘀氀漀愀琀䐀椀瘀⸀猀琀礀氀攀⸀挀氀攀愀爀 㴀 ∀氀攀昀琀∀㬀  ⼀⼀ 㰀 戀甀最 椀渀 匀愀昀愀爀椀 ㄀⸀㌀ 㼀 ⠀搀甀瀀氀椀挀愀琀攀猀 挀漀渀琀攀渀琀⤀		clearFloatDiv.appendChild(document.createTextNode(' ')); ऀऀ眀爀愀瀀瀀攀爀⸀愀瀀瀀攀渀搀䌀栀椀氀搀⠀挀氀攀愀爀䘀氀漀愀琀䐀椀瘀⤀㬀		if(navigator.userAgent.toLowerCase().indexOf('safari') + 1) ऀऀऀ眀爀愀瀀瀀攀爀⸀椀渀渀攀爀䠀吀䴀䰀⬀㴀✀ ✀㬀 ⼀⼀ 昀漀爀挀攀猀 爀攀搀爀愀眀 椀渀 猀愀昀愀爀椀 愀渀搀 昀椀砀攀猀 戀甀最 愀戀漀瘀攀⸀		 ऀऀ⼀⼀眀爀愀瀀瀀攀爀⸀猀琀礀氀攀⸀瘀椀猀椀戀椀氀椀琀礀 㴀 ✀瘀椀猀椀戀氀攀✀㬀 ऀऀऀऀ	} ऀ	// Find the deepest splitable element that sits on the split point. ऀ昀甀渀挀琀椀漀渀 昀椀渀搀匀瀀氀椀琀倀漀椀渀琀⠀渀Ⰰ 渀攀眀䠀攀椀最栀琀Ⰰ 眀爀愀瀀瀀攀爀⤀ 笀ऀऀ		if (n.nodeType==1) { ऀऀऀ瘀愀爀 琀漀瀀 㴀 最攀琀䔀氀攀洀攀渀琀刀攀氀愀琀椀瘀攀吀漀瀀⠀渀Ⰰ 眀爀愀瀀瀀攀爀⤀㬀			var bot = top+n.offsetHeight; ऀऀऀ椀昀⠀琀漀瀀 㰀 渀攀眀䠀攀椀最栀琀 ☀☀ 戀漀琀 㸀 渀攀眀䠀攀椀最栀琀⤀ 笀				bestSplitPoint = n; ऀऀऀऀ椀昀⠀椀猀䔀氀攀洀攀渀琀匀瀀氀椀琀愀戀氀攀⠀渀⤀⤀ 笀					for(var i=0;i<n.childNodes.length;i++) { ऀऀऀऀऀऀ昀椀渀搀匀瀀氀椀琀倀漀椀渀琀⠀渀⸀挀栀椀氀搀一漀搀攀猀嬀椀崀Ⰰ 渀攀眀䠀攀椀最栀琀Ⰰ 眀爀愀瀀瀀攀爀⤀㬀					} ऀऀऀऀ紀				return; ऀऀऀ紀 			if(bot <= newHeight && bot >= secondSplitBottom) { ऀऀऀऀ猀攀挀漀渀搀匀瀀氀椀琀䈀漀琀琀漀洀 㴀 戀漀琀㬀				secondSplitPoint = n; ऀऀऀ紀		} ऀऀ爀攀琀甀爀渀㬀	} ऀ	function isElementSplitable(n) { ऀऀ椀昀⠀渀⸀琀愀最一愀洀攀⤀ 笀			var tagName = n.tagName.toUpperCase();			 ऀऀऀ昀漀爀⠀瘀愀爀 椀㴀　㬀椀㰀猀瀀氀椀琀愀戀氀攀吀愀最猀⸀氀攀渀最琀栀㬀椀⬀⬀⤀				if(tagName==splitableTags[i]) return true; ऀऀ紀		return false; ऀ紀		 ऀ昀甀渀挀琀椀漀渀 猀瀀氀椀琀䔀氀攀洀攀渀琀⠀渀Ⰰ 琀愀爀最攀琀䠀攀椀最栀琀Ⰰ 挀漀氀㄀Ⰰ 挀漀氀㈀⤀ 笀		 ऀऀ瘀愀爀 挀渀 㴀 渀⸀氀愀猀琀䌀栀椀氀搀㬀		while(cn) { ऀऀऀ⼀⼀ 椀昀 琀栀攀 挀栀椀氀搀 渀漀搀攀 椀猀 愀 琀攀砀琀 渀漀搀攀 ऀऀऀ			if(cn.nodeType==3) {				 ऀऀऀऀ瘀愀爀 猀琀爀椀瀀瀀攀搀吀攀砀琀 㴀 ∀搀甀洀洀洀礀∀㬀				var allStrippedText = ""; ऀऀऀऀ⼀⼀ 琀栀攀 ⬀㈀ 椀猀 昀漀爀 琀眀攀愀欀椀渀最⸀⸀ 愀氀氀漀眀椀渀最 氀椀渀攀猀 琀漀 昀椀琀 洀漀爀攀 攀愀猀椀氀礀				while(n.offsetHeight > targetHeight+2 && strippedText!="") { ऀऀऀऀऀ⼀⼀ 爀攀洀漀瘀攀 氀椀渀攀猀 漀昀 琀攀砀琀 甀渀琀椀氀 琀栀攀 猀瀀氀椀琀琀愀戀氀攀 攀氀攀洀攀渀琀 爀攀愀挀栀攀猀 琀栀攀 琀愀爀最攀琀攀搀 栀攀椀最栀琀 漀爀 眀攀 爀甀渀 漀甀琀 漀昀 琀攀砀琀⸀					strippedText = stripOneLine(cn); ऀऀऀऀऀ愀氀氀匀琀爀椀瀀瀀攀搀吀攀砀琀 㴀 猀琀爀椀瀀瀀攀搀吀攀砀琀 ⬀ 愀氀氀匀琀爀椀瀀瀀攀搀吀攀砀琀㬀				} ऀऀऀऀ椀昀⠀愀氀氀匀琀爀椀瀀瀀攀搀吀攀砀琀℀㴀∀∀⤀ 笀ऀऀऀऀऀ					var insertPoint = createNodeAncestors(cn,col1,col2,'insertBefore'); ऀऀऀऀऀ椀渀猀攀爀琀倀漀椀渀琀⸀椀渀猀攀爀琀䈀攀昀漀爀攀⠀搀漀挀甀洀攀渀琀⸀挀爀攀愀琀攀吀攀砀琀一漀搀攀⠀愀氀氀匀琀爀椀瀀瀀攀搀吀攀砀琀⤀Ⰰ 椀渀猀攀爀琀倀漀椀渀琀⸀昀椀爀猀琀䌀栀椀氀搀⤀㬀				}  ऀऀऀऀ椀昀⠀挀渀⸀渀漀搀攀嘀愀氀甀攀㴀㴀∀∀⤀ 笀					cn.parentNode.removeChild(cn); ऀऀऀऀ紀				else  ऀऀऀऀऀ戀爀攀愀欀㬀			} ऀऀऀ攀氀猀攀 笀				// move element ऀऀऀऀ瘀愀爀 椀渀猀攀爀琀倀漀椀渀琀 㴀 挀爀攀愀琀攀一漀搀攀䄀渀挀攀猀琀漀爀猀⠀挀渀Ⰰ挀漀氀㄀Ⰰ挀漀氀㈀Ⰰ✀椀渀猀攀爀琀䈀攀昀漀爀攀✀⤀㬀				insertPoint.insertBefore(cn.parentNode.removeChild(cn), insertPoint.firstChild); ऀऀऀ紀			cn = n.lastChild; ऀऀ紀		return strippedText; // returns the last line of text removed (used later for forcing the justification) ऀ紀	 	// stripOneLine() ऀ⼀⼀ 吀栀椀猀 昀甀渀挀琀椀漀渀 爀攀洀漀瘀攀猀 攀砀愀挀琀氀礀 漀渀攀 氀椀渀攀 琀漀	// any element containing text ऀ⼀⼀ 愀渀搀 爀攀琀甀爀渀猀 琀栀攀 爀攀洀漀瘀攀搀 琀攀砀琀 愀猀 愀 猀琀爀椀渀最⸀	function stripOneLine (n) { ऀऀ⼀⼀ 最攀琀 琀栀攀 琀攀砀琀 渀漀搀攀		while(n && n.nodeType != 3)  ऀऀऀ渀 㴀 渀⸀昀椀爀猀琀䌀栀椀氀搀㬀		if(!n) return; ऀ		// get the height of the element ऀऀ瘀愀爀 攀 㴀 渀⸀瀀愀爀攀渀琀一漀搀攀㬀		var h = e.offsetHeight; ऀऀ		if(!h) { ऀऀऀ⼀⼀搀攀戀甀最⠀✀渀漀 栀攀椀最栀琀 昀漀爀㨀 ✀ ⬀ 攀⸀琀愀最一愀洀攀⤀㬀			return ""; ऀऀ紀	 ऀऀ⼀⼀ 最攀琀 琀栀攀 琀攀砀琀 愀猀 愀 猀琀爀椀渀最		var str = n.nodeValue; ऀऀ		// remove a word from the end of the string ऀऀ⼀⼀ 甀渀琀椀氀 琀栀攀 栀攀椀最栀琀 漀昀 琀栀攀 攀氀攀洀攀渀琀 挀栀愀渀最攀猀 		// (ie. a line has been removed) ऀऀ瘀愀爀 眀䤀搀砀㴀 渀⸀渀漀搀攀嘀愀氀甀攀⸀氀愀猀琀䤀渀搀攀砀伀昀⠀✀ ✀⤀㬀		while(wIdx!=-1 && e.offsetHeight == h) {			 ऀऀऀ渀⸀渀漀搀攀嘀愀氀甀攀 㴀 渀⸀渀漀搀攀嘀愀氀甀攀⸀猀甀戀猀琀爀⠀　Ⰰऀ眀䤀搀砀⤀㬀			wIdx = n.nodeValue.lastIndexOf(' '); ऀऀऀ椀昀⠀眀䤀搀砀㴀㴀ⴀ㄀⤀ 眀䤀搀砀 㴀 渀⸀渀漀搀攀嘀愀氀甀攀⸀氀愀猀琀䤀渀搀攀砀伀昀⠀✀尀渀✀⤀㬀			//debug(e.offsetHeight + ' ' + h + ' text=' + n.nodeValue + ' wIdx= ' + wIdx); ऀऀ紀 		 ऀऀ椀昀⠀攀⸀漀昀昀猀攀琀䠀攀椀最栀琀 㴀㴀 栀⤀			n.nodeValue = ""; ऀऀ⼀⼀ 爀攀琀甀爀渀猀 琀栀攀 爀攀洀漀瘀攀搀 琀攀砀琀 ऀऀ爀攀琀甀爀渀 猀琀爀⸀猀甀戀猀琀爀⠀渀⸀渀漀搀攀嘀愀氀甀攀⸀氀攀渀最琀栀⤀㬀	} ऀ	// method= 'append'/'insertBefore', relative to col2 ऀ昀甀渀挀琀椀漀渀 挀爀攀愀琀攀一漀搀攀䄀渀挀攀猀琀漀爀猀⠀渀Ⰰ挀漀氀㄀Ⰰ挀漀氀㈀Ⰰ洀攀琀栀漀搀⤀ 笀		var ancestors = new Array; ऀऀ瘀愀爀 椀渀猀攀爀琀一漀搀攀 㴀 挀漀氀㈀㬀		var pn = n.parentNode; ऀऀ眀栀椀氀攀⠀瀀渀 ☀☀ 瀀渀⸀椀搀 ℀㴀 挀漀氀㄀⸀椀搀⤀ 笀			ancestors[ancestors.length] = pn; ऀऀऀ椀昀⠀℀瀀渀⸀椀搀⤀ 瀀渀⸀椀搀 㴀 甀琀⸀爀愀渀搀漀洀䤀搀⠀⤀㬀			pn = pn.parentNode; ऀऀ紀ऀऀ		 ऀऀ昀漀爀 ⠀瘀愀爀 椀㴀愀渀挀攀猀琀漀爀猀⸀氀攀渀最琀栀ⴀ㄀㬀 椀 㸀㴀 　㬀 椀ⴀⴀ⤀ 笀			 ऀऀऀ昀漀爀⠀瘀愀爀 樀㴀　㬀 樀 㰀 椀渀猀攀爀琀一漀搀攀⸀挀栀椀氀搀一漀搀攀猀⸀氀攀渀最琀栀 ☀☀ ⠀椀渀猀攀爀琀一漀搀攀⸀挀栀椀氀搀一漀搀攀猀嬀樀崀⸀渀漀搀攀吀礀瀀攀㴀㴀㌀ 簀簀 ℀椀渀猀攀爀琀一漀搀攀⸀挀栀椀氀搀一漀搀攀猀嬀樀崀⸀挀氀愀猀猀一愀洀攀⸀洀愀琀挀栀⠀愀渀挀攀猀琀漀爀猀嬀椀崀⸀椀搀⬀✀ⴀ挀猀猀㌀洀挀✀⤀⤀㬀 樀⬀⬀⤀㬀 ऀऀऀ椀昀⠀樀㴀㴀椀渀猀攀爀琀一漀搀攀⸀挀栀椀氀搀一漀搀攀猀⸀氀攀渀最琀栀⤀ 笀 ऀऀऀऀऀ				// Ancestor node not found, needs to be created.				 ऀऀऀऀ椀昀⠀洀攀琀栀漀搀㴀㴀✀愀瀀瀀攀渀搀✀⤀					insertNode = insertNode.appendChild(document.createElement(ancestors[i].tagName)); ऀऀऀऀ攀氀猀攀					insertNode = insertNode.insertBefore(document.createElement(ancestors[i].tagName),insertNode.firstChild); ऀऀऀऀ椀渀猀攀爀琀一漀搀攀⸀挀氀愀猀猀一愀洀攀 㴀 愀渀挀攀猀琀漀爀猀嬀椀崀⸀挀氀愀猀猀一愀洀攀⬀ ✀ ✀ ⬀ 愀渀挀攀猀琀漀爀猀嬀椀崀⸀椀搀 ⬀ ✀ⴀ挀猀猀㌀洀挀✀㬀				insertNode.style.marginTop = "0"; ऀऀऀऀ椀渀猀攀爀琀一漀搀攀⸀猀琀礀氀攀⸀瀀愀搀搀椀渀最吀漀瀀 㴀 ∀　∀㬀				if(insertNode.tagName.toUpperCase() == 'OL' && n.nodeType == 1 && n.tagName.toUpperCase() =='LI') { ऀऀऀऀऀ瘀愀爀 瀀爀攀瘀猀椀戀 㴀 渀⸀瀀爀攀瘀椀漀甀猀匀椀戀氀椀渀最㬀					var count=0; ऀऀऀऀऀ眀栀椀氀攀⠀瀀爀攀瘀猀椀戀⤀ 笀						if(prevsib.nodeType==1 && prevsib.tagName.toUpperCase() == 'LI')  ऀऀऀऀऀऀऀ挀漀甀渀琀⬀⬀㬀						prevsib = prevsib.previousSibling; ऀऀऀऀऀ紀					insertNode.setAttribute('start', count); ऀऀऀऀ紀			} else { ऀऀऀऀ椀渀猀攀爀琀一漀搀攀 㴀 椀渀猀攀爀琀一漀搀攀⸀挀栀椀氀搀一漀搀攀猀嬀樀崀㬀				if(insertNode.tagName.toUpperCase() == 'OL' && (insertNode.start==-1 || insertNode.start==1) && n.nodeType == 1 && n.tagName.toUpperCase() =='LI') { ऀऀऀऀऀ⼀⼀ 栀愀瀀瀀攀渀猀 椀昀 琀栀攀 琀愀最 眀愀猀 挀爀攀愀琀攀搀 眀栀椀氀攀 瀀爀漀挀攀猀猀椀渀最 愀 琀攀砀琀 渀漀搀攀⸀					var prevsib = n.previousSibling; ऀऀऀऀऀ瘀愀爀 挀漀甀渀琀㴀　㬀					while(prevsib) { ऀऀऀऀऀऀ椀昀⠀瀀爀攀瘀猀椀戀⸀渀漀搀攀吀礀瀀攀㴀㴀㄀ ☀☀ 瀀爀攀瘀猀椀戀⸀琀愀最一愀洀攀⸀琀漀唀瀀瀀攀爀䌀愀猀攀⠀⤀ 㴀㴀 ✀䰀䤀✀⤀ 							count++; ऀऀऀऀऀऀ瀀爀攀瘀猀椀戀 㴀 瀀爀攀瘀猀椀戀⸀瀀爀攀瘀椀漀甀猀匀椀戀氀椀渀最㬀					} ऀऀऀऀऀ椀渀猀攀爀琀一漀搀攀⸀猀攀琀䄀琀琀爀椀戀甀琀攀⠀✀猀琀愀爀琀✀Ⰰ 挀漀甀渀琀⤀㬀				} ऀऀऀ紀		} ऀऀ爀攀琀甀爀渀 椀渀猀攀爀琀一漀搀攀㬀	} ऀ	function moveNode(n,col1,col2) {		 ऀऀ瘀愀爀 椀渀猀攀爀琀一漀搀攀㴀挀爀攀愀琀攀一漀搀攀䄀渀挀攀猀琀漀爀猀⠀渀Ⰰ挀漀氀㄀Ⰰ挀漀氀㈀Ⰰ ✀愀瀀瀀攀渀搀✀⤀㬀		var movedNode = insertNode.appendChild(n.parentNode.removeChild(n)); ऀऀ椀昀⠀椀渀猀攀爀琀一漀搀攀⸀椀搀 㴀㴀 挀漀氀㈀⸀椀搀 ☀☀ 洀漀瘀攀搀一漀搀攀⸀渀漀搀攀吀礀瀀攀 㴀㴀㄀ ⤀ 笀			movedNode.style.paddingTop = "0px"; ऀऀऀ洀漀瘀攀搀一漀搀攀⸀猀琀礀氀攀⸀洀愀爀最椀渀吀漀瀀 㴀 ∀　瀀砀∀㬀		} ऀऀ爀攀琀甀爀渀 洀漀瘀攀搀一漀搀攀㬀	} ऀ	 ऀ昀甀渀挀琀椀漀渀 最攀琀䔀氀攀洀攀渀琀刀攀氀愀琀椀瘀攀吀漀瀀⠀漀戀樀Ⰰ 爀攀昀伀戀樀⤀ 笀		var cur = 0; ऀऀ椀昀⠀漀戀樀⸀漀昀昀猀攀琀倀愀爀攀渀琀⤀ 笀ऀऀ			while(obj.offsetParent) { ऀऀऀऀ挀甀爀⬀㴀漀戀樀⸀漀昀昀猀攀琀吀漀瀀㬀				obj = obj.offsetParent; ऀऀऀ紀		} ऀऀ瘀愀爀 挀甀爀㈀ 㴀 　㬀		if(refObj.offsetParent) {		 ऀऀऀ眀栀椀氀攀⠀爀攀昀伀戀樀⸀漀昀昀猀攀琀倀愀爀攀渀琀⤀ 笀				cur2+=refObj.offsetTop; ऀऀऀऀ爀攀昀伀戀樀 㴀 爀攀昀伀戀樀⸀漀昀昀猀攀琀倀愀爀攀渀琀㬀			} ऀऀ紀		return cur-cur2; // + document.body.offsetTop; ऀ紀	 紀 ⼀⼀ 㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀㴀// Utility Class Constructor skeleton 昀甀渀挀琀椀漀渀 䌀匀匀㌀唀琀椀氀椀琀礀⠀⤀ 笀	// Event Handler utility list ऀ琀栀椀猀⸀栀愀渀搀氀攀爀䰀椀猀琀 㴀 渀攀眀 䄀爀爀愀礀⠀⤀㬀 }  ⼀⼀ 倀甀戀氀椀挀 䴀攀琀栀漀搀猀// ============== // querying of a DOM document using CSS selectors (a getElementsByTagName on steroids) ⼀⼀ 猀攀攀 栀琀琀瀀㨀⼀⼀搀攀愀渀⸀攀搀眀愀爀搀猀⸀渀愀洀攀⼀洀礀⼀挀猀猀儀甀攀爀礀⸀樀猀⸀栀琀洀氀/*     䰀椀挀攀渀猀攀㨀 栀琀琀瀀㨀⼀⼀挀爀攀愀琀椀瘀攀挀漀洀洀漀渀猀⸀漀爀最⼀氀椀挀攀渀猀攀猀⼀戀礀⼀㄀⸀　⼀    Author:  Dean Edwards/2004     圀攀戀㨀     栀琀琀瀀㨀⼀⼀搀攀愀渀⸀攀搀眀愀爀搀猀⸀渀愀洀攀⼀*/ 䌀匀匀㌀唀琀椀氀椀琀礀⸀瀀爀漀琀漀琀礀瀀攀⸀挀猀猀儀甀攀爀礀 㴀 昀甀渀挀琀椀漀渀⠀⤀ 笀      瘀愀爀 瘀攀爀猀椀漀渀 㴀 ∀㄀⸀　⸀㄀∀㬀 ⼀⼀ 琀椀洀攀猀琀愀洀瀀㨀 ㈀　　㐀⼀　㔀⼀㈀㔀     ⼀⼀ 挀漀渀猀琀愀渀琀猀    var STANDARD_SELECT = /^[^>\+~\s]/;     瘀愀爀 匀吀刀䔀䄀䴀 㴀 ⼀嬀尀猀㸀尀⬀縀㨀䀀⌀尀⸀崀簀嬀帀尀猀㸀尀⬀縀㨀䀀⌀尀⸀崀⬀⼀最㬀    var NAMESPACE = /\|/;     瘀愀爀 䤀䴀倀䰀䤀䔀䐀开匀䔀䰀䔀䌀吀伀刀 㴀 ⼀⠀嬀尀猀㸀尀⬀縀尀Ⰰ崀簀帀⤀⠀嬀尀⸀㨀⌀䀀崀⤀⼀最㬀    var ASTERISK ="$1*$2";     瘀愀爀 圀䠀䤀吀䔀匀倀䄀䌀䔀 㴀 ⼀帀尀猀⬀簀尀猀⨀⠀嬀尀⬀尀Ⰰ㸀尀猀㬀㨀崀⤀尀猀⨀簀尀猀⬀␀⼀最㬀    var TRIM = "$1";     瘀愀爀 一伀䐀䔀开䔀䰀䔀䴀䔀一吀 㴀 ㄀㬀    var NODE_TEXT = 3;     瘀愀爀 一伀䐀䔀开䐀伀䌀唀䴀䔀一吀 㴀 㤀㬀     ⼀⼀ 猀渀椀昀昀 昀漀爀 攀砀瀀氀漀爀攀爀 ⠀挀漀猀 漀昀 漀渀攀 氀椀琀琀氀攀 戀甀最⤀    var isMSIE = /MSIE/.test(navigator.appVersion), isXML;     // cache results for faster processing     瘀愀爀 挀猀猀䌀愀挀栀攀 㴀 笀紀㬀     ⼀⼀ 琀栀椀猀 椀猀 琀栀攀 焀甀攀爀礀 昀甀渀挀琀椀漀渀    function cssQuery(selector, from) {         椀昀 ⠀℀猀攀氀攀挀琀漀爀⤀ 爀攀琀甀爀渀 嬀崀㬀        var useCache = arguments.callee.caching && !from;         昀爀漀洀 㴀 ⠀昀爀漀洀⤀ 㼀 ⠀昀爀漀洀⸀挀漀渀猀琀爀甀挀琀漀爀 㴀㴀 䄀爀爀愀礀⤀ 㼀 昀爀漀洀 㨀 嬀昀爀漀洀崀 㨀 嬀搀漀挀甀洀攀渀琀崀㬀        isXML = false;//checkXML(from[0]);         ⼀⼀ 瀀爀漀挀攀猀猀 挀漀洀洀愀 猀攀瀀愀爀愀琀攀搀 猀攀氀攀挀琀漀爀猀        var selectors = parseSelector(selector).split(",");         瘀愀爀 洀愀琀挀栀 㴀 嬀崀㬀        for (var i in selectors) {             ⼀⼀ 挀漀渀瘀攀爀琀 琀栀攀 猀攀氀攀挀琀漀爀 琀漀 愀 猀琀爀攀愀洀            selector = toStream(selectors[i]);             ⼀⼀ 瀀爀漀挀攀猀猀 琀栀攀 猀琀爀攀愀洀            var j = 0, token, filter, cacheSelector = "", filtered = from;             眀栀椀氀攀 ⠀樀 㰀 猀攀氀攀挀琀漀爀⸀氀攀渀最琀栀⤀ 笀                token = selector[j++];                 昀椀氀琀攀爀 㴀 猀攀氀攀挀琀漀爀嬀樀⬀⬀崀㬀                cacheSelector += token + filter;                 ⼀⼀ 瀀爀漀挀攀猀猀 愀 琀漀欀攀渀⼀昀椀氀琀攀爀 瀀愀椀爀                filtered = (useCache && cssCache[cacheSelector]) ? cssCache[cacheSelector] : select(filtered, token, filter);                 椀昀 ⠀甀猀攀䌀愀挀栀攀⤀ 挀猀猀䌀愀挀栀攀嬀挀愀挀栀攀匀攀氀攀挀琀漀爀崀 㴀 昀椀氀琀攀爀攀搀㬀            }             洀愀琀挀栀 㴀 洀愀琀挀栀⸀挀漀渀挀愀琀⠀昀椀氀琀攀爀攀搀⤀㬀        }         ⼀⼀ 爀攀琀甀爀渀 琀栀攀 昀椀氀琀攀爀攀搀 猀攀氀攀挀琀椀漀渀        return match;     紀㬀    cssQuery.caching = false;     挀猀猀儀甀攀爀礀⸀爀攀猀攀琀 㴀 昀甀渀挀琀椀漀渀⠀⤀ 笀        cssCache = {};     紀㬀    cssQuery.toString = function () {         爀攀琀甀爀渀 ∀昀甀渀挀琀椀漀渀 挀猀猀儀甀攀爀礀⠀⤀ 笀尀渀  嬀瘀攀爀猀椀漀渀 ∀ ⬀ 瘀攀爀猀椀漀渀 ⬀ ∀崀尀渀紀∀㬀    };     var checkXML = (isMSIE) ? function(node) {         椀昀 ⠀渀漀搀攀⸀渀漀搀攀吀礀瀀攀 ℀㴀 一伀䐀䔀开䐀伀䌀唀䴀䔀一吀⤀ 渀漀搀攀 㴀 渀漀搀攀⸀搀漀挀甀洀攀渀琀㬀        return node.mimeType == "XML Document";     紀 㨀 昀甀渀挀琀椀漀渀⠀渀漀搀攀⤀ 笀        if (node.nodeType == NODE_DOCUMENT) node = node.documentElement;         爀攀琀甀爀渀 渀漀搀攀⸀氀漀挀愀氀一愀洀攀 ℀㴀 ∀䠀吀䴀䰀∀㬀    };     function parseSelector(selector) {         爀攀琀甀爀渀 猀攀氀攀挀琀漀爀        // trim whitespace         ⸀爀攀瀀氀愀挀攀⠀圀䠀䤀吀䔀匀倀䄀䌀䔀Ⰰ 吀刀䤀䴀⤀        // encode attribute selectors         ⸀爀攀瀀氀愀挀攀⠀愀琀琀爀椀戀甀琀攀匀攀氀攀挀琀漀爀⸀䄀䰀䰀Ⰰ 愀琀琀爀椀戀甀琀攀匀攀氀攀挀琀漀爀⸀䤀䐀⤀        // e.g. ".class1" --> "*.class1"         ⸀爀攀瀀氀愀挀攀⠀䤀䴀倀䰀䤀䔀䐀开匀䔀䰀䔀䌀吀伀刀Ⰰ 䄀匀吀䔀刀䤀匀䬀⤀㬀    };     // convert css selectors to a stream of tokens and filters     ⼀⼀  椀琀✀猀 渀漀琀 愀 爀攀愀氀 猀琀爀攀愀洀⸀ 椀琀✀猀 樀甀猀琀 愀渀 愀爀爀愀礀 漀昀 猀琀爀椀渀最猀⸀    function toStream(selector) {         椀昀 ⠀匀吀䄀一䐀䄀刀䐀开匀䔀䰀䔀䌀吀⸀琀攀猀琀⠀猀攀氀攀挀琀漀爀⤀⤀ 猀攀氀攀挀琀漀爀 㴀 ∀ ∀ ⬀ 猀攀氀攀挀琀漀爀㬀        return selector.match(STREAM) || [];     紀㬀     瘀愀爀 瀀猀攀甀搀漀䌀氀愀猀猀攀猀 㴀 笀 ⼀⼀ 猀琀愀琀椀挀        // CSS1         ∀氀椀渀欀∀㨀 昀甀渀挀琀椀漀渀⠀攀氀攀洀攀渀琀⤀ 笀            for (var i = 0; i < document.links; i++) {                 椀昀 ⠀搀漀挀甀洀攀渀琀⸀氀椀渀欀猀嬀椀崀 㴀㴀 攀氀攀洀攀渀琀⤀ 爀攀琀甀爀渀 琀爀甀攀㬀            }         紀Ⰰ        "visited": function(element) {             ⼀⼀ 挀愀渀✀琀 搀漀 琀栀椀猀 眀椀琀栀漀甀琀 樀椀最最攀爀礀ⴀ瀀漀欀攀爀礀        },         ⼀⼀ 䌀匀匀㈀        "first-child": function(element) {             爀攀琀甀爀渀 ℀瀀爀攀瘀椀漀甀猀䔀氀攀洀攀渀琀⠀攀氀攀洀攀渀琀⤀㬀        },         ⼀⼀ 䌀匀匀㌀        "last-child": function(element) {             爀攀琀甀爀渀 ℀渀攀砀琀䔀氀攀洀攀渀琀⠀攀氀攀洀攀渀琀⤀㬀        },         ∀爀漀漀琀∀㨀 昀甀渀挀琀椀漀渀⠀攀氀攀洀攀渀琀⤀ 笀            var document = element.ownerDocument || element.document;             爀攀琀甀爀渀 䈀漀漀氀攀愀渀⠀攀氀攀洀攀渀琀 㴀㴀 搀漀挀甀洀攀渀琀⸀搀漀挀甀洀攀渀琀䔀氀攀洀攀渀琀⤀㬀        },         ∀攀洀瀀琀礀∀㨀 昀甀渀挀琀椀漀渀⠀攀氀攀洀攀渀琀⤀ 笀            for (var i = 0; i < element.childNodes.length; i++) {                 椀昀 ⠀椀猀䔀氀攀洀攀渀琀⠀攀氀攀洀攀渀琀⸀挀栀椀氀搀一漀搀攀猀嬀椀崀⤀ 簀簀 攀氀攀洀攀渀琀⸀挀栀椀氀搀一漀搀攀猀嬀椀崀⸀渀漀搀攀吀礀瀀攀 㴀㴀 一伀䐀䔀开吀䔀堀吀⤀ 爀攀琀甀爀渀 昀愀氀猀攀㬀            }             爀攀琀甀爀渀 琀爀甀攀㬀        }         ⼀⼀ 愀搀搀 礀漀甀爀 漀眀渀⸀⸀⸀    };     var QUOTED = /([\'\"])[^\1]*\1/;     昀甀渀挀琀椀漀渀 焀甀漀琀攀⠀瘀愀氀甀攀⤀ 笀爀攀琀甀爀渀 ⠀儀唀伀吀䔀䐀⸀琀攀猀琀⠀瘀愀氀甀攀⤀⤀ 㼀 瘀愀氀甀攀 㨀 ∀✀∀ ⬀ 瘀愀氀甀攀 ⬀ ∀✀∀紀㬀    function unquote(value) {return (QUOTED.test(value)) ? value.slice(1, -1) : value};     var attributeSelectors = [];     function attributeSelector(attribute, compare, value) {         ⼀⼀ 瀀爀漀瀀攀爀琀椀攀猀        this.id = attributeSelectors.length;         ⼀⼀ 戀甀椀氀搀 琀栀攀 琀攀猀琀 攀砀瀀爀攀猀猀椀漀渀        var test = "element.";         猀眀椀琀挀栀 ⠀愀琀琀爀椀戀甀琀攀⸀琀漀䰀漀眀攀爀䌀愀猀攀⠀⤀⤀ 笀            case "id":                 琀攀猀琀 ⬀㴀 ∀椀搀∀㬀                break;             挀愀猀攀 ∀挀氀愀猀猀∀㨀                test += "className";                 戀爀攀愀欀㬀            default:                 琀攀猀琀 ⬀㴀 ∀最攀琀䄀琀琀爀椀戀甀琀攀⠀✀∀ ⬀ 愀琀琀爀椀戀甀琀攀 ⬀ ∀✀⤀∀㬀        }         ⼀⼀ 挀漀渀琀椀渀甀攀 戀甀椀氀搀椀渀最 琀栀攀 琀攀猀琀 攀砀瀀爀攀猀猀椀漀渀        switch (compare) {             挀愀猀攀 ∀㴀∀㨀                test += "==" + quote(value);                 戀爀攀愀欀㬀            case "~=":                 琀攀猀琀 㴀 ∀⼀⠀帀簀尀尀猀⤀∀ ⬀ 甀渀焀甀漀琀攀⠀瘀愀氀甀攀⤀ ⬀ ∀⠀尀尀猀簀␀⤀⼀⸀琀攀猀琀⠀∀ ⬀ 琀攀猀琀 ⬀ ∀⤀∀㬀                break;             挀愀猀攀 ∀簀㴀∀㨀                test = "/(^|-)" + unquote(value) + "(-|$)/.test(" + test + ")";                 戀爀攀愀欀㬀        }         瀀甀猀栀⠀愀琀琀爀椀戀甀琀攀匀攀氀攀挀琀漀爀猀Ⰰ 渀攀眀 䘀甀渀挀琀椀漀渀⠀∀攀氀攀洀攀渀琀∀Ⰰ ∀爀攀琀甀爀渀 ∀ ⬀ 琀攀猀琀⤀⤀㬀    };     愀琀琀爀椀戀甀琀攀匀攀氀攀挀琀漀爀⸀瀀爀漀琀漀琀礀瀀攀⸀琀漀匀琀爀椀渀最 㴀 昀甀渀挀琀椀漀渀⠀⤀ 笀        return attributeSelector.PREFIX + this.id;     紀㬀    // constants     愀琀琀爀椀戀甀琀攀匀攀氀攀挀琀漀爀⸀倀刀䔀䘀䤀堀 㴀 ∀䀀∀㬀    attributeSelector.ALL = /\[([^~|=\]]+)([~|]?=?)([^\]]+)?\]/g;     ⼀⼀ 挀氀愀猀猀 洀攀琀栀漀搀猀    attributeSelector.ID = function(match, attribute, compare, value) {         爀攀琀甀爀渀 渀攀眀 愀琀琀爀椀戀甀琀攀匀攀氀攀挀琀漀爀⠀愀琀琀爀椀戀甀琀攀Ⰰ 挀漀洀瀀愀爀攀Ⰰ 瘀愀氀甀攀⤀㬀    };     // select a set of matching elements.     ⼀⼀ ∀昀爀漀洀∀ 椀猀 愀渀 愀爀爀愀礀 漀昀 攀氀攀洀攀渀琀猀⸀    // "token" is a character representing the type of filter     ⼀⼀  攀⸀最⸀ ∀㸀∀ 洀攀愀渀猀 挀栀椀氀搀 猀攀氀攀挀琀漀爀    // "filter" represents the tag name, id or class name that is being selected     ⼀⼀ 琀栀攀 昀甀渀挀琀椀漀渀 爀攀琀甀爀渀猀 愀渀 愀爀爀愀礀 漀昀 洀愀琀挀栀椀渀最 攀氀攀洀攀渀琀猀    function select(from, token, filter) {         ⼀⼀愀氀攀爀琀⠀∀琀漀欀攀渀㴀∀⬀琀漀欀攀渀⬀∀Ⰰ昀椀氀琀攀爀㴀∀⬀昀椀氀琀攀爀⤀㬀        var namespace = "";         椀昀 ⠀一䄀䴀䔀匀倀䄀䌀䔀⸀琀攀猀琀⠀昀椀氀琀攀爀⤀⤀ 笀            filter = filter.split("|");             渀愀洀攀猀瀀愀挀攀 㴀 昀椀氀琀攀爀嬀　崀㬀            filter = filter[1];         紀        var filtered = [], i;         猀眀椀琀挀栀 ⠀琀漀欀攀渀⤀ 笀            case " ": // descendant                 昀漀爀 ⠀椀 椀渀 昀爀漀洀⤀ 笀                    var subset = getElementsByTagNameNS(from[i], filter, namespace);                     昀漀爀 ⠀瘀愀爀 樀 㴀 　㬀 樀 㰀 猀甀戀猀攀琀⸀氀攀渀最琀栀㬀 樀⬀⬀⤀ 笀                        if (isElement(subset[j]) && (!namespace || compareNamespace(subset[j], namespace)))                             瀀甀猀栀⠀昀椀氀琀攀爀攀搀Ⰰ 猀甀戀猀攀琀嬀樀崀⤀㬀                    }                 紀                break;             挀愀猀攀 ∀㸀∀㨀 ⼀⼀ 挀栀椀氀搀                for (i in from) {                     瘀愀爀 猀甀戀猀攀琀 㴀 昀爀漀洀嬀椀崀⸀挀栀椀氀搀一漀搀攀猀㬀                    for (var j = 0; j < subset.length; j++)                         椀昀 ⠀挀漀洀瀀愀爀攀吀愀最一愀洀攀⠀猀甀戀猀攀琀嬀樀崀Ⰰ 昀椀氀琀攀爀Ⰰ 渀愀洀攀猀瀀愀挀攀⤀⤀ 瀀甀猀栀⠀昀椀氀琀攀爀攀搀Ⰰ 猀甀戀猀攀琀嬀樀崀⤀㬀                }                 戀爀攀愀欀㬀            case "+": // adjacent (direct)                 昀漀爀 ⠀椀 椀渀 昀爀漀洀⤀ 笀                    var adjacent = nextElement(from[i]);                     椀昀 ⠀愀搀樀愀挀攀渀琀 ☀☀ 挀漀洀瀀愀爀攀吀愀最一愀洀攀⠀愀搀樀愀挀攀渀琀Ⰰ 昀椀氀琀攀爀Ⰰ 渀愀洀攀猀瀀愀挀攀⤀⤀ 瀀甀猀栀⠀昀椀氀琀攀爀攀搀Ⰰ 愀搀樀愀挀攀渀琀⤀㬀                }                 戀爀攀愀欀㬀            case "~": // adjacent (indirect)                 昀漀爀 ⠀椀 椀渀 昀爀漀洀⤀ 笀                    var adjacent = from[i];                     眀栀椀氀攀 ⠀愀搀樀愀挀攀渀琀 㴀 渀攀砀琀䔀氀攀洀攀渀琀⠀愀搀樀愀挀攀渀琀⤀⤀ 笀                        if (adjacent && compareTagName(adjacent, filter, namespace)) push(filtered, adjacent);                     紀                }                 戀爀攀愀欀㬀            case ".": // class                 昀椀氀琀攀爀 㴀 渀攀眀 刀攀最䔀砀瀀⠀∀⠀帀簀尀尀猀⤀∀ ⬀ 昀椀氀琀攀爀 ⬀ ∀⠀尀尀猀簀␀⤀∀⤀㬀                for (i in from) if (filter.test(from[i].className)) push(filtered, from[i]);                 戀爀攀愀欀㬀            case "#": // id                 昀漀爀 ⠀椀 椀渀 昀爀漀洀⤀ 椀昀 ⠀昀爀漀洀嬀椀崀⸀椀搀 㴀㴀 昀椀氀琀攀爀⤀ 瀀甀猀栀⠀昀椀氀琀攀爀攀搀Ⰰ 昀爀漀洀嬀椀崀⤀㬀                break;             挀愀猀攀 ∀䀀∀㨀 ⼀⼀ 愀琀琀爀椀戀甀琀攀 猀攀氀攀挀琀漀爀                filter = attributeSelectors[filter];                 昀漀爀 ⠀椀 椀渀 昀爀漀洀⤀ 椀昀 ⠀昀椀氀琀攀爀⠀昀爀漀洀嬀椀崀⤀⤀ 瀀甀猀栀⠀昀椀氀琀攀爀攀搀Ⰰ 昀爀漀洀嬀椀崀⤀㬀                break;             挀愀猀攀 ∀㨀∀㨀 ⼀⼀ 瀀猀攀甀搀漀ⴀ挀氀愀猀猀 ⠀猀琀愀琀椀挀⤀                filter = pseudoClasses[filter];                 昀漀爀 ⠀椀 椀渀 昀爀漀洀⤀ 椀昀 ⠀昀椀氀琀攀爀⠀昀爀漀洀嬀椀崀⤀⤀ 瀀甀猀栀⠀昀椀氀琀攀爀攀搀Ⰰ 昀爀漀洀嬀椀崀⤀㬀                break;         紀        return filtered;     紀㬀     瘀愀爀 最攀琀䔀氀攀洀攀渀琀猀䈀礀吀愀最一愀洀攀一匀 㴀 ⠀椀猀䴀匀䤀䔀⤀ 㼀 昀甀渀挀琀椀漀渀⠀昀爀漀洀Ⰰ 琀愀最一愀洀攀⤀ 笀        return (tagName == "*" && from.all) ? from.all : from.getElementsByTagName(tagName);     紀 㨀 昀甀渀挀琀椀漀渀⠀昀爀漀洀Ⰰ 琀愀最一愀洀攀Ⰰ 渀愀洀攀猀瀀愀挀攀⤀ 笀        return (namespace) ? from.getElementsByTagNameNS("*", tagName) : from.getElementsByTagName(tagName);     紀㬀     昀甀渀挀琀椀漀渀 挀漀洀瀀愀爀攀吀愀最一愀洀攀⠀攀氀攀洀攀渀琀Ⰰ 琀愀最一愀洀攀Ⰰ 渀愀洀攀猀瀀愀挀攀⤀ 笀        if (namespace && !compareNamespace(element, namespace)) return false;         爀攀琀甀爀渀 ⠀琀愀最一愀洀攀 㴀㴀 ∀⨀∀⤀ 㼀 椀猀䔀氀攀洀攀渀琀⠀攀氀攀洀攀渀琀⤀ 㨀 ⠀椀猀堀䴀䰀⤀ 㼀 ⠀攀氀攀洀攀渀琀⸀琀愀最一愀洀攀 㴀㴀 琀愀最一愀洀攀⤀ 㨀 ⠀攀氀攀洀攀渀琀⸀琀愀最一愀洀攀 㴀㴀 琀愀最一愀洀攀⸀琀漀唀瀀瀀攀爀䌀愀猀攀⠀⤀⤀㬀    };     var PREFIX = (isMSIE) ? "scopeName" : "prefix";     昀甀渀挀琀椀漀渀 挀漀洀瀀愀爀攀一愀洀攀猀瀀愀挀攀⠀攀氀攀洀攀渀琀Ⰰ 渀愀洀攀猀瀀愀挀攀⤀ 笀        return element[PREFIX] == namespace;     紀㬀     ⼀⼀ 爀攀琀甀爀渀 琀栀攀 瀀爀攀瘀椀漀甀猀 攀氀攀洀攀渀琀 琀漀 琀栀攀 猀甀瀀瀀氀椀攀搀 攀氀攀洀攀渀琀    //  previousSibling is not good enough as it might return a text or comment node     昀甀渀挀琀椀漀渀 瀀爀攀瘀椀漀甀猀䔀氀攀洀攀渀琀⠀攀氀攀洀攀渀琀⤀ 笀        while ((element = element.previousSibling) && !isElement(element)) continue;         爀攀琀甀爀渀 攀氀攀洀攀渀琀㬀    };     // return the next element to the supplied element     昀甀渀挀琀椀漀渀 渀攀砀琀䔀氀攀洀攀渀琀⠀攀氀攀洀攀渀琀⤀ 笀        while ((element = element.nextSibling) && !isElement(element)) continue;         爀攀琀甀爀渀 攀氀攀洀攀渀琀㬀    };     function isElement(node) {         爀攀琀甀爀渀 䈀漀漀氀攀愀渀⠀渀漀搀攀⸀渀漀搀攀吀礀瀀攀 㴀㴀 一伀䐀䔀开䔀䰀䔀䴀䔀一吀 ☀☀ 渀漀搀攀⸀琀愀最一愀洀攀 ℀㴀 ∀℀∀⤀㬀    };     // use a baby push function because IE5.0 doesn't support Array.push     昀甀渀挀琀椀漀渀 瀀甀猀栀⠀愀爀爀愀礀Ⰰ 椀琀攀洀⤀ 笀        array[array.length] = item;     紀㬀     ⼀⼀ 昀椀砀 䤀䔀㔀⸀　 匀琀爀椀渀最⸀爀攀瀀氀愀挀攀    if ("i".replace(/i/,function(){return""})) {         ⼀⼀ 瀀爀攀猀攀爀瘀攀 匀琀爀椀渀最⸀爀攀瀀氀愀挀攀        var string_replace = String.prototype.replace;         ⼀⼀ 挀爀攀愀琀攀 匀琀爀椀渀最⸀爀攀瀀氀愀挀攀 昀漀爀 栀愀渀搀氀椀渀最 昀甀渀挀琀椀漀渀猀        var function_replace = function(regexp, replacement) {             瘀愀爀 洀愀琀挀栀Ⰰ 渀攀眀匀琀爀椀渀最 㴀 ∀∀Ⰰ 猀琀爀椀渀最 㴀 琀栀椀猀㬀            while ((match = regexp.exec(string))) {                 ⼀⼀ 昀椀瘀攀 猀琀爀椀渀最 爀攀瀀氀愀挀攀洀攀渀琀 愀爀最甀洀攀渀琀猀 椀猀 猀甀昀昀椀挀攀渀琀 昀漀爀 挀猀猀儀甀攀爀礀                newString += string.slice(0, match.index) + replacement(match[0], match[1], match[2], match[3], match[4]);                 猀琀爀椀渀最 㴀 猀琀爀椀渀最⸀猀氀椀挀攀⠀洀愀琀挀栀⸀氀愀猀琀䤀渀搀攀砀⤀㬀            }             爀攀琀甀爀渀 渀攀眀匀琀爀椀渀最 ⬀ 猀琀爀椀渀最㬀        };         ⼀⼀ 爀攀瀀氀愀挀攀 匀琀爀椀渀最⸀爀攀瀀氀愀挀攀        String.prototype.replace = function (regexp, replacement) {             琀栀椀猀⸀爀攀瀀氀愀挀攀 㴀 ⠀琀礀瀀攀漀昀 爀攀瀀氀愀挀攀洀攀渀琀 㴀㴀 ∀昀甀渀挀琀椀漀渀∀⤀ 㼀 昀甀渀挀琀椀漀渀开爀攀瀀氀愀挀攀 㨀 猀琀爀椀渀最开爀攀瀀氀愀挀攀㬀            return this.replace(regexp, replacement);         紀㬀    }     return cssQuery; 紀⠀⤀㬀 ⼀⼀ 䌀爀漀猀猀ⴀ䈀爀漀眀猀攀爀 攀瘀攀渀琀 栀愀渀搀氀攀爀⸀CSS3Utility.prototype.XBrowserAddEventHandler = function(target,eventName,handlerName) {       ऀ椀昀⠀℀琀愀爀最攀琀⤀ 爀攀琀甀爀渀㬀	if (target.addEventListener) {  ऀऀ琀愀爀最攀琀⸀愀搀搀䔀瘀攀渀琀䰀椀猀琀攀渀攀爀⠀攀瘀攀渀琀一愀洀攀Ⰰ 昀甀渀挀琀椀漀渀⠀攀⤀笀攀瘀愀氀⠀栀愀渀搀氀攀爀一愀洀攀⤀⠀攀⤀㬀紀Ⰰ 昀愀氀猀攀⤀㬀	} else if (target.attachEvent) {  ऀऀ琀愀爀最攀琀⸀愀琀琀愀挀栀䔀瘀攀渀琀⠀∀漀渀∀ ⬀ 攀瘀攀渀琀一愀洀攀Ⰰ 昀甀渀挀琀椀漀渀⠀攀⤀笀攀瘀愀氀⠀栀愀渀搀氀攀爀一愀洀攀⤀⠀攀⤀㬀紀⤀㬀		} else {  ऀऀ⼀⼀ 吀䠀䤀匀 䌀伀䐀䔀 一伀吀 吀䔀匀吀䔀䐀 		var originalHandler = target["on" + eventName];  ऀऀ椀昀 ⠀漀爀椀最椀渀愀氀䠀愀渀搀氀攀爀⤀ 笀 		  target["on" + eventName] = function(e){originalHandler(e);eval(handlerName)(e);};  ऀऀ紀 攀氀猀攀 笀 		  target["on" + eventName] = eval(handlerName);  ऀऀ紀 	}  ऀ⼀⼀ 䬀攀攀瀀 琀爀愀挀欀 漀昀 愀搀搀攀搀 栀愀渀搀氀攀爀猀⸀	var l = this.handlerList.length; ऀ琀栀椀猀⸀栀愀渀搀氀攀爀䰀椀猀琀嬀氀崀 㴀 渀攀眀 䄀爀爀愀礀⠀㈀⤀㬀	this.handlerList[l][0] = target.id;   ऀ琀栀椀猀⸀栀愀渀搀氀攀爀䰀椀猀琀嬀氀崀嬀㄀崀 㴀 攀瘀攀渀琀一愀洀攀㬀  ऀ	// see http://weblogs.asp.net/asmith/archive/2003/10/06/30744.aspx ऀ⼀⼀ 昀漀爀 愀 挀漀洀瀀氀攀琀攀 堀䈀爀漀眀猀攀爀䄀搀搀䔀瘀攀渀琀䠀愀渀搀氀攀爀 }  // getPseudoCssRules() ⼀⼀ 䌀漀渀猀琀爀甀挀琀漀爀 昀漀爀 愀 瀀猀攀甀搀漀ⴀ挀猀猀 爀甀氀攀 漀戀樀攀挀琀 // (an unsupported property, thus not present in the DOM rules collection) // Constructor parameters ⼀⼀ ⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀⴀ// the css property name ⼀⼀ 琀栀攀 猀琀礀氀攀猀栀攀攀琀 ⠀愀猀 愀 琀攀砀琀 猀琀爀攀愀洀⤀ ⼀⼀ 伀戀樀攀挀琀 瀀爀漀瀀攀爀琀椀攀猀㨀 // ------------------ ⼀⼀ 猀攀氀攀挀琀漀爀 ⠀猀琀爀椀渀最⤀// property (string) ⼀⼀ 瘀愀氀甀攀 ⠀猀琀爀椀渀最⤀CSS3Utility.prototype.getPseudoCssRules = function(propertyName, serializedStylesheet) { ऀ琀栀椀猀⸀挀猀猀刀甀氀攀猀 㴀 渀攀眀 䄀爀爀愀礀⠀⤀㬀	var valuePattern = propertyName.replace("-","\-")+"[\\s]*:[\\s]*([^;}]*)[;}]"; ऀ瘀愀爀 猀攀氀攀挀琀漀爀倀愀琀琀攀爀渀 㴀 ∀␀∀㬀	var regx = new RegExp(valuePattern,"g"); ऀ瘀愀爀 爀攀最砀䴀愀琀挀栀 㴀 爀攀最砀⸀攀砀攀挀⠀猀攀爀椀愀氀椀稀攀搀匀琀礀氀攀猀栀攀攀琀⤀㬀	var j=0; ऀ	while(regxMatch){ ऀऀ瘀愀爀 猀琀爀 㴀 猀攀爀椀愀氀椀稀攀搀匀琀礀氀攀猀栀攀攀琀⸀猀甀戀猀琀爀⠀　Ⰰ猀攀爀椀愀氀椀稀攀搀匀琀礀氀攀猀栀攀攀琀⸀猀甀戀猀琀爀⠀　Ⰰ猀攀爀椀愀氀椀稀攀搀匀琀礀氀攀猀栀攀攀琀⸀椀渀搀攀砀伀昀⠀爀攀最砀䴀愀琀挀栀嬀　崀⤀⤀⸀氀愀猀琀䤀渀搀攀砀伀昀⠀✀笀✀⤀⤀㬀		var selectorText = str.substr(str.lastIndexOf('}')+1).replace(/^\s*|\s*$/g,""); ऀऀ⼀⼀ 椀最渀漀爀攀 挀漀洀洀攀渀琀攀搀 爀甀氀攀 ℀℀  		this.cssRules[j] = new Object(); ऀऀ琀栀椀猀⸀挀猀猀刀甀氀攀猀嬀樀崀⸀猀攀氀攀挀琀漀爀吀攀砀琀 㴀 猀攀氀攀挀琀漀爀吀攀砀琀㬀		this.cssRules[j].property = propertyName; ऀऀ琀栀椀猀⸀挀猀猀刀甀氀攀猀嬀樀崀⸀瘀愀氀甀攀 㴀 爀攀最砀䴀愀琀挀栀嬀㄀崀⸀爀攀瀀氀愀挀攀⠀⼀⠀尀爀㼀尀渀⤀⨀⼀最Ⰰ∀∀⤀㬀  ⼀⼀ 猀甀瀀瀀爀攀猀猀 氀椀渀攀 戀爀攀愀欀猀		j++; ऀऀ爀攀最砀䴀愀琀挀栀 㴀 爀攀最砀⸀攀砀攀挀⠀猀攀爀椀愀氀椀稀攀搀匀琀礀氀攀猀栀攀攀琀⤀㬀	}	 紀 // Generates a random ID 䌀匀匀㌀唀琀椀氀椀琀礀⸀瀀爀漀琀漀琀礀瀀攀⸀爀愀渀搀漀洀䤀搀 㴀 昀甀渀挀琀椀漀渀 ⠀⤀ 笀	var rId = ""; ऀ昀漀爀 ⠀瘀愀爀 椀㴀　㬀 椀㰀㘀㬀椀⬀⬀⤀		rId += String.fromCharCode(97 + Math.floor((Math.random()*24))) ऀ爀攀琀甀爀渀 爀䤀搀㬀} CSS3Utility.prototype.debug = function(text) {  ऀ瘀愀爀 搀攀戀甀最伀甀琀瀀甀琀 㴀 搀漀挀甀洀攀渀琀⸀最攀琀䔀氀攀洀攀渀琀䈀礀䤀搀⠀✀搀攀戀甀最伀甀琀瀀甀琀✀⤀㬀 ⼀⼀ 䐀攀戀甀最 伀甀琀瀀甀琀	if(typeof debugOutput != "undefined" && debugOutput) { ऀऀ⼀⼀搀攀戀甀最伀甀琀瀀甀琀⸀愀瀀瀀攀渀搀䌀栀椀氀搀⠀搀漀挀甀洀攀渀琀⸀挀爀攀愀琀攀䔀氀攀洀攀渀琀⠀✀栀爀✀⤀⤀㬀 		//debugOutput.appendChild(document.createTextNode(text));  ऀऀ搀攀戀甀最伀甀琀瀀甀琀⸀椀渀渀攀爀䠀吀䴀䰀⬀㴀 琀攀砀琀㬀	} 紀   ⼀⼀ 伀戀樀攀挀琀 䤀渀猀琀愀渀挀攀var css3MC = new CSS3MultiColumn();
