﻿		var Magnifier = {

			__constructor : function( init ){

				this.ps = { 'stc' : 'static' , 'relv' : 'relative' , 'ab' : 'absolute' , 'fx' : 'fixed' , 'yes' : 'block'  , 'no' : 'none' };
				this.graduation = 'px';
				this.variable = new Object();
				this.variable.display = this.ps.no;
				this.foundIt( init , this );
				
				this.copySkin = this.copy.parentNode;
				this.copyRoot = this.copySkin.parentNode;

				this.variable.capitalWidth = parseInt( this.capital.clientWidth );
				this.variable.capitalHeight = parseInt( this.capital.clientHeight );

				this.copyRoot.style.width = this.variable.capitalWidth + this.graduation;
				this.copyRoot.style.height = this.variable.capitalHeight + this.graduation;	

				// event append
				this.capital.events = {

					mouseover : this.bind( this.visible , this ),
					mousemove : this.bind( this.move , this , this.capital ),
					mouseout : this.bind( this.disable , this )
				};

				void( this.eventCatch ( this.capital , 'mouseover' , this.capital.events.mouseover ));
				void( this.eventCatch ( this.capital , 'mousemove' , this.capital.events.mousemove ));
				void( this.eventCatch ( this.capital , 'mouseout' , this.capital.events.mouseout ));

			},

			move : function( Event , obj ){

				var Event = Event || window.event;

				if( Event.target && ( !Event.offsetX && !Event.offsetY )){

						var Left = obj.offsetLeft;
						var Top = obj.offsetTop;

						while ( obj = obj.offsetParent ){

							Left += obj.offsetLeft;
							Top += obj.offsetTop;
						}

					Event.offsetX = Event.pageX - Left;
					Event.offsetY = Event.pageY - Top;
				}
				
				if( Event.offsetX <= this.variable.Width )
					this.copySkin.style.left = -( Event.offsetX ) + this.graduation;

				if ( Event.offsetY <= this.variable.Height )
					this.copySkin.style.top = -( Event.offsetY ) + this.graduation;

			},

			visible : function( Event ){

				if( this.variable.display == this.ps.no ){

					this.variable.display = this.ps.yes;
					this.copyRoot.style.display = this.ps.yes;

					if( typeof this.variable.Width == this.ty.not && typeof this.variable.Height == this.ty.not ){

						this.variable.Width = Math.abs( this.variable.capitalWidth - parseInt( this.copy.clientWidth ));
						this.variable.Height = Math.abs( this.variable.capitalHeight - parseInt( this.copy.clientHeight ) );
					}
				}
			},

			disable : function( Event ){

				if( this.variable.display == this.ps.yes ){

					this.copy.left = 0;
					this.copy.top = 0;
					this.variable.display = this.ps.no;
					this.copyRoot.style.display = this.ps.no;
				}
			}
		}; 
