IMage3D

来源:互联网 发布:室内装饰效果图软件 编辑:程序博客网 时间:2024/06/05 18:24
/*! * Image3D * Copyright (c) 2010 cloudgamer * Blog: http://cloudgamer.cnblogs.com/ * Date: 2010-9-18 *///容器对象var Image3D = function(container, options){this._initialize( container, options );this._initMode();if ( this._support ) {this._initContainer();} else {//模式不支持this.onError("not support");}};Image3D.prototype = {  //初始化程序  _initialize: function(container, options) {var container = this._container = $(container);this._clientWidth = container.clientWidth;//显示区域宽度this._clientHeight = container.clientHeight;//显示区域高度this._support = false;//是否支持指定模式this._layers = {};//层集合this._invalid = [];//无效层集合this._show = $.emptyFunction;var opt = this._setOptions(options);this.fixedFar = opt.fixedFar;this._x = opt.x;this._y = opt.y;this._z = opt.z;this._r = opt.r;this._getScale = opt.getScale;this.onError = opt.onError;$CE.fireEvent( this, "init" );  },  //设置默认属性  _setOptions: function(options) {    this.options = {//默认值mode:"css3|zoom|base",//模式x:0,//水平偏移值y:0,//垂直偏移值z:0,//深度偏移值r:0,//旋转角度(css3支持)fixedFar:false,//是否远点固定getScale:function(z){ return 1 - z / 1000; },//获取比例方法onError:function(err){}//出错时执行    };    return $.extend(this.options, options || {});  },  //模式设置  _initMode: function() {var modes = Image3D.modes;this._support = $A.some( this.options.mode.toLowerCase().split("|"), function(mode){mode = modes[ mode ];if ( mode && mode.support ) {this._show = mode.show; return true;}}, this );  },  //初始化容器对象  _initContainer: function() {var container = this._container, style = container.style, position = $D.getStyle( container, "position" );this._style = { "position": style.position, "overflow": style.overflow };//备份样式if ( position != "relative" && position != "absolute" ) { style.position = "relative"; }style.overflow = "hidden";$CE.fireEvent( this, "initContainer" );  },  //显示  show: function() {if ( !this._support ){ this.onError("not support"); return; }$A.forEach( this._layers, function(layer, z){ this._showLayer( z * 1 ); }, this );  },  //根据深度显示层  _showLayer: function(z) {var layer = this._layers[ z ], scale = this._getScale( z + this._z );if ( scale <= 1 && scale > 0 ) {var moveScale = this.fixedFar ? scale : (1 - scale);this._show( layer, scale, this._x * moveScale, this._y * moveScale );layer.style.visibility  = "visible";} else {layer.style.visibility  = "hidden";}  },  //添加图片  add: function(src, options) {if ( !this._support ){ this.onError("not support"); return; }var img = new Image(), opt = options || {}, oThis = this;//加载函数function load(){ this.onload = null; oThis._load( this, opt); };function error(){ oThis.onError("err image"); };//加载图片img.onload = load; img.onerror = error; img.src = src;//返回图片操作对象return {img: img,src: src,options: opt,show: function(){//重新显示oThis._remove(img); img.onload = load; img.src = this.src;},remove: function(){ oThis._remove(img); }//移除}  },  //加载图片  _load: function(img, options) {//设置属性var opt = $.extend({//默认值x:0,//水平位移y:0,//垂直位移z:0,//深度width:0,//宽度height:0,//高度scaleW:1,//宽度缩放比例scaleH:1//高度缩放比例}, options || {} );//图片定位var clientWidth = this._clientWidth, clientHeight = this._clientHeight,width = opt.width || img.width * opt.scaleW,height = opt.height || img.height * opt.scaleH;z = img._z = opt.z;//设置样式img.style.cssText = "position:absolute;border:0;padding:0;margin:0;-ms-interpolation-mode:nearest-neighbor;"+ "z-index:" + (99999 - z) + ";width:" + width + "px;height:" + height + "px;"+ "left:" + (((clientWidth - width) / 2 + opt.x) / clientWidth * 100).toFixed(5) + "%;"+ "top:" + ((clientHeight - height - opt.y) / clientHeight * 100).toFixed(5) + "%;";//插入层并显示this._insertLayer( img, z );this._showLayer( z );  },  //插入层  _insertLayer: function(img, z) {var layer = this._layers[ z ];if ( !layer ) {//创建层layer = this._invalid.pop();if ( !layer ) {layer = document.createElement("div");layer.style.cssText = "position:absolute;border:0;padding:0;margin:0;left:0;top:0;visibility:hidden;background:transparent;width:" + this._clientWidth + "px;height:" + this._clientHeight + "px";}//修正zIndexif ( $B.ie6 || $B.ie7 ) { layer.style.zIndex = 99999 - z; }layer._count = 0;//记录层包含图片数layer._z = z;this._layers[ z ] = this._container.appendChild(layer);}layer._count++;layer.appendChild(img);  },  //移除  _remove: function(img) {var z = img._z, layer = this._layers[ z ];if ( layer && img.parentNode == layer ) {//确定正确元素layer.removeChild(img);if ( !--layer._count ) {//层里面没有图片delete this._layers[ z ];this._invalid.push(this._container.removeChild(layer));//可重复使用}}  },  //重置  reset: function() {var opt = this.options;this._x = opt.x; this._y = opt.y; this._z = opt.z; this._r = opt.r;this.show();  },  //销毁程序  dispose: function() {$CE.fireEvent( this, "dispose" );//清除domvar container = this._container;$D.setStyle( container, this._style );//恢复样式//清除层元素$A.forEach( this._layers, function(layer){layer.innerHTML = ""; container.removeChild(layer);});//清除属性this._container = this._invalid = this._layers = this._style = this._support = null;  }};//变换模式Image3D.modes = function(){var unit = $B.firefox ? "px" : "", css3Transform;//ccs3变换样式return {css3: {//css3设置support: function(){var style = document.createElement("div").style;return $A.some([ "transform", "MozTransform", "webkitTransform", "OTransform" ],function(css){ if ( css in style ) {css3Transform = css; return true;}});}(),show: function(layer, scale, x, y) {var Cos = Math.cos(this._r), Sin = Math.sin(this._r);layer.style.zIndex = 99999 - layer._z;//设置变换layer.style[ css3Transform ] = "matrix("+ ( Cos * scale).toFixed(5) + "," + (Sin * scale).toFixed(5) + ","+ (-Sin * scale).toFixed(5) + "," + (Cos * scale).toFixed(5) + ", "+ Math.round(x) + unit + ", " + Math.round(y) + unit + ")";}},zoom: {//zoom设置support: function(){ return "zoom" in document.createElement("div").style; }(),show: function(layer, scale, x, y){var style = layer.style, MAX = Number.MAX_VALUE, opScale = 1 - scale,left = this._clientWidth * opScale / 2 + x,top = this._clientHeight * opScale / 2 + y;//定位修正if ( !$B.ie6 && !$B.ie7 ) {  left /= scale; top /= scale; }//值修正left = Math.min(MAX, Math.max( -MAX, left )) | 0;top = Math.min(MAX, Math.max( -MAX, top )) | 0;//样式设置style.zoom = scale; style.left = left + "px"; style.top = top + "px";}},base: {//base设置support: true,show: function(layer, scale, x, y){var opScale = 1 - scale,left = this._clientWidth * opScale / 2 + x,top = this._clientHeight * opScale / 2 + y;//设置$A.forEach( layer.getElementsByTagName("img"), function(img){//获取记录的数据var original = img._original = img._original || {width: img.offsetWidth,height: img.offsetHeight,left: img.offsetLeft, top: img.offsetTop};//样式设置$D.setStyle( img, {width: (original.width * scale | 0) + "px",height: (original.height * scale | 0) + "px",left: (original.left * scale + left | 0) + "px",top: (original.top * scale + top | 0) + "px"});});}}};}();//拖动视觉变换Image3D.prototype._initialize = (function(){var init = Image3D.prototype._initialize,MAX = Number.MAX_VALUE,methods = {"init": function(){var opt = this.options;this._mtMinX = opt.mrMinX;this._mtMaxX = opt.mrMaxX;this._mtMinY = opt.mrMinY;this._mtMaxY = opt.mrMaxY;this._mtSTART = $F.bind( start, this );this._mtMOVE = $F.bind( move, this );this._mtSTOP = $F.bind( stop, this );},"initContainer": function(){$E.addEvent( this._container, "mousedown", this._mtSTART );},"dispose": function(){$E.removeEvent( this._container, "mousedown", this._mtSTART );this._mtSTOP();this._mtSTART = this._mtMOVE = this._mtSTOP = null;}};//开始函数function start(e){this._mtX = this._x + e.clientX;this._mtY = this._y + e.clientY;$E.addEvent( document, "mousemove", this._mtMOVE );$E.addEvent( document, "mouseup", this._mtSTOP );if ( $B.ie ) {var container = this._container;$E.addEvent( container, "losecapture", this._mtSTOP );container.setCapture();} else {$E.addEvent( window, "blur", this._mtSTOP );e.preventDefault();}};//拖动函数function move(e){this._x = Math.min(this._mtMaxX, Math.max( this._mtMinX, this._mtX - e.clientX ));this._y = Math.min(this._mtMaxY, Math.max( this._mtMinY, this._mtY - e.clientY ));this.show();window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();};//停止函数function stop(){$E.removeEvent( document, "mousemove", this._mtMOVE );$E.removeEvent( document, "mouseup", this._mtSTOP );if ( $B.ie ) {var container = this._container;$E.removeEvent( container, "losecapture", this._mtSTOP );container.releaseCapture();} else {$E.removeEvent( window, "blur", this._mtSTOP );};};return function(){var options = arguments[1];if ( !options || options.mouseTranslate !== false ) {//扩展options$.extend( options, {mrMinX:-Number.MAX_VALUE,//x最小值mrMaxX:Number.MAX_VALUE,//x最大值mrMinY:-Number.MAX_VALUE,//y最小值mrMaxY:Number.MAX_VALUE//y最大值}, false );//扩展钩子$A.forEach( methods, function( method, name ){$CE.addEvent( this, name, method );}, this );}init.apply( this, arguments );}})();//滚轮深度变换Image3D.prototype._initialize = (function(){var init = Image3D.prototype._initialize,mousewheel = $B.firefox ? "DOMMouseScroll" : "mousewheel",methods = {"init": function(){this._mzMin = this.options.mzMin;this._mzMax = this.options.mzMax;this._mzZoom = $F.bind( zoom, this );},"initContainer": function(){$E.addEvent( this._container, mousewheel, this._mzZoom );},"dispose": function(){$E.removeEvent( this._container, mousewheel, this._mzZoom );this._mzZoom = null;}};//缩放函数function zoom(e){this._z = Math.min(this._mzMax, Math.max( this._mzMin,(e.wheelDelta ? -e.wheelDelta : e.detail * 40) + this._z ));this.show();e.preventDefault();};return function(){var options = arguments[1];if ( !options || options.mouseZoom !== false ) {//扩展options$.extend( options, {mzMin:-Number.MAX_VALUE,//z最小值mzMax:Number.MAX_VALUE//z最大值}, false );//扩展钩子$A.forEach( methods, function( method, name ){$CE.addEvent( this, name, method );}, this );}init.apply( this, arguments );}})();
/*! * Image3D * Copyright (c) 2010 cloudgamer * Blog: http://cloudgamer.cnblogs.com/ * Date: 2010-9-18 *///容器对象var Image3D = function(container, options){this._initialize( container, options );this._initMode();if ( this._support ) {this._initContainer();} else {//模式不支持this.onError("not support");}};Image3D.prototype = {  //初始化程序  _initialize: function(container, options) {var container = this._container = $(container);this._clientWidth = container.clientWidth;//显示区域宽度this._clientHeight = container.clientHeight;//显示区域高度this._support = false;//是否支持指定模式this._layers = {};//层集合this._invalid = [];//无效层集合this._show = $.emptyFunction;var opt = this._setOptions(options);this.fixedFar = opt.fixedFar;this._x = opt.x;this._y = opt.y;this._z = opt.z;this._r = opt.r;this._getScale = opt.getScale;this.onError = opt.onError;$CE.fireEvent( this, "init" );  },  //设置默认属性  _setOptions: function(options) {    this.options = {//默认值mode:"css3|zoom|base",//模式x:0,//水平偏移值y:0,//垂直偏移值z:0,//深度偏移值r:0,//旋转角度(css3支持)fixedFar:false,//是否远点固定getScale:function(z){ return 1 - z / 1000; },//获取比例方法onError:function(err){}//出错时执行    };    return $.extend(this.options, options || {});  },  //模式设置  _initMode: function() {var modes = Image3D.modes;this._support = $A.some( this.options.mode.toLowerCase().split("|"), function(mode){mode = modes[ mode ];if ( mode && mode.support ) {this._show = mode.show; return true;}}, this );  },  //初始化容器对象  _initContainer: function() {var container = this._container, style = container.style, position = $D.getStyle( container, "position" );this._style = { "position": style.position, "overflow": style.overflow };//备份样式if ( position != "relative" && position != "absolute" ) { style.position = "relative"; }style.overflow = "hidden";$CE.fireEvent( this, "initContainer" );  },  //显示  show: function() {if ( !this._support ){ this.onError("not support"); return; }$A.forEach( this._layers, function(layer, z){ this._showLayer( z * 1 ); }, this );  },  //根据深度显示层  _showLayer: function(z) {var layer = this._layers[ z ], scale = this._getScale( z + this._z );if ( scale <= 1 && scale > 0 ) {var moveScale = this.fixedFar ? scale : (1 - scale);this._show( layer, scale, this._x * moveScale, this._y * moveScale );layer.style.visibility  = "visible";} else {layer.style.visibility  = "hidden";}  },  //添加图片  add: function(src, options) {if ( !this._support ){ this.onError("not support"); return; }var img = new Image(), opt = options || {}, oThis = this;//加载函数function load(){ this.onload = null; oThis._load( this, opt); };function error(){ oThis.onError("err image"); };//加载图片img.onload = load; img.onerror = error; img.src = src;//返回图片操作对象return {img: img,src: src,options: opt,show: function(){//重新显示oThis._remove(img); img.onload = load; img.src = this.src;},remove: function(){ oThis._remove(img); }//移除}  },  //加载图片  _load: function(img, options) {//设置属性var opt = $.extend({//默认值x:0,//水平位移y:0,//垂直位移z:0,//深度width:0,//宽度height:0,//高度scaleW:1,//宽度缩放比例scaleH:1//高度缩放比例}, options || {} );//图片定位var clientWidth = this._clientWidth, clientHeight = this._clientHeight,width = opt.width || img.width * opt.scaleW,height = opt.height || img.height * opt.scaleH;z = img._z = opt.z;//设置样式img.style.cssText = "position:absolute;border:0;padding:0;margin:0;-ms-interpolation-mode:nearest-neighbor;"+ "z-index:" + (99999 - z) + ";width:" + width + "px;height:" + height + "px;"+ "left:" + (((clientWidth - width) / 2 + opt.x) / clientWidth * 100).toFixed(5) + "%;"+ "top:" + ((clientHeight - height - opt.y) / clientHeight * 100).toFixed(5) + "%;";//插入层并显示this._insertLayer( img, z );this._showLayer( z );  },  //插入层  _insertLayer: function(img, z) {var layer = this._layers[ z ];if ( !layer ) {//创建层layer = this._invalid.pop();if ( !layer ) {layer = document.createElement("div");layer.style.cssText = "position:absolute;border:0;padding:0;margin:0;left:0;top:0;visibility:hidden;background:transparent;width:" + this._clientWidth + "px;height:" + this._clientHeight + "px";}//修正zIndexif ( $B.ie6 || $B.ie7 ) { layer.style.zIndex = 99999 - z; }layer._count = 0;//记录层包含图片数layer._z = z;this._layers[ z ] = this._container.appendChild(layer);}layer._count++;layer.appendChild(img);  },  //移除  _remove: function(img) {var z = img._z, layer = this._layers[ z ];if ( layer && img.parentNode == layer ) {//确定正确元素layer.removeChild(img);if ( !--layer._count ) {//层里面没有图片delete this._layers[ z ];this._invalid.push(this._container.removeChild(layer));//可重复使用}}  },  //重置  reset: function() {var opt = this.options;this._x = opt.x; this._y = opt.y; this._z = opt.z; this._r = opt.r;this.show();  },  //销毁程序  dispose: function() {$CE.fireEvent( this, "dispose" );//清除domvar container = this._container;$D.setStyle( container, this._style );//恢复样式//清除层元素$A.forEach( this._layers, function(layer){layer.innerHTML = ""; container.removeChild(layer);});//清除属性this._container = this._invalid = this._layers = this._style = this._support = null;  }};//变换模式Image3D.modes = function(){var unit = $B.firefox ? "px" : "", css3Transform;//ccs3变换样式return {css3: {//css3设置support: function(){var style = document.createElement("div").style;return $A.some([ "transform", "MozTransform", "webkitTransform", "OTransform" ],function(css){ if ( css in style ) {css3Transform = css; return true;}});}(),show: function(layer, scale, x, y) {var Cos = Math.cos(this._r), Sin = Math.sin(this._r);layer.style.zIndex = 99999 - layer._z;//设置变换layer.style[ css3Transform ] = "matrix("+ ( Cos * scale).toFixed(5) + "," + (Sin * scale).toFixed(5) + ","+ (-Sin * scale).toFixed(5) + "," + (Cos * scale).toFixed(5) + ", "+ Math.round(x) + unit + ", " + Math.round(y) + unit + ")";}},zoom: {//zoom设置support: function(){ return "zoom" in document.createElement("div").style; }(),show: function(layer, scale, x, y){var style = layer.style, MAX = Number.MAX_VALUE, opScale = 1 - scale,left = this._clientWidth * opScale / 2 + x,top = this._clientHeight * opScale / 2 + y;//定位修正if ( !$B.ie6 && !$B.ie7 ) {  left /= scale; top /= scale; }//值修正left = Math.min(MAX, Math.max( -MAX, left )) | 0;top = Math.min(MAX, Math.max( -MAX, top )) | 0;//样式设置style.zoom = scale; style.left = left + "px"; style.top = top + "px";}},base: {//base设置support: true,show: function(layer, scale, x, y){var opScale = 1 - scale,left = this._clientWidth * opScale / 2 + x,top = this._clientHeight * opScale / 2 + y;//设置$A.forEach( layer.getElementsByTagName("img"), function(img){//获取记录的数据var original = img._original = img._original || {width: img.offsetWidth,height: img.offsetHeight,left: img.offsetLeft, top: img.offsetTop};//样式设置$D.setStyle( img, {width: (original.width * scale | 0) + "px",height: (original.height * scale | 0) + "px",left: (original.left * scale + left | 0) + "px",top: (original.top * scale + top | 0) + "px"});});}}};}();//拖动视觉变换Image3D.prototype._initialize = (function(){var init = Image3D.prototype._initialize,MAX = Number.MAX_VALUE,methods = {"init": function(){var opt = this.options;this._mtMinX = opt.mrMinX;this._mtMaxX = opt.mrMaxX;this._mtMinY = opt.mrMinY;this._mtMaxY = opt.mrMaxY;this._mtSTART = $F.bind( start, this );this._mtMOVE = $F.bind( move, this );this._mtSTOP = $F.bind( stop, this );},"initContainer": function(){$E.addEvent( this._container, "mousedown", this._mtSTART );},"dispose": function(){$E.removeEvent( this._container, "mousedown", this._mtSTART );this._mtSTOP();this._mtSTART = this._mtMOVE = this._mtSTOP = null;}};//开始函数function start(e){this._mtX = this._x + e.clientX;this._mtY = this._y + e.clientY;$E.addEvent( document, "mousemove", this._mtMOVE );$E.addEvent( document, "mouseup", this._mtSTOP );if ( $B.ie ) {var container = this._container;$E.addEvent( container, "losecapture", this._mtSTOP );container.setCapture();} else {$E.addEvent( window, "blur", this._mtSTOP );e.preventDefault();}};//拖动函数function move(e){this._x = Math.min(this._mtMaxX, Math.max( this._mtMinX, this._mtX - e.clientX ));this._y = Math.min(this._mtMaxY, Math.max( this._mtMinY, this._mtY - e.clientY ));this.show();window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();};//停止函数function stop(){$E.removeEvent( document, "mousemove", this._mtMOVE );$E.removeEvent( document, "mouseup", this._mtSTOP );if ( $B.ie ) {var container = this._container;$E.removeEvent( container, "losecapture", this._mtSTOP );container.releaseCapture();} else {$E.removeEvent( window, "blur", this._mtSTOP );};};return function(){var options = arguments[1];if ( !options || options.mouseTranslate !== false ) {//扩展options$.extend( options, {mrMinX:-Number.MAX_VALUE,//x最小值mrMaxX:Number.MAX_VALUE,//x最大值mrMinY:-Number.MAX_VALUE,//y最小值mrMaxY:Number.MAX_VALUE//y最大值}, false );//扩展钩子$A.forEach( methods, function( method, name ){$CE.addEvent( this, name, method );}, this );}init.apply( this, arguments );}})();//滚轮深度变换Image3D.prototype._initialize = (function(){var init = Image3D.prototype._initialize,mousewheel = $B.firefox ? "DOMMouseScroll" : "mousewheel",methods = {"init": function(){this._mzMin = this.options.mzMin;this._mzMax = this.options.mzMax;this._mzZoom = $F.bind( zoom, this );},"initContainer": function(){$E.addEvent( this._container, mousewheel, this._mzZoom );},"dispose": function(){$E.removeEvent( this._container, mousewheel, this._mzZoom );this._mzZoom = null;}};//缩放函数function zoom(e){this._z = Math.min(this._mzMax, Math.max( this._mzMin,(e.wheelDelta ? -e.wheelDelta : e.detail * 40) + this._z ));this.show();e.preventDefault();};return function(){var options = arguments[1];if ( !options || options.mouseZoom !== false ) {//扩展options$.extend( options, {mzMin:-Number.MAX_VALUE,//z最小值mzMax:Number.MAX_VALUE//z最大值}, false );//扩展钩子$A.forEach( methods, function( method, name ){$CE.addEvent( this, name, method );}, this );}init.apply( this, arguments );}})();

eval(function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'([3-59cf-hj-mo-rt-yCG-NP-RT-Z]|[12]\\w)'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('4 $,$B,$A,$F,$D,$E,$CE,$S;(3(){4 O,B,A,F,D,E,CE,S;O=3(id){5"22"==1F id?P.getElementById(id):id};O.emptyFunction=3(){};O.extend=3(N,13,1r){9(1r===23)1r=14;I(4 Q x 13){9(1r||!(Q x N)){N[Q]=13[Q]}}5 N};O.deepextend=3(N,13){I(4 Q x 13){4 1h=13[Q];9(N===1h)continue;9(1F 1h==="c"){N[Q]=L.callee(N[Q]||{},1h)}J{N[Q]=1h}}5 N};O.wrapper=3(me,25){4 1G=3(){me.R(Z,L)};4 1H=3(){};1H.15=25.15;1G.15=new 1H;5 1G};B=(3(T){4 b={17:/17/.M(T)&&!/1I/.M(T),1I:/1I/.M(T),26:/webkit/.M(T)&&!/1J/.M(T),27:/27/.M(T),1J:/1J/.M(T)};4 1s="";I(4 i x b){9(b[i]){1s="26"==i?"1i":i;1K}}b.1i=1s&&1L("(?:"+1s+")[\\\\/: ]([\\\\d.]+)").M(T)?1L.$1:"0";b.ie=b.17;b.28=b.17&&1N(b.1i,10)==6;b.ie7=b.17&&1N(b.1i,10)==7;b.29=b.17&&1N(b.1i,10)==8;5 b})(1O.navigator.userAgent.toLowerCase());A=3(){4 m={isArray:3(2a){5 Object.15.toString.18(2a)==="[c 1P]"},1t:3(K,W,j){9(K.1t){5 1u(j)?K.1t(W):K.1t(W,j)}J{4 U=K.1j;j=1u(j)?0:j<0?1v.2b(j)+U:1v.2c(j);I(;j<U;j++){9(K[j]===W)5 j}5-1}},1w:3(K,W,j){9(K.1w){5 1u(j)?K.1w(W):K.1w(W,j)}J{4 U=K.1j;j=1u(j)||j>=U-1?U-1:j<0?1v.2b(j)+U:1v.2c(j);I(;j>-1;j--){9(K[j]===W)5 j}5-1}}};3 11(c,t){9(23===c.1j){I(4 l x c){9(y===t(c[l],l,c))1K}}J{I(4 i=0,U=c.1j;i<U;i++){9(i x c){9(y===t(c[i],i,c))1K}}}};11({2d:3(c,t,r){11(c,3(){t.R(r,L)})},map:3(c,t,r){4 m=[];11(c,3(){m.2e(t.R(r,L))});5 m},1x:3(c,t,r){4 m=[];11(c,3(2f){t.R(r,L)&&m.2e(2f)});5 m},every:3(c,t,r){4 m=14;11(c,3(){9(!t.R(r,L)){m=y;5 y}});5 m},some:3(c,t,r){4 m=y;11(c,3(){9(t.R(r,L)){m=14;5 y}});5 m}},3(2g,l){m[l]=3(c,t,r){9(c[l]){5 c[l](t,r)}J{5 2g(c,t,r)}}});5 m}();F=(3(){4 19=1P.15.19;5{bind:3(1y,r){4 1a=19.18(L,2);5 3(){5 1y.R(r,1a.2h(19.18(L)))}},bindAsEventListener:3(1y,r){4 1a=19.18(L,2);5 3(h){5 1y.R(r,[E.1k(h)].2h(1a))}}}})();D={1z:3(p){4 1b=p?p.2i:P;5 1b.2j.2k||1b.2l.2k},1A:3(p){4 1b=p?p.2i:P;5 1b.2j.2m||1b.2l.2m},2n:P.1l?3(a,b){5!!(a.2o(b)&16)}:3(a,b){5 a!=b&&a.2n(b)},G:3(p){4 q=0,V=0,X=0,Y=0;9(!p.2p||B.29){4 n=p;while(n){q+=n.offsetLeft,V+=n.offsetTop;n=n.offsetParent};X=q+p.offsetWidth;Y=V+p.offsetHeight}J{4 G=p.2p();q=X=D.1A(p);V=Y=D.1z(p);q+=G.q;X+=G.X;V+=G.V;Y+=G.Y};5{"q":q,"V":V,"X":X,"Y":Y}},clientRect:3(p){4 G=D.G(p),1Q=D.1A(p),1R=D.1z(p);G.q-=1Q;G.X-=1Q;G.V-=1R;G.Y-=1R;5 G},1c:P.1l?3(u){5 P.1l.2q(u,1m)}:3(u){5 u.1S},getStyle:P.1l?3(u,l){4 o=P.1l.2q(u,1m);5 l x o?o[l]:o.getPropertyValue(l)}:3(u,l){4 o=u.o,1c=u.1S;9(l=="12"){9(/1T\\(12=(.*)\\)/i.M(1c.1x)){4 12=parseFloat(1L.$1);5 12?12/2r:0}5 1}J 9(l=="2s"){l="2t"}4 m=1c[l]||1c[S.1U(l)];9(!/^-?\\d+(?:px)?$/i.M(m)&&/^\\-?\\d/.M(m)){4 q=o.q,1B=u.runtimeStyle,2v=1B.q;1B.q=1c.q;o.q=m||0;m=o.pixelLeft+"px";o.q=q;1B.q=2v}5 m},setStyle:3(1n,o,1d){9(!1n.1j){1n=[1n]}9(1F o=="22"){4 s=o;o={};o[s]=1d}A.2d(1n,3(u){I(4 l x o){4 1d=o[l];9(l=="12"&&B.ie){u.o.1x=(u.1S.1x||"").2w(/1T\\([^)]*\\)/,"")+"1T(12="+1d*2r+")"}J 9(l=="2s"){u.o[B.ie?"2t":"cssFloat"]=1d}J{u.o[S.1U(l)]=1d}}})}};E=(3(){4 1e,1f,v=1,1V=3(g,f,k){9(!k.$v)k.$v=v++;9(!g.C)g.C={};4 H=g.C[f];9(!H){H=g.C[f]={};9(g["on"+f]){H[0]=g["on"+f]}}};9(1O.1X){4 1o={"mouseenter":"2x","mouseleave":"2y"};1e=3(g,f,k){9(f x 1o){1V(g,f,k);4 2z=g.C[f][k.$v]=3(h){4 1C=h.1p;9(!1C||(g!=1C&&!(g.2o(1C)&16))){k.18(Z,h)}};g.1X(1o[f],2z,y)}J{g.1X(f,k,y)}};1f=3(g,f,k){9(f x 1o){9(g.C&&g.C[f]){g.2A(1o[f],g.C[f][k.$v],y);1Y g.C[f][k.$v]}}J{g.2A(f,k,y)}}}J{1e=3(g,f,k){1V(g,f,k);g.C[f][k.$v]=k;g["on"+f]=1D};1f=3(g,f,k){9(g.C&&g.C[f]){1Y g.C[f][k.$v]}};3 1D(){4 1E=14,h=1k();4 H=Z.C[h.f];I(4 i x H){Z.$1D=H[i];9(Z.$1D(h)===y){1E=y}}5 1E}}3 1k(h){9(h)5 h;h=1O.h;h.pageX=h.clientX+D.1A(h.1Z);h.pageY=h.clientY+D.1z(h.1Z);h.target=h.1Z;h.20=20;h.21=21;4 1p={"2y":h.toElement,"2x":h.fromElement}[h.f];9(1p){h.1p=1p}5 h};3 20(){Z.cancelBubble=14};3 21(){Z.1E=y};5{"1e":1e,"1f":1f,"1k":1k}})();CE=(3(){4 v=1;5{1e:3(c,f,k){9(!k.$$v)k.$$v=v++;9(!c.w)c.w={};9(!c.w[f])c.w[f]={};c.w[f][k.$$v]=k},1f:3(c,f,k){9(c.w&&c.w[f]){1Y c.w[f][k.$$v]}},fireEvent:3(c,f){9(!c.w)5;4 1a=1P.15.19.18(L,2),H=c.w[f];I(4 i x H){H[i].R(c,1a)}},clearEvent:3(c){9(!c.w)5;I(4 f x c.w){4 H=c.w[f];I(4 i x H){H[i]=1m}c.w[f]=1m}c.w=1m}}})();S={1U:3(s){5 s.2w(/-([a-z])/ig,3(all,2B){5 2B.toUpperCase()})}};9(B.28){try{P.execCommand("BackgroundImageCache",y,14)}catch(e){}};$=O;$B=B;$A=A;$F=F;$D=D;$E=E;$CE=CE;$S=S})();',[],162,'|||function|var|return||||if|||object|||type|element|event||from|handler|name|ret||style|node|left|thisp||callback|elem|guid|cusevents|in|false||||events||||rect|handlers|for|else|array|arguments|test|destination||document|property|apply||ua|len|top|elt|right|bottom|this||each|opacity|source|true|prototype||msie|call|slice|args|doc|curStyle|value|addEvent|removeEvent||copy|version|length|fixEvent|defaultView|null|elems|fix|relatedTarget||override|vMark|indexOf|isNaN|Math|lastIndexOf|filter|fun|getScrollTop|getScrollLeft|rtStyle|related|handleEvent|returnValue|typeof|ins|subclass|opera|chrome|break|RegExp||parseInt|window|Array|sLeft|sTop|currentStyle|alpha|camelize|storage||addEventListener|delete|srcElement|stopPropagation|preventDefault|string|undefined||parent|safari|firefox|ie6|ie8|obj|ceil|floor|forEach|push|item|method|concat|ownerDocument|documentElement|scrollTop|body|scrollLeft|contains|compareDocumentPosition|getBoundingClientRect|getComputedStyle|100|float|styleFloat||rsLeft|replace|mouseover|mouseout|fixhandler|removeEventListener|letter'.split('|'),0,{}))