		function Point(x,y){
			
			this.x = x;
			this.y = y;
		}
		
		function radius(a, b){
		
			return (a*a*b*b)/(a*a + b*b);
		}
		
		function Points(){
		
			this.p1 = null;
			this.p2 = null;
		}
		
		function b(x2){
		
			return -2*x2;
		}
		
		function c(x1,y1,x2,y2,a,b){
		
			return x2*x2 - 1/(1/(a*a) + ( ( (y1-y2)*(y1-y2) ) / ( (x1-x2)*(x1-x2) ) ) / (b*b));
		}
		
		function dist(p1,p2){
		
			return Math.sqrt((p2.x-p1.x)*(p2.x-p1.x) + (p2.y-p1.y)*(p2.y-p1.y));
		}
		
		function getPosition2(x1,y1,x2,y2,r1,r2){

			var retObject;
			var X;
			var Y;
			
			if( (x2-x1)*(x2-x1)/(r1*r1) + (y2-y1)*(y2-y1)/(r2*r2) <= 1 ){
			
				retObject = new Points();
				retObject.p1 = new Point(x1,y1);
				retObject.p2 = new Point(x2,y2);
				
				
				return  retObject;
			} else {
			
				delta = b(x2)*b(x2) - 4*1*c(x1,y1,x2,y2,r1,r2);
				X = (-1*b(x2) - Math.sqrt(delta)) / 2;
				Y = ((1*(y1-y2)*(X-x2))  / (x1-x2)) + y2;
				
				retObject = new Points();
				retObject.p1 = new Point(X,Y);
				
				
				X = 1*(-1*b(x2) + Math.sqrt(delta)) / 2;
				Y = ((1*(y1-y2)*(X-x2))  / (x1-x2)) + y2;
				
				retObject.p2 = new Point(X,Y);
			
				return retObject;
			}
		}
			
		function setPosition2(pointer, points, objectName,r, document){
			

			if(dist(pointer,points.p1) > dist(pointer,points.p2))
			
				point = points.p2;
			else
				point = points.p1;
				
			document.getElementById(objectName).style.left = (point.x-r)+'px';
			document.getElementById(objectName).style.top = (point.y-r+1)+'px';
			document.getElementById(objectName).style.display = 'block';
			document.getElementById(objectName+'_onload').style.display = 'none';
			
			return true;
		}
		
		function hideObject(document, object){
		
			document.getElementById(object).style.display='none'; 
			document.getElementById(object+'_onload').style.display='block';
		}
		
