﻿//@@@ author Denis Gleyser

var ObjCoordinates_Br = G_nameB; //"IE";
var ObjCoordinates_BrV = G_versB;
//alert(ObjCoordinates_Br+"\n"+ObjCoordinates_BrV);

function clsFlyObj(relObj,objID,relObjAlign,objAlign,relObjValign,objValign,offsetX,offsetY){
    this.relObj = relObj;
    this.obj = document.getElementById(objID);
    this.relObjAlign = relObjAlign;
    this.objAlign = objAlign;
    this.relObjValign = relObjValign;
    this.objValign = objValign;
    this.offsetX = offsetX;
    this.offsetY = offsetY;    
    
    this.SetPosition = function(relObj){
       if(relObj==null) relObj = this.relObj; else this.relObj = relObj;
       ObjCoordinates_SetCoordinates(null,relObj,this.obj,this.relObjAlign,this.objAlign,this.relObjValign,this.objValign,this.offsetX,this.offsetY);       
    }
    
    this.Show = function(){
       this.UnHideSelectBoxes();
       this.arHiddenSelectBoxes = ObjCoordinates_MakeFlyLayerSafe(this.obj);       
       this.obj.style.visibility="visible";
    }
    
    this.Hide = function(){
       this.obj.style.visibility="hidden";
       this.UnHideSelectBoxes();
    }
    
    //@@@ private
    this.arHiddenSelectBoxes = null;
    this.UnHideSelectBoxes = function(){
        var oAr = this.arHiddenSelectBoxes;
        if(oAr != null){
            for(var i=0; i<oAr.length; i++){
               oAr[i].style.visibility="visible";
            }
            this.arHiddenSelectBoxes = null;
        }
    }    
}//@@@ clsFlyObj


function clsObjCoordinates(o,e){
        this.x = 0;
		this.y = 0;
		this.x1 = 0;
		this.y1 = 0;
		this.width = 0;
		this.height = 0;
		this.mouseX = 0;
		this.mouseY = 0;
		this.obj = o;
		this.event = e;			
		
		//@@@ MZ block
        if(ObjCoordinates_Br=="MZ" && ObjCoordinates_BrV>=6){
			 var el=o; var el1;
			 var x=0,y=0,ax="",ay="";
			 var s="";
			 while(el!=null){			    			 
			       x+=el.offsetLeft*1;
				   y+=el.offsetTop*1;
			       el1=el.offsetParent;
                   if(ObjCoordinates_BrV>=6){
  					     if(el1!=null && (el1.tagName=="BODY" || el1.tagName=="HTML")){
  						    if(el.style.position!="absolute"){
  								x=x-(document.body.offsetWidth-document.width);
  						    }
  					        break;
  					     }
                   }
				   el=el1;
			 }	
			 if(ObjCoordinates_BrV==7){
			    x++;
				y++;
			 }	   
		     this.x=x;
		     this.y=y;
		     this.width=o.offsetWidth;
             if(this.width==0 && o.style.display=="none"){				 
                    o.style.display = "block";
					this.width=o.offsetWidth;
					if(this.width==0){
					    this.width=o.childNodes[0].offsetWidth+o.childNodes[0].offsetLeft*2;					
					}
					this.height=o.offsetHeight;
					o.style.visibility = "visible";
					o.style.display="none";
			 }else{
		            this.height=o.offsetHeight;
			 }
		     this.x1=this.x+this.width;
		     this.y1=this.y+this.height;
			 if(e!=null){
		         this.mouseX=e.clientX;
		         this.mouseY=e.clientY;
			 }			 
			 return;
		}
		//@@@ End MZ block
		
		//@@@ IE block
		if(ObjCoordinates_Br=="IE"){		   
			 var el = o; var el1;
			 var x=0,y=0,ax="",ay="";
			 var s = "";
			 
			 if(ObjCoordinates_BrV<=5){
			    if(o.offsetParent!=null){
			       if(o.offsetLeft*1+o.offsetWidth>o.offsetParent.offsetWidth){
					    x=o.offsetLeft*-1;
				   }
			    }
			 }
			 
			 while(el!=null){			    			 			    
			    x+=el.offsetLeft*1;
				y+=el.offsetTop*1;
				ax=(el.offsetLeft-el.clientLeft);
				if(ax<0){x-=ax*1}
				ay=(el.offsetTop-el.clientTop);	
				if(ay<0){y-=ay*1}					   
				el1=el.offsetParent;						 
				if(el1 !=null && (el1.tagName=="BODY" || el1.tagName=="HTML")){
				    if(el.style.position!="absolute"){
						 if(document.body.dir=="rtl"){
					        ax=document.body.scrollWidth-document.body.clientWidth;
						    x=x-ax;
                         }	
					}
					break;
			    }
				el = el1;
			 }		   
		     this.x = x;
		     this.y = y;
		     this.width = o.offsetWidth;
			 if(this.width==0 && o.style.display=="none"){
			     o.style.display = "block";
				 this.width = o.offsetWidth;
				 this.height = o.offsetHeight;
				 o.style.display = "none";
			 }else{
		         this.height = o.offsetHeight;
			 }
		     this.x1 = this.x + this.width;
		     this.y1 = this.y + this.height;
			 if(e!=null){
		         this.mouseX = e.clientX;
		         this.mouseY = e.clientY;
			 } 
			 return;
		}
		//@@@ IE block
		
}


function ObjCoordinates_SetCoordinates(event,relObj,obj,relObjAlign,objAlign,relObjValign,objValign,offsetX,offsetY){		
		var objObj=obj;
		
		var relObjC = new clsObjCoordinates(relObj,event);
		var objC = new clsObjCoordinates(objObj,event);
		var x,y;
				
		if(relObjAlign!=null && objAlign!=null && relObjValign!=null && objValign!=null){

			//@@@ calculate coordinates
			if(relObjAlign=="left" && objAlign=="left"){
        		x = relObjC.x;
        	}else if(relObjAlign=="right" && objAlign=="right"){
        		x = relObjC.x1-objC.width;
        	}else if(relObjAlign=="right" && objAlign=="left"){
        	    x = relObjC.x1;
        	}else if(relObjAlign=="left" && objAlign=="right"){
        	    x = relObjC.x-objC.width;
        	}
        				
           if(relObjValign=="bottom" && objValign=="bottom"){
        		 y = relObjC.y1-objC.height;
           }else if(relObjValign=="bottom" && objValign=="top"){
        		 y = relObjC.y1;
           }else if(relObjValign=="top" && objValign=="bottom"){
        		 y = relObjC.y-objC.height;
           }else if(relObjValign=="top" && objValign=="top"){
        		 y = relObjC.y;
           }
        				
           if(offsetX!=null)x=x+offsetX*1;
           if(offsetY!=null)y=y+offsetY*1;
           //@@@ end calculate coordinates
		   
		   //alert(x+"\n"+y);
		   
		   //@@@ set coordinates
           if(ObjCoordinates_Br=="IE"){
                objObj.style.pixelLeft=x;
        		objObj.style.pixelTop=y;        						
           }else if(ObjCoordinates_Br=="MZ"){
                objObj.style.left=x+"px";
        		objObj.style.top=y+"px";
           }
		}														
}

function ObjCoordinates_MakeFlyLayerSafe(objLayer){
    if(ObjCoordinates_Br!="IE") return new Array();
    if(ObjCoordinates_BrV>=7) return new Array();
    
	//@@@ hides all "select" tags
	var objSC;
	var objLayerC = new clsObjCoordinates(objLayer,null);
	var sCol;
	var sBrowser = navigator.userAgent.toLowerCase();
    var isInternet = (sBrowser.indexOf('msie')>-1);
	if(isInternet){
	    sCol = document.all.tags("SELECT");
	}
	else{
	    sCol = document.getElementsByTagName("SELECT");
	}
	var el,elArr;
	var bCancel;
	var i,j;
	var rvArray =new Array();
	
	for(i=0;i<sCol.length;i++){
		objSC= new clsObjCoordinates(sCol[i],null);
		if( !(objSC.x1<=objLayerC.x || objSC.x>=objLayerC.x1) && !(objSC.y1<=objLayerC.y || objSC.y>=objLayerC.y1)){
			el = sCol[i];
			elArr = new Array();
			bCancel = false;
			while(el!=null && el.tagName!="BODY" && el.tagName!="HTML"){
				 elArr[elArr.length]=el;
				 el=el.parentElement;
			}
			for(j=0;j<elArr.length;j++){
				 if(elArr[j].style.visibility=="hidden" || elArr[j].style.display=="none"){
					 bCancel = true;
					 break;
				 }
			}
			if(!bCancel){
				sCol[i].style.visibility="hidden";
				rvArray[rvArray.length]=sCol[i];
			}			
		}
	}
	return rvArray;
}