--- /dev/null
+/*\r
+ * pettanR libs.js\r
+ * version 0.5.39\r
+ * \r
+ * \r
+ * Type\r
+ * \r
+ * UA\r
+ * \r
+ * Util\r
+ * \r
+ * CSS\r
+ * \r
+ */\r
+\r
+if( !( 'console' in window ) ){\r
+ window[ 'console' ] = { log : function(){} };\r
+}\r
+\r
+var getFunctionName = function( f ){\r
+ return 'name' in f\r
+ ? f.name\r
+ : (''+f).replace(/^\s*function\s*([^\(]*)[\S\s]+$/im, '$1');\r
+};\r
+\r
+/*\r
+ * http://d.hatena.ne.jp/hir90/20080620/1213987444\r
+ */\r
+ String.prototype.repeat = function( num){\r
+ var str = "" + this;\r
+ var ans = '';\r
+ if( num < 0) return 'error';\r
+ while( num){\r
+ if( num&1) ans += str;\r
+ num = num>>1;\r
+ str += str;\r
+ }\r
+ return ans;\r
+ }\r
+\r
+/*\r
+ * http://pettanr.sourceforge.jp/test/type.html\r
+ */\r
+ var Type = {\r
+ isObject : function(v) {\r
+ return v !== null && typeof v === 'object';\r
+ },\r
+ isFunction : function(v) {\r
+ return typeof v === 'function';\r
+ },\r
+ isArray : function(v) {\r
+ return Object.prototype.toString.call(v) === '[object Array]';\r
+ },\r
+ isBoolean : function(v) {\r
+ return typeof v === 'boolean';\r
+ },\r
+ isString : function(v) {\r
+ return typeof v === 'string';\r
+ },\r
+ isNumber : function(v) {\r
+ return typeof v === 'number';\r
+ },\r
+ isFinite : function(v){\r
+ return Type.isNumber(v) === true && isFinite(v);\r
+ },\r
+ isHTMLElement : function(v){\r
+ if( 'HTMLElement' in window ){\r
+ Type.isHTMLElement = function(v){\r
+ return v instanceof HTMLElement;\r
+ };\r
+ } else {\r
+ Type.isHTMLElement = function(v) {\r
+ if( Type.isObject(v) === false ){\r
+ return false;\r
+ };\r
+ var r;\r
+ if(v && v.nodeType === 1 ){\r
+ try {\r
+ r = v.cloneNode(false);\r
+ } catch(n){\r
+ return false;\r
+ };\r
+ if(r === v) return false;\r
+ try{\r
+ r.nodeType = 9;\r
+ return r.nodeType === 1;\r
+ } catch(n){};\r
+ return true;\r
+ };\r
+ return false;\r
+ };\r
+ };\r
+ return Type.isHTMLElement(v);\r
+ },\r
+ /*\r
+ isElementCollection : function(v) {\r
+ return (Object.prototype.toString.call(v) === "[object HTMLCollection]");\r
+ },\r
+ */\r
+ isNull : function(v) {\r
+ return v === null;\r
+ },\r
+ isUndefined : function(v) {\r
+ return typeof v === 'undefined';\r
+ }\r
+ };\r
+\r
+/*\r
+ * UA\r
+ * \r
+ * detect userAgent\r
+ * detect plug in\r
+ */\r
+ var UA = ( function(){\r
+ var ua = (function(){\r
+ var acme = {};\r
+ \r
+ var n = navigator;\r
+ var dua = n.userAgent;\r
+ var dav = n.appVersion;\r
+ var tv = parseFloat(dav);\r
+ acme.isOpera = (dua.indexOf("Opera") >= 0) ? tv: undefined;\r
+ acme.isKhtml = (dav.indexOf("Konqueror") >= 0) ? tv : undefined;\r
+ acme.isWebKit = parseFloat(dua.split("WebKit\/")[1]) || undefined;\r
+ acme.isChrome = parseFloat(dua.split("Chrome\/")[1]) || undefined;\r
+ acme.isGecko = (dua.indexOf("Gecko\/") >= 0) ? parseFloat(dua.split("rv:")[1].replace( /^(\d*\.\d*)\.(\d*)/, '$1$2' )) : undefined;\r
+ var index = Math.max(dav.indexOf("WebKit"), dav.indexOf("Safari"), 0);\r
+ if(index && !acme.isChrome){\r
+ acme.isSafari = parseFloat(dav.split("Version/")[1]);\r
+ if(!acme.isSafari || parseFloat(dav.substr(index + 7)) <= 419.3){\r
+ acme.isSafari = 2;\r
+ };\r
+ };\r
+ if(document.all && !acme.isOpera){\r
+ acme.isIE = parseFloat(dav.split("MSIE ")[1]) || undefined;\r
+ };\r
+ \r
+ return acme;\r
+ })(),\r
+ isIE = navigator.userAgent.toLowerCase().indexOf( 'msie') !== -1,\r
+ ieVersion = isIE === true ? parseInt( navigator.appVersion.toLowerCase().replace( /.*msie[ ]/, '').match( /^[0-9]+/)) : 0,\r
+ ieRenderingVersion = ieVersion === 8 ? document.documentMode : ieVersion,\r
+ isStanderdMode = document.compatMode === 'CSS1Compat',\r
+ ActiveX = ( function(){\r
+ if( isIE === false || ieVersion > 8 ) return false;\r
+ var b = document.body,\r
+ c = b.className || '',\r
+ x,\r
+ ret = undefined, //pettanr.URL_PARAMS.ActiveX,\r
+ ns = 'pettanr-ActiveX-',\r
+ enabled = 'enabled',\r
+ disabled = 'disabled';\r
+ if( ret !== true && ret !== false){\r
+ if( b.className.indexOf( ns + enabled ) !== -1 ) return true;\r
+ if( b.className.indexOf( ns + disabled ) !== -1 ) return false;\r
+ x = document.createElement( 'div' );\r
+ b.appendChild(x);\r
+ x.style.cssText = 'width:1px;height:1px;line-height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
+ ret = x.offsetHeight > 1;\r
+ b.removeChild(x);\r
+ };\r
+ b.className += [ c !== '' ? ' ' : c, ns, ret === true ? enabled : disabled ].join( '');\r
+ return ret;\r
+ })(),\r
+ VML = ( function(){\r
+ if( ActiveX === false || isIE === false || ieVersion > 8) return false;\r
+ var globalObjectName = 'detect_activex',//Util.createGlobalUniqueName(),\r
+ script,\r
+ id = 'detectVML';\r
+ document.write( [ '<!--[if gte vml 1]><script id="', id, '">window', '.', globalObjectName, '=1;<\/script><![endif]-->'].join( ''));\r
+ if( window[ globalObjectName ] === 1 ){\r
+ script = document.getElementById( id );\r
+ script.parentNode.removeChild( script );\r
+ window[ globalObjectName ] = null;\r
+ return true;\r
+ };\r
+ return false;\r
+ })(),\r
+ isStandAloneMode = ( function(){\r
+ if( isIE === false) return false;\r
+ if( VML === true) return false;\r
+ var globalObjectName = 'detect_standalone', //Util.createGlobalUniqueName(),\r
+ script,\r
+ id = 'detectStandAlone';\r
+ document.write( [ '<!--[if IE ', Math.floor( ieVersion ), ']><script id="', id, '">window', '.', globalObjectName, '=1;<\/script><![endif]-->'].join( '' ));\r
+ if( window[globalObjectName] === 1 ){\r
+ script = document.getElementById( id);\r
+ script.parentNode.removeChild( script);\r
+ window[globalObjectName] = null;\r
+ return false;\r
+ };\r
+ return true;\r
+ })();\r
+ return {\r
+ IE: ua.isIE,\r
+ GECKO: ua.isGecko,\r
+ OPERA: ua.isOpera,\r
+ KHTML: ua.isKhtml,\r
+ WEBKIT: ua.isWebKit,\r
+ CHROME: ua.isChrome,\r
+ isIE: isIE,\r
+ ieVersion: ieVersion,\r
+ ieRenderingVersion: ieRenderingVersion,\r
+ isStanderdMode: isStanderdMode,\r
+ ACTIVEX: ActiveX,\r
+ VML: VML,\r
+ STANDALONE: isStandAloneMode,\r
+ VENDER_PREFIX: ( function() {\r
+ var ua = navigator.userAgent.toLowerCase();\r
+ if ( ua.indexOf('opera') !== -1 ){\r
+ return 'O';\r
+ } else if ( ua.indexOf('msie') !== -1 ){\r
+ return 'ms';\r
+ } else if ( ua.indexOf('webkit') !== -1 ){\r
+ return 'webkit';\r
+ } else if ( navigator.product === 'Gecko' ){\r
+ return 'Moz';\r
+ }\r
+ return '';\r
+ })(),\r
+ startVML: function(){\r
+ delete UA.startVML;\r
+ if( UA.VML !== true) return false;\r
+ if (!document.namespaces["v"]) {\r
+ document.namespaces.add("v", "urn:schemas-microsoft-com:vml", "#default#VML");\r
+ };\r
+ document.createStyleSheet().cssText = "v\:shape,v\:image{behavior:url(#default#VML);display:block;};";\r
+ }\r
+ };\r
+ })();\r
+\r
+\r
+/* ----------------------------------------------------\r
+ * Util\r
+ * \r
+ * extend( baseInstance, extend)\r
+ * cleanCommentNode()\r
+ * cleanElement()\r
+ * getElementSize( _elm)\r
+ * getImageSize()\r
+ * getAbsolutePath()\r
+ * getGrobalObjectName()\r
+ * \r
+ */\r
+ var Util = ( function( window, document, undefined ){\r
+ var body = document.getElementsByTagName( 'body' )[ 0 ];\r
+ \r
+ var ELM_SIZE_GETTER = ( function(){\r
+ var ret = document.createElement( 'div' );\r
+ body.appendChild( ret );\r
+ \r
+ ret.id = 'elmSizeGetter';\r
+ ret.style.cssText = 'position:absolute;left:0;top:-9999px;visibility:hidden';\r
+ \r
+ body.removeChild( ret );\r
+ return ret;\r
+ })(),\r
+ CLEAN_TARGET_ELEMENT = 'script,style,object,applet,embed,iframe,frame,base,bgsound,frameset,listing'.split( ',' );\r
+ \r
+ var UNIT_RATIO = ( function( elm ){\r
+ var ret = {},\r
+ unit,\r
+ units = 'cm,mm,in,pt,pc'.split( ',' ),\r
+ i = units.length;\r
+ \r
+ body.appendChild( elm );\r
+ \r
+ for( ; i; ){\r
+ unit = units[ --i ];\r
+ elm.style.width = 1000 + unit;\r
+ ret[ unit ] = elm.offsetWidth / 1000;\r
+ };\r
+ elm.style.cssText = '';\r
+ \r
+ body.removeChild( elm );\r
+ return ret;\r
+ })( ELM_SIZE_GETTER );\r
+ \r
+ var FONT_SIZE_RATIO = ( function( elm ){\r
+ var ret = {},\r
+ size, base,\r
+ list = 'xx-large,x-large,large,larger,medium,small,smaller,x-small,xx-small'.split( ',' ),\r
+ i = list.length;\r
+ \r
+ body.appendChild( elm );\r
+ elm.style.cssText = 'font-size:100px;line-height:1em;';\r
+ elm.appendChild( document.createTextNode( 'X' ) );\r
+ \r
+ base = elm.offsetHeight;\r
+ \r
+ for( ; i; ){\r
+ size = list[ --i ];\r
+ elm.style.fontSize = size;\r
+ ret[ size ] = base;\r
+ };\r
+ \r
+ elm.style.cssText = '';\r
+ elm.removeChild( elm.firstChild );\r
+ body.removeChild( elm );\r
+ return ret;\r
+ })( ELM_SIZE_GETTER );\r
+ \r
+ var REG_LARGE = /[A-Z]/g;\r
+ \r
+ /* clean comment node */\r
+ window.setTimeout( function(){\r
+ // Util.cleanCommentNode();\r
+ \r
+ /* clean noscript */\r
+\r
+ var noscripts = Util.copyArray( document.getElementsByTagName( 'noscript' ) ),\r
+ ns,\r
+ i = noscripts.length;\r
+ for( ; i; ){\r
+ ns = noscripts[ --i ];\r
+ ns.parentNode && ns.parentNode.removeChild( ns );\r
+ };\r
+ }, 0 );\r
+ \r
+ function clone( src ) {\r
+ var ret;\r
+ if( Type.isArray(src) === true ){\r
+ ret = [];\r
+ } else\r
+ if( Type.isObject(src) === true ){\r
+ ret = {};\r
+ } else\r
+ if( Type.isNumber(src) === true || Type.isString(src) === true || Type.isBoolean( src ) === true ){\r
+ return src;\r
+ } else {\r
+ return null;\r
+ };\r
+ for( var key in src ){\r
+ ret[ key ] = clone( src[ key ]);\r
+ };\r
+ return ret;\r
+ };\r
+ \r
+ return {\r
+ parse: function( v ){\r
+ if( Type.isString( v ) === true ){\r
+ if( v === 'true' ) return true;\r
+ if( v === 'false' ) return false;\r
+ if( v === 'null' ) return null;\r
+ if( v === 'undefined' ) return undefined;\r
+ if( v === 'NaN' ) return NaN;\r
+ if( v === '' ) return v;\r
+ var _v = v.split( ' ' ).join( '' ),\r
+ n = _v - 0;\r
+ if( '' + n === _v || '' + n === '0' + _v ) return n - 0;\r
+ };\r
+ return v;\r
+ },\r
+ extend: function( target, extend ){\r
+ for( var key in extend ){\r
+ if( Type.isUndefined( target[ key ] ) === true ){\r
+ target[ key ] = extend[ key ];\r
+ } else\r
+ if( typeof target[ key ] === typeof extend[ key ] ){\r
+ target[ key ] = extend[ key ];\r
+ } else {\r
+ alert( 'extend error' );\r
+ };\r
+ };\r
+ return target;\r
+ },\r
+ copy: function( objOrArray ){\r
+ return clone( objOrArray );\r
+ },\r
+ cleanCommentNode: function ( _targetElm ){\r
+ search( _targetElm || body );\r
+ \r
+ function search( _elm ){\r
+ if( !_elm ) return;\r
+ if( _elm.nodeType === 8 ){\r
+ _elm.parentNode.removeChild( _elm );\r
+ return;\r
+ };\r
+ if( _elm.nodeType === 1 ){\r
+ var _array = Util.copyArray( _elm.childNodes ); // liveNode > array\r
+ while( _array.length > 0 ) search( _array.shift() );\r
+ };\r
+ };\r
+ },\r
+ cleanElement: function( _targetElm ){\r
+ var _array, _elm, j, _css,\r
+ i = CLEAN_TARGET_ELEMENT.length;\r
+ for( ; i; ){\r
+ _array = Util.copyArray( _targetElm.getElementsByTagName( CLEAN_TARGET_ELEMENT[ --i ] ) );\r
+ for( j = _array.length; j; ){\r
+ _elm = _nodes[ --j ];\r
+ _elm.parentNode && _elm.parentNode.removeChild( _elm );\r
+ };\r
+ };\r
+ Util.cleanCommentNode( _targetElm );\r
+ \r
+ if( UA.isIE === false ) return;\r
+ _nodes = _targetElm.all || _targetElm.getElementsByTagName( '*' );\r
+ for( i = _nodes.length; i; ){\r
+ _elm = _nodes[ --i ];\r
+ _css = Util.getInlineStyle( _elm );\r
+ _css.filter = null;\r
+ _css.behavior = null;\r
+ _elm.style.cssText = Util.toCssText( _css );\r
+ };\r
+ },\r
+ camelize: function( cssProp ){\r
+ var parts = cssProp.split( ' ' ).join( '' ).split( '-' ),\r
+ l = parts.length,\r
+ i, camelized;\r
+ if( l === 1 ) return parts[ 0 ];\r
+ \r
+ camelized = cssProp.charAt(0) === '-'\r
+ ? parts[ 0 ].charAt( 0 ).toUpperCase() + parts[ 0 ].substring( 1 )\r
+ : parts[ 0 ];\r
+ \r
+ for( i = 1; i < l; ++i ){\r
+ camelized += parts[ i ].charAt( 0 ).toUpperCase() + parts[ i ].substring( 1 );\r
+ };\r
+ return camelized;\r
+ },\r
+ uncamelize: function( str ){\r
+ return str.split( ' ' ).join( '' ).replace( REG_LARGE, '-$&' ).toLowerCase();\r
+ },\r
+ pxTo: function( _px, _unit ){\r
+ return _px / ( UNIT_RATIO[ _unit ] || 1 );\r
+ },\r
+ toPx: function( x, _unit ){\r
+ return x * ( UNIT_RATIO[ _unit ] || 1 );\r
+ },\r
+ absoluteFontSizeToPx: function( fontsize ){\r
+ return FONT_SIZE_RATIO[ fontsize ] || 0;\r
+ },\r
+ getElementSize: function( _elm ){\r
+ if( Type.isHTMLElement( _elm ) === false ){\r
+ return {\r
+ width: 0,\r
+ height: 0\r
+ };\r
+ };\r
+ var parentElm = _elm.parentNode,\r
+ prevElm = _elm.previousSibling,\r
+ nextElm = _elm.nextSibling,\r
+ displayNone = _elm.style.display === 'none';\r
+ if( displayNone === true ) _elm.style.display = 'block';\r
+ \r
+ body.appendChild( ELM_SIZE_GETTER );\r
+ ELM_SIZE_GETTER.appendChild( _elm );\r
+ \r
+ var ret = {\r
+ width: _elm.offsetWidth,\r
+ height: _elm.offsetHeight\r
+ };\r
+ if( displayNone === true ) _elm.style.display = 'none';\r
+ if( nextElm ){\r
+ parentElm.insertBefore( _elm, nextElm );\r
+ } else \r
+ if( prevElm && prevElm.nextSibling ){\r
+ parentElm.insertBefore( _elm, prevElm.nextSibling );\r
+ } else {\r
+ parentElm && parentElm.appendChild( _elm );\r
+ };\r
+ body.removeChild( ELM_SIZE_GETTER );\r
+ \r
+ return ret;\r
+ },\r
+ getImageSize: function( img ){\r
+ var parentElm = img.parentNode,\r
+ prevElm = img.previousSibling,\r
+ nextElm = img.nextSibling,\r
+ displayNone = img.style.display === 'none';\r
+ if( displayNone === true ) img.style.display = '';\r
+ \r
+ body.appendChild( ELM_SIZE_GETTER );\r
+ ELM_SIZE_GETTER.appendChild( img );\r
+ \r
+ var size = getActualDimension( img );\r
+ \r
+ if( displayNone === true ) img.style.display = 'none';\r
+ if( nextElm ){\r
+ parentElm.insertBefore( img, nextElm );\r
+ } else \r
+ if( prevElm && prevElm.nextSibling ){\r
+ parentElm.insertBefore( img, prevElm.nextSibling );\r
+ } else {\r
+ parentElm && parentElm.appendChild( img );\r
+ }\r
+ body.removeChild( ELM_SIZE_GETTER );\r
+ \r
+ /* LICENSE: MIT\r
+ * AUTHOR: uupaa.js@gmail.com\r
+ */\r
+ function getActualDimension(image) {\r
+ var run, mem, w, h, key = "actual";\r
+ \r
+ // for Firefox, Safari, Google Chrome\r
+ if( "naturalWidth" in image ){\r
+ return {\r
+ width: image.naturalWidth,\r
+ height: image.naturalHeight\r
+ };\r
+ };\r
+ \r
+ if( "src" in image ){ // HTMLImageElement\r
+ if (image[key] && image[key].src === image.src) {\r
+ return image[key];\r
+ };\r
+ if( document.uniqueID ){ // for IE\r
+ run = image.runtimeStyle;\r
+ mem = { w: run.width, h: run.height }; // keep runtimeStyle\r
+ run.width = "auto"; // override\r
+ run.height = "auto";\r
+ w = image.width;\r
+ h = image.height;\r
+ run.width = mem.w; // restore\r
+ run.height = mem.h;\r
+ } else { // for Opera and Other\r
+ mem = { w: image.width, h: image.height }; // keep current style\r
+ image.removeAttribute("width");\r
+ image.removeAttribute("height");\r
+ w = image.width;\r
+ h = image.height;\r
+ image.width = mem.w; // restore\r
+ image.height = mem.h;\r
+ };\r
+ return image[key] = { width: w, height: h, src: image.src }; // bond\r
+ };\r
+ // HTMLCanvasElement\r
+ return { width: image.width, height: image.height };\r
+ };\r
+ \r
+ return size;\r
+ },\r
+ getAbsolutePath: function( path ){\r
+ var elm = document.createElement('div');\r
+ body.appendChild( elm );\r
+ elm.innerHTML = '<a href=\"' + path + '\" />';\r
+ body.removeChild( elm );\r
+ return elm.firstChild.href;\r
+ },\r
+ getAbsolutePosition: function( _elm ){\r
+ // Find the destination's position\r
+ // need html, body { fontfamily: "MS PGothic", "MS Gothic" } for ie6.\r
+ var destx = _elm.offsetLeft,\r
+ desty = _elm.offsetTop,\r
+ thisNode = _elm,\r
+ body = document.body;\r
+ while( thisNode.offsetParent && thisNode !== body ){\r
+ thisNode = thisNode.offsetParent;\r
+ destx += thisNode.offsetLeft;\r
+ desty += thisNode.offsetTop;\r
+ };\r
+ return {\r
+ x: destx,\r
+ y: desty\r
+ };\r
+ },\r
+ contain: function( parent, child ){\r
+ function find( node ){\r
+ var children = node.childNodes,\r
+ i = 0,\r
+ l = children.length,\r
+ elm;\r
+ for( ; i<l; ++i ){\r
+ elm = children[ i ];\r
+ if( elm === child ) return true;\r
+ if( elm.nodeType === 1 && find( elm ) === true ) return true;\r
+ };\r
+ return false;\r
+ };\r
+ return find( parent );\r
+ },\r
+ pullHtmlAsTemplete: function( html ){\r
+ var elm = document.createElement( 'div' );\r
+ body.appendChild( elm );\r
+ elm.innerHTML = html;\r
+ body.removeChild( elm );\r
+ return elm.firstChild;\r
+ },\r
+ getElementsByClassName: function( _elm, _className, opt_tagName ){\r
+ var _all = !opt_tagName || opt_tagName === '*',\r
+ _livenodes = _all === true ? ( _elm.all || _elm.getElementsByTagName( '*' )) : _elm.getElementsByTagName( opt_tagName ),\r
+ _nodes = Util.copyArray( _livenodes );\r
+ for( var j = 0; j < _nodes.length; ){\r
+ _node = _nodes[ j ];\r
+ if( _node.nodeType !== 1 || Util.hasClassName( _node, _className ) === false ){\r
+ _nodes.splice( j, 1 );\r
+ } else {\r
+ ++j;\r
+ };\r
+ };\r
+ return _nodes;\r
+ },\r
+ getChildIndex: function( _parent, _child ){\r
+ var _children = _parent.getElementsByTagName( _child.tagName );\r
+ for( var i = _children.length; i; ){\r
+ if( _children[ --i ] === _child ) return i;\r
+ };\r
+ return -1;\r
+ },\r
+ hasClassName: function( _elm, _className ){\r
+ var cnames = ( _elm.className || '' ).split( ' ' ),\r
+ _cnames = _className.split( ' ' ),\r
+ cname,\r
+ i = _cnames.length;\r
+ for( ; i; ){\r
+ cname = _cnames[ --i ];\r
+ if( cname === '' ) continue;\r
+ if( Util.getIndex( cnames, cname ) === -1 ) return false;\r
+ };\r
+ return true;\r
+ },\r
+ addClass: function( _elm, _className ){\r
+ if( Util.hasClassName( _elm, _className ) === false ){\r
+ var sp = ' ';\r
+ var _array = ( _elm.className || '' ).replace( /\s+/g, sp ).split( sp );\r
+ _array.push( _className );\r
+ _elm.className = _array.join( sp );\r
+ };\r
+ },\r
+ removeClass: function( _elm, _className ){\r
+ var sp = ' ',\r
+ _array = _elm.className.replace( /\s+/g, sp ).split( sp ),\r
+ i = Util.getIndex( _array, _className );\r
+ if( i !== -1 ){\r
+ _array.splice( i, 1 );\r
+ _elm.className = _array.join( sp );\r
+ };\r
+ },\r
+ toggleClass: function( _elm, _className, _switch ){\r
+ if( Type.isBoolean( _switch ) === true ){\r
+ _switch === true ? Util.addClass( _elm, _className ) : Util.removeClass( _elm, _className );\r
+ } else {\r
+ Util.hasClassName( _elm, _className ) === false ? Util.addClass( _elm, _className ) : Util.removeClass( _elm, _className );\r
+ };\r
+ },\r
+ removeAllChildren: function ( _elm ){\r
+ while( _elm.firstChild ){\r
+ remove( _elm.firstChild );\r
+ }\r
+ function remove( _node ){\r
+ while( _node.firstChild){\r
+ remove( _node.firstChild);\r
+ }\r
+ _node.parentNode && _node.parentNode.removeChild( _node);\r
+ }\r
+ },\r
+ getIndex: function( _array, _element ){\r
+ if( Array.prototype.indexof ){\r
+ Util.getIndex = function( _array, _element ){\r
+ return _array.indexof( _element );\r
+ };\r
+ } else {\r
+ Util.getIndex = function( _array, _element ){\r
+ var i = _array.length;\r
+ for( ; i; ){\r
+ if( _array[ --i ] === _element ) return i;\r
+ };\r
+ return -1;\r
+ };\r
+ };\r
+ return Util.getIndex( _array, _element );\r
+ },\r
+ copyArray: function( _array ){\r
+ var l = _array.length,\r
+ ret = new Array( l ),\r
+ i = 0;\r
+ for( ; i<l; ++i ){\r
+ ret[ i ] = _array[ i ];\r
+ };\r
+ return ret;\r
+ },\r
+ /*\r
+ * \r
+ */\r
+ createGlobalUniqueName: function(){\r
+ var randomKey = null;\r
+ while( true ){\r
+ randomKey = '_uniqueName'+(''+Math.random()).replace(/\./,'');\r
+ if( typeof window[randomKey] === 'undefined'){\r
+ break;\r
+ }\r
+ }\r
+ return randomKey;\r
+ },\r
+ createIframe: function( id, callback, hide ){\r
+ var ua = UA;\r
+ var el = document.createElement( ua.isIE ? '<iframe name="' + id + '" frameborder="0" scrolling="no">' : 'iframe');\r
+ \r
+ if( ua.isIE ){\r
+ el.onreadystatechange = function(){\r
+ if( this.readyState === "complete" ){\r
+ this.onreadystatechange = new Function();\r
+ this.onreadystatechange = null;\r
+ setTimeout( asynkCallback, 0 );\r
+ };\r
+ };\r
+ } else {\r
+ // iron(chrome) の場合、append の前に onload を指定しないと onload が呼ばれない\r
+ el.onload = function(){\r
+ el.onload = null;\r
+ setTimeout( asynkCallback, 0 );\r
+ };\r
+ };\r
+ \r
+ document.body.appendChild( el );\r
+ el.id = el.name = id;\r
+ el.setAttribute( 'name', id );\r
+ if( hide === true )el.style.cssText = 'width:1px;height:1px;visibility:hidden;position:absolute;top:1px;left:1px;';\r
+ // http://d.hatena.ne.jp/onozaty/20070830/p1\r
+ // [JavaScript]IE6ではJavaScriptで動的に作成したiframeに対してsubmitできない(IE7は未確認) ->解決\r
+ el.contentWindow.name = id; \r
+ \r
+ window[ id ] = el;\r
+\r
+ function asynkCallback(){\r
+ callback( el );\r
+ };\r
+ }\r
+ };\r
+ })( window, document );\r
+\r
+\r
+var CSS = ( function( window, documwnt, undefined ){\r
+ var CORON = ':',\r
+ EMPTY = '',\r
+ SEMICORON = ';',\r
+ UNITS = 'px,cm,mm,in,pt,pc,em,%'.split( ',' ),\r
+ CLIP_SEPARATOR = UA.isIE === true && UA.ieVersion < 8 ? ' ' : ',';\r
+\r
+ var SPECIAL = ( function(){\r
+ var _special = {};\r
+ if( UA.isIE === true && UA.ieVersion < 9 ){\r
+ if( UA.ACTIVEX === true ){\r
+ // _special.opacity = 'ActiveXOpacity';\r
+ _special.setFilters = function( style ){\r
+ var filters = ( style.filter || '' ).split( ') ' ),\r
+ data = {},\r
+ i = filters.length,\r
+ filter, names, props, prop, j, l, key, v;\r
+ for( ; i; ){\r
+ filter = filters[ --i ].split( ' ' ).join( '' ).split( '(' );\r
+ if( filter.length !== 2 ) continue;\r
+ names = filter[ 0 ].split( '.' ); // progid:DXImageTransform.Microsoft.Shadow(color=#666666,direction=120,strength=9)\r
+ props = filter[ 1 ].split( ',' ); // \r
+ filter = {};\r
+ for( j = 0, l = props.length; j < l; ++j ){\r
+ prop = props[ j ].split( '=' );\r
+ key = prop[ 0 ].toLowerCase();\r
+ v = prop[ 1 ];\r
+ filter[ key ] = v; //v.charAt( 0 ) === '#' ? v : parseInt( v );\r
+ };\r
+ data[ names[ names.length - 1 ] ] = filter;\r
+ };\r
+ \r
+ style.filter = data;\r
+ style.opacity = data.alpha && data.alpha.opacity ? data.alpha.opacity / 100 : 1;\r
+ };\r
+ _special.hasLayout = function( elm ){\r
+ return elm.currentStyle.hasLayout;\r
+ };\r
+ } else {\r
+ _special.opacity = null;\r
+ };\r
+ } else {\r
+ var style = document.documentElement.style;\r
+ _special.opacity = style.opacity !== undefined ? 'opacity' : \r
+ style.MozOpacity !== undefined ? 'MozOpacity' :\r
+ style.KhtmlOpacity !== undefined ? 'KhtmlOpacity' :\r
+ style[ '-khtml-opacity' ] !== undefined ? 'KhtmlOpacity' : null;\r
+\r
+ // if( style.backgroundPositionX === undefined ){\r
+ _special.setBackgroundPositionXY = function( style ){\r
+ var bgp = ( style.backgroundPosition || '' ).split( ' ' );\r
+ style.backgroundPositionX = bgp[ 0 ] || 0;\r
+ style.backgroundPositionY = bgp[ 1 ] || 0;\r
+ };\r
+ // };\r
+ if( style.clipTop === undefined && style[ 'clip-top' ] === undefined ){\r
+ _special.setClipTopRightBottomLeft = function( style ){\r
+ var clip = style.clip || '';\r
+ if( clip.indexOf( 'rect(' ) === -1 ){\r
+ style.clipTop = 0;\r
+ style.clipRight = 0;\r
+ style.clipBottom = 0;\r
+ style.clipLeft = 0;\r
+ return;\r
+ };\r
+ clip = clip.split( '(' )[ 1 ].split( ')' )[ 0 ].split( clip.indexOf( ',' ) !== -1 ? ',' : ' ' );\r
+ ret.clipTop = clip[ 0 ];\r
+ ret.clipRight = clip[ 1 ];\r
+ ret.clipBottom = clip[ 2 ];\r
+ ret.clipLeft = clip[ 3 ];\r
+ };\r
+ };\r
+ };\r
+ \r
+ return _special;\r
+ })();\r
+ \r
+ function cssToObject( css ){\r
+ var ret = {}, i, nv, n, v,\r
+ parse = Util.parse,\r
+ isNumber = Type.isNumber,\r
+ camelize = Util.camelize;\r
+ if( Type.isString( css ) === true ){\r
+ css = css.split( ';' );\r
+ for( i = css.length; i; ){\r
+ nv = css[ --i ].split( ':' ); // filter の場合, progid: がくる\r
+ n = nv.shift();\r
+ if( isNumber( parse( n ) ) === true ) continue;\r
+ v = nv.join( '' );\r
+ while( v.charAt( 0 ) === ' ' ) v = v.substr( 1 );\r
+ ret[ camelize( n ) ] = parse( v );\r
+ };\r
+ } else {\r
+ for( n in css ){\r
+ if( Type.isNumber( parse( n ) ) === false ) ret[ n ] = parse( css[ n ] );\r
+ };\r
+ };\r
+\r
+ if( SPECIAL.setFilters ){\r
+ SPECIAL.setFilters( ret );\r
+ } else {\r
+ ret.opacity = SPECIAL.opacity !== null ? ret[ SPECIAL.opacity ] : 1;\r
+ };\r
+ \r
+ SPECIAL.setBackgroundPositionXY && SPECIAL.setBackgroundPositionXY( ret );\r
+ SPECIAL.setClipTopRightBottomLeft && SPECIAL.setClipTopRightBottomLeft( ret );\r
+ \r
+ return ret;\r
+ };\r
+\r
+ var COLOR = ( function(){\r
+ var ret = {}, v, name,\r
+ list = [\r
+ 0, 'BLACK',\r
+ parseInt( 'FF0000', 16 ), 'RED',\r
+ parseInt( '00FF00', 16 ), 'LIME',\r
+ parseInt( '0000FF', 16 ), 'BLUE',\r
+ parseInt( 'FFFF00', 16 ), 'YELLOW',\r
+ parseInt( '00FFFF', 16 ), 'AQUA or CYAN',\r
+ parseInt( 'FF00FF', 16 ), 'FUCHSIA or MAGENTA',\r
+ parseInt( 'FFFFFF', 16 ), 'WHITE',\r
+ parseInt( '008000', 16 ), 'GREEN',\r
+ parseInt( '800080', 16 ), 'PURPLE',\r
+ parseInt( '800000', 16 ), 'MAROON',\r
+ parseInt( '000080', 16 ), 'NAVY',\r
+ parseInt( '808000', 16 ), 'OLIVE',\r
+ parseInt( '008080', 16 ), 'TEAL',\r
+ parseInt( '808080', 16 ), 'GRAY',\r
+ parseInt( 'C0C0C0', 16 ), 'SILVER',\r
+ parseInt( '696969', 16 ), 'DIMGRAY',\r
+ parseInt( '708090', 16 ), 'SLATEGRAY',\r
+ parseInt( 'A9A9A9', 16 ), 'DARKGRAY',\r
+ parseInt( 'DCDCDC', 16 ), 'GAINSBORO',\r
+ parseInt( '191970', 16 ), 'MIDNIGHTBLUE',\r
+ parseInt( '6A5ACD', 16 ), 'SLATEBLUE',\r
+ parseInt( '0000CD', 16 ), 'MEDIUMBLUE',\r
+ parseInt( '4169E1', 16 ), 'ROYALBLUE',\r
+ parseInt( '1E90FF', 16 ), 'DODGERBLUE',\r
+ parseInt( '87CEEB', 16 ), 'SKYBLUE',\r
+ parseInt( '4682B4', 16 ), 'STEELBLUE',\r
+ parseInt( 'ADD8E6', 16 ), 'LIGHTBLUE',\r
+ parseInt( 'AFEEEE', 16 ), 'PALETURQUOISE',\r
+ parseInt( '40E0D0', 16 ), 'TURQUOISE',\r
+ parseInt( 'E0FFFF', 16 ), 'LIGHTCYAN',\r
+ parseInt( '7FFFD4', 16 ), 'AQUAMARINE',\r
+ parseInt( '006400', 16 ), 'DARKGREEN',\r
+ parseInt( '2E8B57', 16 ), 'SEAGREEN',\r
+ parseInt( '90EE90', 16 ), 'LIGHTGREEN',\r
+ parseInt( '7FFF00', 16 ), 'CHARTREUSE',\r
+ parseInt( 'ADFF2F', 16 ), 'GREENYELLOW',\r
+ parseInt( '32CD32', 16 ), 'LIMEGREEN',\r
+ parseInt( '9ACD32', 16 ), 'YELLOWGREEN',\r
+ parseInt( '6B8E23', 16 ), 'OLIVEDRAB',\r
+ parseInt( 'BCB76B', 16 ), 'DARKKHAKI',\r
+ parseInt( 'EEE8AA', 16 ), 'PALEGOLDENROD',\r
+ parseInt( 'FFFFE0', 16 ), 'LIGHTYELLOW',\r
+ parseInt( 'FFD700', 16 ), 'GOLD',\r
+ parseInt( 'DAA520', 16 ), 'GOLDENROD',\r
+ parseInt( 'B8860B', 16 ), 'DARKGOLDENROD',\r
+ parseInt( 'BC8F8F', 16 ), 'ROSYBROWN',\r
+ parseInt( 'CD5C5C', 16 ), 'INDIANRED',\r
+ parseInt( '8B4513', 16 ), 'SADDLEBROWN',\r
+ parseInt( 'A0522D', 16 ), 'SIENNA',\r
+ parseInt( 'CD853F', 16 ), 'PERU',\r
+ parseInt( 'DEB887', 16 ), 'BURLYWOOD',\r
+ parseInt( 'F5F5DC', 16 ), 'BEIGE',\r
+ parseInt( 'F5DEB3', 16 ), 'WHEAT',\r
+ parseInt( 'F4A460', 16 ), 'SANDYBROWN',\r
+ parseInt( 'D2B48C', 16 ), 'TAN',\r
+ parseInt( 'D2691E', 16 ), 'CHOCOLATE',\r
+ parseInt( 'B22222', 16 ), 'FIREBRICK',\r
+ parseInt( 'A52A2A', 16 ), 'BROWN',\r
+ parseInt( 'FA8072', 16 ), 'SALMON',\r
+ parseInt( 'FFA500', 16 ), 'ORANGE',\r
+ parseInt( 'FF7F50', 16 ), 'CORAL',\r
+ parseInt( 'FF6347', 16 ), 'TOMATO',\r
+ parseInt( 'FF69B4', 16 ), 'HOTPINK',\r
+ parseInt( 'FFC0CB', 16 ), 'PINK',\r
+ parseInt( 'FF1493', 16 ), 'DEEPPINK',\r
+ parseInt( 'DB7093', 16 ), 'PALEVIOLETRED',\r
+ parseInt( 'EE82EE', 16 ), 'VIOLET',\r
+ parseInt( 'DDA0DD', 16 ), 'PLUM',\r
+ parseInt( 'DA70D6', 16 ), 'ORCHILD',\r
+ parseInt( '9400D3', 16 ), 'DARKVIOLET',\r
+ parseInt( '8A2BE2', 16 ), 'BLUEVIOLET',\r
+ parseInt( '9370DB', 16 ), 'MEDIUMPURPLE',\r
+ parseInt( 'D8BFD8', 16 ), 'THISTLE',\r
+ parseInt( 'E6E6FA', 16 ), 'LAVENDER',\r
+ parseInt( 'FFE4E1', 16 ), 'MISTYROSE',\r
+ parseInt( 'FFFFF0', 16 ), 'IVORY',\r
+ parseInt( 'FFFACD', 16 ), 'LEMONCHIFFON'\r
+ ];\r
+ for( i=list.length; i; ){\r
+ v = list[ --i ];\r
+ name = list[ --i ];\r
+ ret[ name ] = v;\r
+ };\r
+ return ret;\r
+ })();\r
+ \r
+ var PARAMS = ( function(){\r
+ var ret = {};\r
+ register( ret.percent = {},\r
+ 'marginBottom,marginLeft,marginRight,marginTop,paddingBottom,paddingLeft,paddingRight,paddingTop,fontSize,textIndent'\r
+ );\r
+ register( ret.offset = {},\r
+ 'height,width,bottom,left,right,top'\r
+ ); \r
+ register( ret.size = {},\r
+ 'borderBottomWidth,borderLeftWidth,borderRightWidth,borderTopWidth,letterSpacing'\r
+ );\r
+ register( ret.color = {},\r
+ 'backgroundColor,borderBottomColor,borderLeftColor,borderRightColor,borderTopColor,color'\r
+ );\r
+ register( ret.region = {},\r
+ 'margin,padding,borderWidth,borderColor'\r
+ ); \r
+ register( ret.special = {},\r
+ 'clip,backgroundPosition,opacity,lineHeight,zIndex'\r
+ );\r
+ register( ret.unit = {}, 'px,cm,mm,in,pt,pc,em,%' );\r
+ \r
+ register( ret.margin = {}, 'marginBottom,marginLeft,marginRight,marginTop,paddingBottom' );\r
+ register( ret.padding = {}, 'paddingBottom,paddingLeft,paddingRight,paddingTop' );\r
+ register( ret.borderWidth = {}, 'borderBottomWidth,borderLeftWidth,borderRightWidth,borderTopWidth' );\r
+ register( ret.borderColor = {}, 'borderBottomColor,borderLeftColor,borderRightColor,borderTopColor' );\r
+ \r
+ function register( obj, params ){\r
+ params = params.split( ',' );\r
+ for( var i=params.length; i; ) obj[ params[ --i ] ] = true;\r
+ };\r
+ return ret;\r
+ })();\r
+ \r
+ /*\r
+ * \r
+ */\r
+ var PropertyClass = function( name, value, unit, pxPerEm ){\r
+ this.name = name;\r
+ this.value = value;\r
+ this.unit = unit;\r
+ this.pxPerEm = pxPerEm; // XXpx = 1em;\r
+ };\r
+ PropertyClass.prototype = {\r
+ name: '',\r
+ value: 0,\r
+ pxPerEm: 12, // 1em === ??px\r
+ unit: '',\r
+ equal: function( prop ){\r
+ if( this.unit === prop.unit ){\r
+ return this.value === prop.value;\r
+ };\r
+ return Math.abs( this.toPx() - prop.toPx() ) < 1;\r
+ },\r
+ convert: function( prop ){\r
+ var u = prop.unit, v;\r
+ if( this.unit === u ) return;\r
+ this.value = v = this.toPx();\r
+ this.unit = u;\r
+ if( u !== px ){\r
+ this.value = u === 'em' ? v / this.pxPerEm : Util.pxTo( v, u );\r
+ };\r
+ },\r
+ setValue: function( v ){\r
+ this.value = v;\r
+ },\r
+ getValue: function(){\r
+ return this.value;\r
+ },\r
+ getOffset: function( prop ){\r
+ return prop.value - this.value;\r
+ },\r
+ getUnit: function(){\r
+ return this.unit;\r
+ },\r
+ getValueText: function(){\r
+ return this.value === 0 ? '0' : this.value + this.unit;\r
+ },\r
+ clear: function(){\r
+ var t = this, p;\r
+ for( p in t ){\r
+ if( t.hasOwnProperty && !t.hasOwnProperty( p ) ) continue;\r
+ delete t[ p ];\r
+ };\r
+ },\r
+ toPx: function(){\r
+ var v = this.value, u = this.unit;\r
+ if( u === px ) return v;\r
+ if( u === 'em' ) return v * this.pxPerEm;\r
+ if( u === '' && this.name === 'lineHeight' ) return v * this.pxPerEm;\r
+ return Util.toPx( v, u );\r
+ },\r
+ isValid: function( t ){\r
+ t = t || this;\r
+ var n = t.name,\r
+ v = t.value,\r
+ u = t.unit,\r
+ z = u !== '' ? true : v === 0;\r
+ if( PARAMS.percent[ n ] === true ) return z;\r
+ if( PARAMS.offset[ n ] === true ) return z;\r
+ if( PARAMS.size[ n ] === true ) return z && u !== '%';\r
+ if( PARAMS.special[ n ] === true ){\r
+ if( n === 'lineHeight' ) return true;\r
+ if( n === 'opacity' ) return 0 <= v && v <= 1 && u === '';\r
+ if( n === 'zIndex' ) return u === '';\r
+ };\r
+ return false;\r
+ }\r
+ };\r
+ \r
+ /**\r
+ * backgroundPosition, clip\r
+ */\r
+ var PropertyGroupClass = function( name ){\r
+ this.name = name;\r
+ this.props = [];\r
+ for( var i = 1, l = arguments.length; i<l; ++i ){\r
+ this.props.push( arguments[ i ] );\r
+ };\r
+ };\r
+ \r
+ /**\r
+ * margin, padding, borderWidth, borderColor\r
+ */\r
+ var FrexiblePropertyClass = function( name ){\r
+ this.name = name;\r
+ this.props = [];\r
+ for( var i = 1, l = arguments.length; i<l; ++i ){\r
+ this.props.push( arguments[ i ] );\r
+ };\r
+ // top, bottom, left, right, topbottom, leftright, all\r
+ };\r
+ FrexiblePropertyClass.prototype = PropertyGroupClass.prototype = {\r
+ name: '',\r
+ equal: function( prop ){\r
+ var ps = this.props, i = ps.length;\r
+ for( ; i; ){\r
+ --i;\r
+ if( ps[ i ].equal( prop[ i ] ) === false ) return false;\r
+ };\r
+ return true;\r
+ },\r
+ convert: function( prop ){\r
+ var ps = this.props, i = ps.length;\r
+ for( ; i; ){\r
+ --i;\r
+ ps[ i ].convert( prop[ i ] );\r
+ };\r
+ },\r
+ setValue: function( ary ){\r
+ var ps = this.props, i = 0, l = ps.length;\r
+ for( ; i<l; ++i ){\r
+ ps[ i ].setValue( ary[ i ] );\r
+ };\r
+ },\r
+ getValue: function(){\r
+ var ret = [], ps = this.props, i = 0, l = ps.length;\r
+ for( ; i<l; ++i ){\r
+ ret.push( ps[ i ].getValue() );\r
+ };\r
+ return ret;\r
+ },\r
+ getOffset: function( prop ){\r
+ var ret = [],\r
+ ps = this.props,\r
+ _ps = prop.props,\r
+ i = 0,\r
+ l = ps.length;\r
+ for( ; i<l; ++i ){\r
+ ret.push( ps[ i ].getOffset( _ps[ i ] ) );\r
+ };\r
+ return ret;\r
+ },\r
+ getUnit: function(){\r
+ var ret = [], ps = this.props, i = 0, l = ps.length;\r
+ for( ; i<l; ++i ){\r
+ ret.push( ps[ i ].getUnit() );\r
+ };\r
+ return ret;\r
+ },\r
+ getValueText: function(){\r
+ var ret = [], ps = this.props, i = 0, l = ps.length;\r
+ for( ; i<l; ++i ){\r
+ ret.push( ps[ i ].getValueText() );\r
+ }; \r
+ if( this.name === 'clip' ){\r
+ return 'rect(' + ret.join( CLIP_SEPARATOR ) + ')';\r
+ };\r
+ return ret.join( ' ' );\r
+ },\r
+ clear: function(){\r
+ var ps = this.props, i = ps.length;\r
+ for( ; i; ){\r
+ ps[ --i ].clear();\r
+ };\r
+ delete this.name;\r
+ delete this.props;\r
+ },\r
+ isValid: function( t ){\r
+ t = t || this;\r
+ var ps = t.props, i = ps.length;\r
+ for( ; i; ){\r
+ --i;\r
+ if( ps[ i ].isValid() === false ) return false;\r
+ };\r
+ return true;\r
+ }\r
+ };\r
+\r
+ var ColorPropertyClass = function( name, r, g, b, pct ){\r
+ this.name = name;\r
+ this.r = r;\r
+ this.g = g;\r
+ this.b = b;\r
+ this.pct = pct;\r
+ };\r
+ ColorPropertyClass.prototype = {\r
+ name: '',\r
+ equal: function( prop ){\r
+ if( this.pct === prop.pct ){\r
+ return this.r === prop.r && this.g === prop.g && this.b === prop.b;\r
+ };\r
+ var rgb = this._toPct(),\r
+ _rgb = prop._toPct(),\r
+ i = rgb.length;\r
+ for( ; i; ){\r
+ --i;\r
+ if( Math.abs( rgb[ i ] - _rgb[ i ] ) > 1 ) return false;\r
+ };\r
+ return true;\r
+ },\r
+ convert: function( prop ){\r
+ var u = prop.pct;\r
+ if( this.pct === u ) return;\r
+ var x = u === true ? 100 / 255 : 2.55;\r
+ this.r *= x;\r
+ this.g *= x;\r
+ this.b *= x;\r
+ this.pct = u;\r
+ },\r
+ setValue: function( rgb ){\r
+ this.r = rgb[ 0 ];\r
+ this.g = rgb[ 1 ];\r
+ this.b = rgb[ 2 ];\r
+ },\r
+ getValue: function(){\r
+ return [ this.r, this.g, this.b ];\r
+ },\r
+ getOffset: function( prop ){\r
+ return [ prop.r - this.r, prop.g - this.g, prop.b - this.b ];\r
+ },\r
+ getUnit: function(){\r
+ return this.pct === true ? '%' : '';\r
+ },\r
+ getValueText: function(){\r
+ if( this.pct === true ){\r
+ return [ 'rgb(', this.r, '%,', this.g, '%,', this.b, '%)' ].join( '' );\r
+ };\r
+ var round = Math.round;\r
+ //return [ 'rgb(', round( this.r ), ',', round( this.g ), ',', round( this.b ), ')' ].join( '' );\r
+ \r
+ var rgb = '00000' + ( ( round( this.r ) << 16 ) + ( round( this.g ) << 8 ) + round( this.b ) ).toString( 16 );\r
+ return '#' + rgb.substr( rgb.length - 6 );\r
+ },\r
+ clear: function(){\r
+ var t = this, p;\r
+ for( p in t ){\r
+ if( t.hasOwnProperty && !t.hasOwnProperty( p ) ) continue;\r
+ delete t[ p ];\r
+ };\r
+ },\r
+ _toPct: function(){\r
+ if( this.pct === true ) return [ this.r, this.g, this.b ];\r
+ return [ this.r / 2.55, this.g / 2.55, this.b / 2.55 ];\r
+ },\r
+ isValid: function( t ){\r
+ var isFinite = window.isFinite;\r
+ if( !isFinite( this.r ) || !isFinite( this.g ) || !isFinite( this.b ) ) return false;\r
+ if( 0 > this.r || 0 > this.g || 0 > this.b ) return false;\r
+ if( this.pct === true ){\r
+ return this.r <= 100 && this.g <= 100 && this.b <= 100;\r
+ };\r
+ return this.r <= 255 && this.g <= 255 && this.b <= 255;\r
+ }\r
+ };\r
+ \r
+ var isString = Type.isString,\r
+ isNumber = Type.isNumber;\r
+ var REG_UINIT = /.*\d(\w{1,2})?/,\r
+ $1 = '$1',\r
+ px = 'px',\r
+ REG_XXXXXX = /^#[\da-fA-F]{6}?/,\r
+ REG_XXX = /^#[\da-fA-F]{3}?/;\r
+ \r
+ var WrappedStyleClass = function( elm, style ){\r
+ this.elm = elm;\r
+ this.style = style;\r
+ this.pxPerEm = this.get( 'fontSize' ).toPx();\r
+ };\r
+\r
+ WrappedStyleClass.prototype = {\r
+ get: function( p ){\r
+ if( PARAMS.special[ p ] === true || PARAMS.region[ p ] === true ){\r
+ if( p === 'clip' ) return this.getClip();\r
+ if( p === 'margin' ) return this.getMarginPaddingBorder( p );\r
+ if( p === 'padding' ) return this.getMarginPaddingBorder( p );\r
+ if( p === 'borderWidth' ) return this.getMarginPaddingBorder( 'border', 'Width' );\r
+ if( p === 'borderColor' ) return this.getBorderColor( 'borderColor' );\r
+ if( p === 'backgroundPosition' ) return this.getBackgroundPosition( p );\r
+ // opacity, zindex, lineHeight\r
+ return new PropertyClass( p, this.getValue( x, p ), this.getUnit( x ), this.pxPerEm );\r
+ };\r
+ var x = this.style[ p ], e, v, u;\r
+ if( PARAMS.offset[ p ] === true ){\r
+ return new PropertyClass( p, this.getValue( x, p ), this.getUnit( x, p ), this.pxPerEm );\r
+ /*\r
+ e = this.elm;\r
+ if( p === 'width' ) v = e.offsetWidth;\r
+ if( p === 'height' ) v = e.offsetHeight;\r
+ if( p === 'top' ) v = e.offsetTop;\r
+ if( p === 'bottom' ) v = e.offsetBottom;\r
+ if( p === 'left' ) v = e.offsetLeft;\r
+ if( p === 'right' ) v = e.offsetRight;\r
+ u = this.getUnit( x, p );\r
+ // alert( p + this.pxTo( v, u ) + u )\r
+ return new PropertyClass( p, this.pxTo( v, u ), u, this.pxPerEm ); */\r
+ };\r
+ if( p === 'fontSize' ){ // xx-small 等\r
+ v = Util.absoluteFontSizeToPx( x );\r
+ if( v !== 0 ){\r
+ return new PropertyClass( p, v, px, this.pxPerEm );\r
+ };\r
+ }; \r
+ if( PARAMS.percent[ p ] === true ){\r
+ // alert( p + ' , ' + x + ' , ' + this.getUnit( x, p ) )\r
+ return new PropertyClass( p, this.getValue( x, p ), this.getUnit( x, p ), this.pxPerEm );\r
+ };\r
+ if( PARAMS.size[ p ] === true ){\r
+ return new PropertyClass( p, this.getValue( x, p ), this.getUnit( x, p ), this.pxPerEm );\r
+ };\r
+ if( PARAMS.color[ p ] === true ){\r
+ return this.getColor( x, p );\r
+ };\r
+ },\r
+ pxTo: function( px, unit ){\r
+ if( unit === 'em' ) return px / this.pxPerEm;\r
+ return Util.pxTo( px, unit );\r
+ },\r
+ getValue: function( x, p ){\r
+ if( isString( x ) === true ){\r
+ return parseInt( x );\r
+ } else\r
+ if( isNumber( x ) === true ){\r
+ return x;\r
+ };\r
+ return 0;\r
+ },\r
+ getUnit: function( x, p ){\r
+ var u;\r
+ if( isString( x ) === true ){\r
+ u = x.replace( REG_UINIT, $1 );\r
+ if( p === 'lineHeight' ) return u;\r
+ if( PARAMS.unit[ u ] !== true ) return px;\r
+ return u;\r
+ };\r
+ return px;\r
+ },\r
+ getColor: function( x, p ){\r
+ var rgb = COLOR[ x.toUpperCase() ],\r
+ pct = false,\r
+ r = 0,\r
+ g = 0,\r
+ b = 0;\r
+ if( isNumber( rgb ) === true ){\r
+ r = ( rgb & 0xff0000 ) >> 16;\r
+ g = ( rgb & 0xff00 ) >> 8;\r
+ b = ( rgb & 0xff );\r
+ } else\r
+ if( x.match( REG_XXXXXX ) ){\r
+ r = parseInt( x.charAt( 1 ) + x.charAt( 2 ), 16 );\r
+ g = parseInt( x.charAt( 3 ) + x.charAt( 4 ), 16 );\r
+ b = parseInt( x.charAt( 5 ) + x.charAt( 6 ), 16 );\r
+ //alert( x + ' g: ' + g )\r
+ } else \r
+ if( x.match( REG_XXX ) ){\r
+ r = parseInt( x.charAt( 1 ) + x.charAt( 1 ), 16 );\r
+ g = parseInt( x.charAt( 2 ) + x.charAt( 2 ), 16 );\r
+ b = parseInt( x.charAt( 3 ) + x.charAt( 3 ), 16 );\r
+ } else\r
+ if( x.indexOf( 'rgb(' ) === 0 ){\r
+ rgb = x.substr( 4 ).split( ',' );\r
+ r = parseFloat( rgb[ 0 ] );\r
+ g = parseFloat( rgb[ 1 ] );\r
+ b = parseFloat( rgb[ 2 ] );\r
+ if( x.indexOf( '%' ) !== -1 ){\r
+ pct = true;\r
+ };\r
+ } else {\r
+ r = 255;\r
+ g = 255;\r
+ b = 255;\r
+ };\r
+ return new ColorPropertyClass( p, r, g, b, pct );\r
+ },\r
+ getClip: function( name ){\r
+ // rect(...) クリップします。<top>, <bottom> は上端からの、 <right>, <left> は左端からのオフセットで指定します。Internet Explorer 4~7 では、カンマの代わりにスペースで区切る必要があります。\r
+ // position:absolute または position:fixed を適用した要素に対してのみ有効です。\r
+ var top = this.get( name + 'Top' ),\r
+ right = this.get( name + 'Right' ),\r
+ bottom = this.get( name + 'Bottom' ),\r
+ left = this.get( name + 'Left' ),\r
+ ret = new PropertyGroupClass( name, top, right, bottom, left );\r
+ if( ret.isValid() === true ) return ret;\r
+ ret.clear();\r
+ all = this.style[ name ].split( '(' )[ 1 ].split( ')' )[ 0 ].split( CLIP_SEPARATOR );\r
+ return new PropertyGroupClass( name,\r
+ new PropertyClass( name + 'Top', all[ 0 ], px, this.pxPerEm ),\r
+ new PropertyClass( name + 'Right', all[ 1 ], px, this.pxPerEm ),\r
+ new PropertyClass( name + 'Bottom', all[ 2 ], px, this.pxPerEm ),\r
+ new PropertyClass( name + 'Left', all[ 3 ], px, this.pxPerEm )\r
+ );\r
+ },\r
+ getBackgroundPosition: function( name ){\r
+ var x = this.get( name + 'X' ),\r
+ y = this.get( name + 'Y' ),\r
+ ret = new PropertyGroupClass( name, x, y ),\r
+ xy;\r
+ if( ret.isValid() === true ) return ret;\r
+ ret.clear();\r
+ xy = this.style[ name ].split( ' ' );\r
+ return new PropertyGroupClass( name,\r
+ new PropertyClass( name + 'X', this.getValue( xy[ 0 ] ), this.getUnit( xy[ 0 ] ), this.pxPerEm ),\r
+ new PropertyClass( name + 'Y', this.getValue( xy[ 1 ] ), this.getUnit( xy[ 1 ] ), this.pxPerEm )\r
+ );\r
+ },\r
+ getMarginPaddingBorder: function( name, widthOrColor ){\r
+ widthOrColor = widthOrColor || '';\r
+ var _class = PropertyClass,\r
+ top = this.get( name + 'Top' + widthOrColor ),\r
+ right = this.get( name + 'Right' + widthOrColor ),\r
+ bottom = this.get( name + 'Bottom' + widthOrColor ),\r
+ left = this.get( name + 'Left' + widthOrColor ),\r
+ ret = new FrexiblePropertyClass( name, top, right, bottom, left ),\r
+ all, x, v, u, i;\r
+ \r
+ if( ret.isValid() === true ) return ret;\r
+ ret.clear();\r
+ all = this.style[ name + widthOrColor ].split( ' ' );\r
+ \r
+ for( i = 0, l=all.length; i<l; ++i ){\r
+ x = all[ i ];\r
+ v = this.getValue( x );\r
+ u = this.getUnit( x );\r
+ if( l === 4 ){\r
+ if( i === 0 ) top = new _class( name + 'Top' + widthOrColor, v, u, this.pxPerEm );\r
+ if( i === 1 ) right = new _class( name + 'Right' + widthOrColor, v, u, this.pxPerEm );\r
+ if( i === 2 ) bottom = new _class( name + 'Bottom' + widthOrColor, v, u, this.pxPerEm );\r
+ if( i === 3 ) left = new _class( name + 'Left' + widthOrColor, v, u, this.pxPerEm );\r
+ } else\r
+ if( l === 3 ){\r
+ if( i === 0 ) top = new _class( name + 'Top' + widthOrColor, v, u, this.pxPerEm );\r
+ if( i === 1 ){\r
+ right = new _class( name + 'Right' + widthOrColor, v, u, this.pxPerEm );\r
+ left = new _class( name + 'Left' + widthOrColor, v, u, this.pxPerEm );\r
+ } else\r
+ if( i === 2 ) bottom = new _class( name + 'Bottom' + widthOrColor , v, u, this.pxPerEm );\r
+ } else\r
+ if( l === 2 ){\r
+ if( i === 0 ){\r
+ top = new _class( name + 'Top' + widthOrColor, v, u, this.pxPerEm );\r
+ bottom = new _class( name + 'Bottom' + widthOrColor, v, u, this.pxPerEm );\r
+ } else\r
+ if( i === 1 ){\r
+ right = new _class( name + 'Right' + widthOrColor, v, u, this.pxPerEm );\r
+ left = new _class( name + 'Left' + widthOrColor, v, u, this.pxPerEm );\r
+ };\r
+ } else\r
+ if( l === 1 ){\r
+ top = new _class( name + 'Top' + widthOrColor, v, u, this.pxPerEm );\r
+ bottom = new _class( name + 'Bottom' + widthOrColor, v, u, this.pxPerEm );\r
+ right = new _class( name + 'Right' + widthOrColor, v, u, this.pxPerEm );\r
+ left = new _class( name + 'Left' + widthOrColor, v, u, this.pxPerEm );\r
+ };\r
+ };\r
+ return new FrexiblePropertyClass( name, top, right, bottom, left );\r
+ },\r
+ getBorderColor: function( name ){\r
+ var getColor = this.getColor,\r
+ top = this.get( name + 'TopColor' ),\r
+ right = this.get( name + 'RightColor' ),\r
+ bottom = this.get( name + 'BottomColor' ),\r
+ left = this.get( name + 'LeftColor' ),\r
+ ret = new FrexiblePropertyClass( name, top, right, bottom, left ),\r
+ all, x, i, l;\r
+ \r
+ if( ret.isValid() === true ) return ret;\r
+ ret.clear();\r
+ all = this.style[ name ].split( ' ' );\r
+ \r
+ for( i = 0, l = all.length; i<l; ++i ){\r
+ x = all[ i ];\r
+ if( l === 4 ){\r
+ if( i === 0 ) top = getColor( x, name + 'Top' );\r
+ if( i === 1 ) right = getColor( x, name + 'Right' );\r
+ if( i === 2 ) bottom = getColor( x, name + 'Bottom' );\r
+ if( i === 3 ) left = getColor( x, name + 'Left' );\r
+ } else\r
+ if( l === 3 ){\r
+ if( i === 0 ) top = getColor( x, name + 'Top' );\r
+ if( i === 1 ){\r
+ right = getColor( x, name + 'Right' );\r
+ left = getColor( x, name + 'Left' );\r
+ } else\r
+ if( i === 2 ) bottom = getColor( x, name + 'Bottom' );\r
+ } else\r
+ if( l === 2 ){\r
+ if( i === 0 ){\r
+ top = getColor( x, name + 'Top' );\r
+ bottom = getColor( x, name + 'Bottom' );\r
+ } else\r
+ if( i === 1 ){\r
+ right = getColor( x, name + 'Right' );\r
+ left = getColor( x, name + 'Left' );\r
+ };\r
+ } else\r
+ if( l === 1 ){\r
+ top = getColor( x, name + 'Top' );\r
+ bottom = getColor( x, name + 'Bottom' );\r
+ right = getColor( x, name + 'Right' );\r
+ left = getColor( x, name + 'Left' );\r
+ };\r
+ };\r
+ return new FrexiblePropertyClass( name, top, right, bottom, left );\r
+ },\r
+ clear: function(){\r
+ var t = this, p;\r
+ for( p in t ){\r
+ if( t.hasOwnProperty && !t.hasOwnProperty( p ) ) continue;\r
+ delete t[ p ];\r
+ };\r
+ }\r
+ };\r
+ function camelizeHash( obj ){\r
+ var p, _p;\r
+ for( p in obj ){\r
+ _p = Util.camelize( p );\r
+ if( _p === p ) continue;\r
+ obj[ _p ] = obj[ _p ] || obj[ p ];\r
+ delete obj[ p ];\r
+ };\r
+ };\r
+ \r
+ return {\r
+ getWrappedStyle: function( elm, opt_css ){\r
+ opt_css && camelizeHash( opt_css );\r
+ return new WrappedStyleClass( elm, opt_css || CSS.getComputedStyle( elm ) );\r
+ },\r
+ getInlineStyle: function( _elm ){\r
+ return cssToObject( _elm.style.cssText );\r
+ },\r
+ getStyleProperty : function( elm, property ){\r
+ if( document.defaultView && document.defaultView.getComputedStyle ){\r
+ CSS.getStyleProperty = function( elm, property ){\r
+ var obj = document.defaultView.getComputedStyle( elm, '' ),\r
+ style = {},\r
+ wrapped,\r
+ fontSize = 'fontSize',\r
+ number = PARAMS.percent[ property ] || PARAMS.offset[ property ] || PARAMS.size[ property ] || PARAMS.color[ property ] || PARAMS.region[ property ] || PARAMS.special[ property ],\r
+ css, nv, n, v, i;\r
+ \r
+ if( obj.cssText ){\r
+ css = obj.cssText.split( ';' );\r
+ for( i = css.length; i; ){\r
+ nv = css[ --i ].split( ':' ); // filter の場合, progid: がくる\r
+ n = Util.camelize( nv.shift() );\r
+ if( n === property && number === false ) return nv.join( '' );\r
+ if( n === property || n === fontSize ){\r
+ v = nv.join( '' );\r
+ while( v.charAt( 0 ) === ' ' ) v = v.substr( 1 );\r
+ style[ n ] = v;\r
+ if( style[ property ] && style[ fontSize ] ) break;\r
+ };\r
+ };\r
+ } else {\r
+ if( number === false ) return obj[ property ];\r
+ \r
+ style[ property ] = obj[ property ];\r
+ if( !style[ property ] ) style[ property ] = obj[ Util.uncamelize( property ) ];\r
+ style[ fontSize ] = obj[ fontSize ];\r
+ if( !style[ fontSize ] ) style[ fontSize ] = obj[ Util.uncamelize( fontSize ) ];\r
+ };\r
+ \r
+ wrapped = CSS.getWrappedStyle( elm, style );\r
+ \r
+ return wrapped.get( property );\r
+ };\r
+ } else {\r
+ CSS.getStyleProperty = function( elm, property ){\r
+ var obj = elm.currentStyle,\r
+ style = {},\r
+ wrapped,\r
+ fontSize = 'fontSize',\r
+ number = PARAMS.percent[ property ] || PARAMS.offset[ property ] || PARAMS.size[ property ] || PARAMS.color[ property ] || PARAMS.region[ property ] || PARAMS.special[ property ];\r
+ if( number === false ) return obj[ property ];\r
+ \r
+ style[ property ] = obj[ property ];\r
+ if( !style[ property ] ) style[ property ] = obj[ Util.uncamelize( property ) ];\r
+ style[ fontSize ] = obj[ fontSize ];\r
+ if( !style[ fontSize ] ) style[ fontSize ] = obj[ Util.uncamelize( fontSize ) ];\r
+ \r
+ wrapped = CSS.getWrappedStyle( elm, style );\r
+ \r
+ return wrapped.get( property );\r
+ };\r
+ };\r
+ return CSS.getStyleProperty( elm, property );\r
+ },\r
+ getComputedStyle: function( elm ){\r
+ /* if( window.getComputedStyle ){\r
+ CSS.getComputedStyle = function( elm ){\r
+ return cssToObject( window.getComputedStyle( elm, '' ) );\r
+ };\r
+ } else */\r
+ if( document.defaultView && document.defaultView.getComputedStyle ){\r
+ CSS.getComputedStyle = function( elm ){\r
+ var obj = document.defaultView.getComputedStyle( elm, '' );\r
+ return cssToObject( obj.cssText || obj );\r
+ };\r
+ } else {\r
+ CSS.getComputedStyle = function( elm ){\r
+ return cssToObject( elm.currentStyle );\r
+ };\r
+ };\r
+ return CSS.getComputedStyle( elm );\r
+ },\r
+ toCssText: function( _css ){\r
+ var ret = [], v;\r
+ for( var p in _css ){\r
+ if( PARAMS.margin[ p ] === true && _css.margin ) continue;\r
+ if( PARAMS.padding[ p ] === true && _css.padding ) continue;\r
+ if( PARAMS.borderWidth[ p ] === true && _css.borderWidth ) continue;\r
+ if( PARAMS.borderColor[ p ] === true && _css.borderColor ) continue;\r
+ v = _css[ p ];\r
+ v && ret.push( [ Util.uncamelize( p ), v ].join( ':' ) );\r
+ };\r
+ return ret.join( ';' );\r
+ }\r
+ };\r
+ \r
+})( window, document );\r
+\r
+\r
+\r
+/* original:\r
+ * susie-t, http://d.hatena.ne.jp/susie-t/20070218/1171760841\r
+ */\r
+var Position = {\r
+ positionedOffset : function( element ){\r
+ var valueT = 0,\r
+ valueL = 0,\r
+ include = Position.isIncludeBorder,\r
+ minus = Position.isMinusBodyBorder,\r
+ body = document.body,\r
+ parent, border, p;\r
+ do {\r
+ valueT += element.offsetTop || 0;\r
+ valueL += element.offsetLeft || 0;\r
+ parent = element.offsetParent;\r
+ if( !include ){\r
+ border = Position.getBorder( parent );\r
+ valueT += border[0];\r
+ valueL += border[1];\r
+ if( parent === body && minus ){\r
+ valueT += border[0];\r
+ valueL += border[1];\r
+ };\r
+ };\r
+ if( parent === body ) break;\r
+ if( parent ){\r
+ p = CSS.getStyleProperty( parent, 'position' );\r
+ // p = CSS.getComputedStyle( parent ).position;\r
+ if( p === 'relative' || p === 'absolute' ) break;\r
+ };\r
+ } while( element = parent );\r
+ return [ valueL, valueT ];\r
+ },\r
+ page : function( forElement ){\r
+ var valueT = 0,\r
+ valueL = 0,\r
+ include = Position.isIncludeBorder,\r
+ minus = Position.isMinusBodyBorder,\r
+ body = document.body,\r
+ element = forElement,\r
+ parent;\r
+ do {\r
+ valueT += element.offsetTop || 0;\r
+ valueL += element.offsetLeft || 0;\r
+ parent = element.offsetParent;\r
+ if( !include ){\r
+ border = Position.getBorder( parent );\r
+ valueT += border[1];\r
+ valueL += border[0];\r
+ if( parent === body && minus ){\r
+ valueT += border[0];\r
+ valueL += border[1];\r
+ };\r
+ };\r
+ // Safari fix\r
+ if( parent === body && CSS.getStyleProperty( element, 'position' ) === 'absolute' ){\r
+ break; \r
+ };\r
+ } while( element = parent );\r
+\r
+ element = forElement;\r
+ do {\r
+ valueT -= element.scrollTop || 0;\r
+ valueL -= element.scrollLeft || 0;\r
+ } while( element = element.parentNode );\r
+\r
+ return [ valueL, valueT ];\r
+ },\r
+ getBorder : function( element ){\r
+ if( element === null ){\r
+ return [ 0, 0 ];\r
+ };\r
+ /**\r
+ var top = 0,\r
+ left = 0,\r
+ dhtmlStyle = CSS.getWrappedStyle( element );\r
+ compStyle = CSS.getComputedStyle( element );\r
+ if( compStyle.borderTopStyle !== 'none' ){\r
+ top = dhtmlStyle.get( 'borderTopWidth' ).toPx();//parseInt( Element.getStyle( element, 'border-top-width' ) );\r
+ };\r
+ if( compStyle.borderLeftStyle !== 'none' ){\r
+ left = dhtmlStyle.get( 'borderLeftWidth' ).toPx();//parseInt( Element.getStyle( element, 'border-left-width' ) );\r
+ };\r
+ */\r
+ var top = 0,\r
+ left = 0;\r
+ if( CSS.getStyleProperty( element, 'borderTopStyle' ) !== 'none' ){\r
+ top = CSS.getStyleProperty( element, 'borderTopWidth' ).toPx();\r
+ };\r
+ if( CSS.getStyleProperty( element, 'borderLeftStyle' ) !== 'none' ){\r
+ left = CSS.getStyleProperty( element, 'borderLeftWidth' ).toPx();\r
+ };\r
+ \r
+ return [ left || 0, top || 0 ];\r
+ },\r
+ isIncludeBorder : ( function() {\r
+ var parent = document.createElement( 'div' );\r
+ document.body.appendChild( parent );\r
+ parent.style.cssText = 'border:solid blue 10px; padding:0px; position:absolute; visibility:hidden;';\r
+ \r
+ var child = document.createElement( 'div' );\r
+ parent.appendChild( child );\r
+ var ret = child.offsetTop === 0 ? false : true;\r
+\r
+ document.body.removeChild( parent );\r
+\r
+ return ret;\r
+ })(),\r
+ isMinusBodyBorder : ( function(){\r
+ return document.body.offsetTop < CSS.getWrappedStyle( document.body ).get( 'marginTop' ).toPx();\r
+ // return document.body.offsetTop < CSS.getStyleProperty( document.body, 'marginTop' ).toPx(); \r
+ })(),\r
+ cumulativeOffset : function( element ){\r
+ if( /Konqueror|Safari|KHTML/.test( navigator.userAgent ) ){\r
+ Position.cumulativeOffset = function( element ){\r
+ var valueT = 0,\r
+ valueL = 0,\r
+ include = Position.isIncludeBorder,\r
+ minus = Position.isMinusBodyBorder,\r
+ body = document.body,\r
+ parent, border;\r
+ do {\r
+ valueT += element.offsetTop || 0;\r
+ valueL += element.offsetLeft || 0;\r
+ parent = element.offsetParent;\r
+ if( !include ){\r
+ border = Position.getBorder( parent );\r
+ valueT += border[1];\r
+ valueL += border[0];\r
+ if( parent === body && minus ){\r
+ valueT += border[0];\r
+ valueL += border[1];\r
+ };\r
+ };\r
+ if( parent === body && CSS.getStyleProperty( element, 'position' ) === 'absolute' ){\r
+ break; \r
+ };\r
+ element = parent;\r
+ } while ( element );\r
+ \r
+ return [ valueL, valueT ];\r
+ };\r
+ } else {\r
+ Position.cumulativeOffset = function( element ){\r
+ var valueT = 0,\r
+ valueL = 0,\r
+ include = Position.isIncludeBorder,\r
+ minus = Position.isMinusBodyBorder,\r
+ body = document.body,\r
+ parent, border;\r
+ do {\r
+ valueT += element.offsetTop || 0;\r
+ valueL += element.offsetLeft || 0;\r
+ parent = element.offsetParent;\r
+ if( !include ){\r
+ border = Position.getBorder( parent );\r
+ valueT += border[1];\r
+ valueL += border[0];\r
+ if( parent === body && minus ){\r
+ valueT += border[0];\r
+ valueL += border[1];\r
+ };\r
+ };\r
+ element = parent;\r
+ } while( element );\r
+ return [ valueL, valueT ];\r
+ }; \r
+ };\r
+ return Position.cumulativeOffset( element );\r
+ }\r
+};\r
+\r
+\r