﻿function getangle(x,y) {		

	var a = parseInt(Math.atan(x/y) * 360/2/Math.PI);	

	if ((a>0) && (x<0) && (y<0)) {	

		 a = 180 + a;
	}	
	else if ((a<0) && (x<0)&&(y>0)){	
		a = 180 + a;
	}	
	else if ((a<0) && (x>0)&&(y<0)){	
		a = 360 + a;
	}	
	return a;	
}		

function getstyle(elem, prop) {
		if(document.defaultView)
		{
			return document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop);
		}
		else if(elem.currentStyle)
		{
			var prop = prop.replace(/-(\w)/gi, function($0,$1)
			{
				//return $0.charAt($0.length - 1).toUpperCase();
				return $1.toUpperCase();
			});
			return elem.currentStyle[prop];
		}
		else return null;
	}
	
function socialbkmk() {
var u = location.href;
var t = document.title;
location.href = 'http://www.pagecolumn.com/social_bookmark2.htm?pgcoluu='+u+'&pgcoltt='+t;
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function div(me) {

this.id = me.id;

this.t = 0; 
this.start = {};
this.start.top = me.start.top; // 1
this.start.left = me.start.left; //  -2;
this.left = me.start.left;
this.top = me.start.top;
this.c = 1;
this.step = me.step; //2
this.delay = me.delay; // 10

}

div.prototype = {
  
    move: function(typ) {     
        if (typ=="dd") {
            var vleft = parseInt(this.elem.style.left);        
            if (vleft <= 20) {    
                vleft+=5;    
                this.elem.style.left=vleft+"px";
            } 
            if ((vleft < 80)&&(vleft>20)) {    
                vleft+=2;    
                this.elem.style.left=vleft+"px";
            } 
            if (vleft>80){
                if (this.c==1) {
                this.elem.style.left = 72+"px";
                }
                
                if (this.c==2) {
                this.elem.style.left = 76+"px";
                }
               
                 if (this.c==3) {
                this.elem.style.left = 78+"px";
                }
                this.c +=1; 
            }
        }  
        
       
         else if (typ =="circle"){
            var r = this.circle.r;   
            if (this.reverse) this.angle -=this.step;
            else this.angle +=this.step;
            var a = 2*Math.PI/360 * this.angle;
            if (this.circle.max!=undefined) {
                if (a >this.circle.max) return;
            }
       
            vtop = parseInt(r - r*Math.sin(a)) ;
            vleft = parseInt(r + r*Math.cos(a));
            
            this.elem.style.left=vleft+"px";
            this.elem.style.top=vtop+"px";
            
        
           
         }
         else if (typ =="line") {
         
             if (this.end.left == this.start.left) {
                 if (this.reverse) {
                      this.start.top = 170;this.end.top = 0;  
                      if (this.a) this.top -=this.step; else this.top +=this.step;
                 }
                 else {
                    this.start.top = 0;this.end.top = 170;
                    
                    if (this.start.top<this.end.top) {
                        this.a = true;this.top +=this.step;}
                        else {this.a = false;this.top -=this.step;}   
                 }
                    var vleft = this.start.left;
                    var vtop = this.top;    
                    
                     if (vtop >Math.max(this.end.top,this.start.top)) { 
                       this.top  =Math.max(this.end.top,this.start.top);
                       
                      if (!this.reverse) { 
                      this.start.left = 270; this.start.top = 170;this.left = 270;
                      this.end.left = 2; this.end.top = 170;
                      }
                       
                       return;
                     }
                     else if (vtop<Math.min(this.end.top,this.start.top)) {
                       this.top  =Math.min(this.end.top,this.start.top);
                       if (this.reverse) {
                        this.start.left = 270; this.start.top = 0;this.left = 270;
                        this.end.left = 2; this.end.top = 170;
                       }
                       else{
                        this.start.left = 270; this.start.top = 0;this.left = 270;
                        this.end.left = 2; this.end.top = 170;
                       
                       }
                       return;
                     }
                 }
            else if (this.end.top == this.start.top) {     
                 if (this.reverse) {
                     if (this.a) this.left -=this.step; else this.left +=this.step;
                 }
                 else {
                        var m = Math.max(this.end.left,this.start.left);
                        var n =  Math.min(this.end.left,this.start.left);
                        
                        this.start.left = m;
                        this.end.left = n;
                      
                         if (this.start.left<this.end.left) {
                            this.a = true;this.left +=this.step;}
                            else {this.a = false;this.left -=this.step;
                         }
                     }
                 
                 var vleft = this.left;        
                 var vtop = this.start.top;
   
                 if (vleft >Math.max(this.end.left,this.start.left)) { 
                      this.left  = Math.max(this.end.left,this.start.left);
                     
                      if (!this.reverse) {
                      this.start.left = 270; this.start.top = 0;this.top = 0;
                      this.end.left = 270; this.end.top = 170;
                      }
                      else {
                      
                      this.start.left = 270; this.start.top = 170;this.top = 170;
                      this.end.left = 270; this.end.top = 0;this.a =true;
                      }
                     return;
                 }
                   
                 else if (vleft<Math.min(this.end.left,this.start.left)) {
                    this.left  = Math.min(this.end.left,this.start.left);

                   this.start.left = 2; this.start.top = 170;
                    if (!this.reverse) {  
                    this.end.left = 270; this.end.top = 0;
                    }
                    else
                    {
                     this.end.left = 270; this.end.top = 170;this.a = false;     
                    }
                   
                    return;
                 }
                 
            }
            else  {
                 if (this.reverse) {
                     
                     if (this.a) this.left -=this.step; else this.left +=this.step;
                 }
                 else {
                        if (this.top!=170) {
                        var m = Math.max(this.end.left,this.start.left);
                        var n =  Math.min(this.end.left,this.start.left);
                        this.start.left = n;
                        this.start.top = 170;
                        this.end.left = m;
                        this.end.top = 0;
                        
                        }
                         if (this.start.left<this.end.left) {
                            this.a = true;this.left +=this.step;
                         }
                            else {
                            this.a = false;this.left -=this.step;
                         }
                 }
                
                 var vleft = this.left;            
                 var k = (this.end.top - this.start.top)/(this.end.left - this.start.left)
                 var vtop = 170+ k*vleft;  
                 if (vleft >Math.max(this.end.left,this.start.left)) { 
                      this.left  = Math.max(this.end.left,this.start.left);
                                       
                      if (!this.reverse) {
                      this.start.left = 270; this.start.top = 0;this.top = 0;
                      this.end.left = 270; this.end.top = 170;
                      }
                      else {
                      
                      this.start.left = 270; this.start.top = 170;
                      this.top = 170;
                      
                      this.end.left = 270; this.end.top = 0;this.a =true;
                      }

                     return;
                 }
                   
                 else if (vleft<Math.min(this.end.left,this.start.left)) {
                    this.left  = Math.min(this.end.left,this.start.left);
                    if (!this.reverse) {
                    this.start.left = 270; this.start.top = 0;
                    this.end.left = 270; this.end.top = 170;
                    }
                    else
                    {
                     this.start.left = 2; this.start.top = 170;
                     this.end.left = 270; this.end.top = 170;                 
                    }
             
                    return;
                 }
                 
                 if (this.reverse) {
                    if (vleft==2+this.step) {
                        this.start.left = 2; this.start.top = 170;
                        this.end.left = 270; this.end.top = 170;
                        this.a = false;
                       
                    }
                 
                 }
                 
                 
             } 
             this.elem.style.left=parseInt(vleft)+"px";
             this.elem.style.top=parseInt(vtop)+"px";
             
        
         //    document.getElementById("demo1").innerHTML += "this.elem.style.left = "+ parseInt(vleft) +"\n"+ "this.elem.style.top = "+parseInt(vtop)+"\n"
            // document.getElementById("demo1").innerHTML  = "this.start.top = "+this.start.top+"<br>"+"this.end.top = "+this.end.top+"<br>"+"this.reverse = "+this.reverse+"<br>"+"this.a = "+ this.a;
         } 
         else if (typ =="ellipse") {
         
            var x = this.ellipse.x; var y = this.ellipse.y;  
            if (this.reverse) this.angle -=this.step;
            else this.angle +=this.step;
            var a = 2*Math.PI/360 * this.angle;
            
            if (this.ellipse.max!=undefined) {
                if (a >this.ellipse.max) return;
            }
       
            vtop = 87+parseInt(y*Math.sin(a)) ;
            vleft = 135+parseInt(x*Math.cos(a));
            
            this.elem.style.left=vleft+"px";
            this.elem.style.top=vtop+"px";
     // document.getElementById("dem").innerHTML += "this.elem.style.left = "+ parseInt(vleft) +"\n"+ "this.elem.style.top = "+parseInt(vtop)+"\n"

         }
         
    },
    
    go: function(settings){
        
       if ((settings.route=="circle")||(settings.route=="ellipse")) {
       
       if (this.angle==undefined) {
            for(var i in settings){
			    this[i] = settings[i];	    
		        for(var j in settings[i]){
    		         this[i][j]=settings[i][j];                		    
		        }				
		    }
		}
		}
		else if (settings.route=="line") {
       
           if (this.a==undefined) {
                for(var i in settings){
			        this[i] = settings[i];	    
		            for(var j in settings[i]){
    		             this[i][j]=settings[i][j];                		    
		            }				
		        }
		    }
		}

        this.elem = document.getElementById(this.id);
   
        var _move = this.Bind(this.move);
        var closure = function(index) {
             return function() {
                 _move(index);
              }
         };
        this.t = setInterval(closure(this.route),this.delay);              
    },  
    
    stop:function(){
        if (this.t ==0) return;
        clearInterval(this.t);
        if ((this.route=="circle")||(this.route=="ellipse")) {
            this.start.top = parseInt(this.elem.style.top);
            this.start.left = parseInt(this.elem.style.left);
        }
        this.t = 0;
    },
    Bind: function( Method ){
        var _this = this; 
        return(
             function(){
             return( Method.apply( _this, arguments ) );
             }
        );
    }     
}

