 var zoom = function(o){
        var d = document,db=document.body,timgs=d.getElementsByTagName('img'),ie = !+'\v1',
			opt = {
				width:0.3,
				height:0.3,
				offset:20,
				float:'rigth'
			},
			div = d.createElement('div'),divup = d.createElement('div'),
			getXY = function(el){
				var r={t:0,l:0},
					ua = navigator.userAgent.toLowerCase(),
					isStrict = d.compatMode == "CSS1Compat",
					add = function(t,l){r.l+=l,r.t+=t},
					p = el;
				if(el&&el!=db){
					if(el.getBoundingClientRect){
						var b = el.getBoundingClientRect();
						add(b.top + Math.max(d.body.scrollTop,d.documentElement.scrollTop),
							b.left+Math.max(d.body.scrollLeft,d.documentElement.scrollLeft));
						isStrict?add(-d.documentElement.clientTop,-d.documentElement.clientLeft):add(-1,-1)
					}else{
						var dv = d.defaultView;
						while(p){
							add(p.offsetTop,p.offsetLeft);
							p = p.offsetParent;
						}
						p = el.parentNode;
						while (p && p != db) {
							add(-p.scrollTop,-p.scrollLeft); 
							p = p.parentNode;
						}
					}
				}
				return r;
			},
			extend = function(t,s){
				for(var p in s){
					t[p] = s[p];
				};
			};
			div.id='zoomdiv',divup.id = 'zoomup';
			div.innerHTML = '<img id="bigimg" src="" />';
			db.appendChild(div);
			extend(opt,o);
			function leave(){
				div.style.display = divup.style.display = 'none';
				db.onmousemove = null;
			};
			for(var i=0,ci;ci=timgs[i++];){
				if(ci.className=='zoom'){
					ci.onmouseover = function(e){
						this.parentNode.appendChild(divup);
						var bimg=d.getElementById('bigimg'),bwidth,bheight,sx,sy,
							width = this.parentNode.offsetWidth,height = this.parentNode.offsetHeight,top=getXY(this.parentNode).t,left = getXY(this.parentNode).l;

						bimg.onload = function(){
						    div.style.display = 'block';
                            bwidth = bimg.width,bheight = bimg.height,
						    sx = bwidth/width,sy = bheight/height;
                            extend(divup.style,{
      						    width:width*opt.width+'px',
      						    height:height*opt.height+'px',
      						    display:'block'
							});
                            extend(div.style,{
								left:(opt.float=='rigth'?opt.offset+width+left:left-opt.offset-width*opt.width*sx) +'px',
								top:top+'px',
								width:width*opt.width*sx+'px',
								height:height*opt.height*sy+'px',
								display:'block'
							});
							db.onmousemove = function(e){
								var e = e || event,x=e.pageX||(e.clientX+(d.documentElement.scrollLeft||db.scrollLeft)),
                                    y=e.pageY||(e.clientY+(d.documentElement.scrollTop||db.scrollTop)),
									scrolly = y - divup.offsetHeight/2 - top,
									scrollx = x - divup.offsetWidth/2 - left;
								scrolly = y - divup.offsetHeight/2 < top ? 0 : y + divup.offsetHeight/2>height+top ? height - divup.offsetHeight  : scrolly;
								scrollx = x - divup.offsetWidth/2 < left ? 0 : x + divup.offsetWidth/2>width+left ? width - divup.offsetWidth  : scrollx;
								div.scrollTop = scrolly*sy;
								div.scrollLeft =  scrollx*sx;
								extend(divup.style,{top:scrolly+'px',left:scrollx+'px'});
							}
					    }
                        bimg.src = this.getAttribute('big');

					};
				    ci.parentNode[ie?'onmouseleave':'onmouseout'] = ie?leave:function(e){
				    	
						!(this===e.relatedTarget||(this.contains?this.contains(e.relatedTarget):this.compareDocumentPosition(e.relatedTarget)==20))&&leave();
					}
				}
			};    
    }
	!+'\v1'?window.attachEvent('onload',zoom):window.addEventListener('load',zoom,false);