function PopupWindow( iframeName, divName)
{  
    this._iframeName = iframeName;
    this._divName = divName;
    
    this._alignment = 'Right'; 
    this._anchorElement = null;
    this._offset = 0;
    
    this._iFrame = null; 
    this._popupDiv = null; 

this.ShowWithFrame = ShowWithFrame;
this.ShowElementWithFrame = ShowElementWithFrame;
this.ShowCentrallyWithFrame = ShowCentrallyWithFrame;

    this.Show = Show;
    this.ReShow = ReShow;    
    this.ShowCentrally = ShowCentrally;
    this.GetControlsByName = GetControlsByName;  
    this.ShowElement = ShowElement;
    this.Close = Close;
    this.biggestSizeInfo = biggestSizeInfo;
    this.biggerSizeInfo = biggerSizeInfo;
    this.normalSizeInfo = normalSizeInfo;
 }

function GetControlsByName()
{
    with(this)
    {
        if(_iFrame == null)
        { 
            _iFrame = document.getElementById(_iframeName); 
        } 
        if(_popupDiv == null)
        { 
            _popupDiv = document.getElementById(_divName);
        } 
    } 
}

function Close()
{
    with(this)
    { 
        GetControlsByName(); 
        if (_iFrame!=null)
            _iFrame.style.visibility = 'hidden';
        _popupDiv.style.display="none"; 
        _popupDiv.style.visibility = 'hidden';
        document.forms[0].appendChild(_popupDiv)
    } 
}

function ShowCentrally()
{
    with(this)
   {
        GetControlsByName(); 
       
        var Canvas = new Object();
        getDisplayDims(Canvas);        
        _popupDiv.style.position="absolute";
        _popupDiv.style.display="block"; 
        _popupDiv.style.top = Canvas.yMiddle - (_popupDiv.offsetHeight/2)  + 'px';
        _popupDiv.style.left = Canvas.xMiddle - (_popupDiv.offsetWidth/2) + 'px';        
        _popupDiv.style.visibility = 'visible';           
   } 
}

function ShowCentrallyWithFrame(frameName)
{
    with(this)
   {
        GetControlsByName(); 
        var frameElement = document.getElementById(frameName);
        
        var Canvas = new Object();
        getDisplayDims(Canvas);        
        _popupDiv.style.position="absolute";
        _popupDiv.style.display="block"; 
       /* _iFrame.style.top = */_popupDiv.style.top = Canvas.yMiddle - (_popupDiv.offsetHeight/2)  + 'px';
       /* _iFrame.style.left = */_popupDiv.style.left = Canvas.xMiddle - (_popupDiv.offsetWidth/2) + 'px';    
       /* _iFrame.style.height = */_popupDiv.offsetHeight;
       /* _iFrame.style.width = */_popupDiv.offsetWidth;
       // _iFrame.style.position="absolute";
       // _iFrame.style.display="block"; 
        _popupDiv.style.visibility = 'visible'; 
        _iFrame.style.visibility = 'visible';       
//        var endofpage = document.getElementById('endPage');
//        if (endofpage!=null)
//            if (document.getElementById('endPage').offsetTop < (_popupDiv.offsetTop+_popupDiv.offsetHeight))
//                _iFrame.style.height = (_popupDiv.offsetTop+_popupDiv.offsetHeight)+"px";
//            else
//                _iFrame.style.height = document.getElementById('endPage').offsetTop+15+"px";//because auto margin of 15px;
//        
//        else
//            _iFrame.style.height = "100%";

        CorrectPosition(_popupDiv,0);

   } 
}

function getDisplayDims(CANVAS) {
  var CWidth, CHeight, CScrollX, CScrollY;

  if (isNS) {
    CWidth = self.innerWidth;
    CHeight = self.innerHeight;
    CScrollX = window.pageXOffset;
    CScrollY = window.pageYOffset;
  } else if (isIE6) {
    CWidth = document.documentElement.clientWidth;
    CHeight = document.documentElement.clientHeight;
    if (CWidth==0) {
      CWidth = document.body.clientWidth;
      CHeight = document.body.clientHeight;
    }
    CScrollX = document.body.scrollLeft +
               document.documentElement.scrollLeft;
    CScrollY = document.body.scrollTop +
               document.documentElement.scrollTop;
  } else if (isIE) {
    CWidth = document.body.clientWidth;
    CHeight = document.body.clientHeight;
    CScrollX = document.body.scrollLeft;
    CScrollY = document.body.scrollTop;
  }
  CANVAS.Left    = CScrollX;
  CANVAS.Right   = CWidth + CScrollX;
  CANVAS.Top     = CScrollY;
  CANVAS.Bottom  = CHeight + CScrollY;
  CANVAS.xMiddle = Math.round(CWidth/2) + CScrollX;
  CANVAS.yMiddle = Math.round(CHeight/2) + CScrollY;
}


function Show(divAnchorName, alignment, offset, overlay)
{
    with(this)
    {        
        if( alignment != 'Left' && alignment != 'Right' && alignment && 'Top' && alignment != 'Bottom' && alignment != 'Overlay')
            _alignment = 'Right'; 
        else 
            _alignment = alignment;
               
        if(offset == null) 
            _offset = 0;
        else
            _offset = offset; 
    
        var divAnchor = document.getElementById(divAnchorName);
        GetControlsByName();                      
        //_popupDiv.style.position = "static";
        //_iFrame.style.width = _popupDiv.offsetWidth + "px";
        //_iFrame.style.height = _popupDiv.offsetHeight + "px";
                       
        //ShowElement(_iFrame, divAnchor);                                     
        ShowElement(_popupDiv, divAnchor);
    } 
}

function ShowWithFrame(divAnchorName, alignment, offset, overlay)
{
    with(this)
    {        
        if( alignment != 'Left' && alignment != 'Right' && alignment && 'Top' && alignment != 'Bottom' && alignment != 'Overlay')
            _alignment = 'Right'; 
        else 
            _alignment = alignment;
               
        if(offset == null) 
            _offset = 0;
        else
            _offset = offset; 
    
        var divAnchor = document.getElementById(divAnchorName);
        GetControlsByName();                      
        //_popupDiv.style.position = "static";
        //_iFrame.style.width = _popupDiv.offsetWidth + "px";
        //_iFrame.style.height = _popupDiv.offsetHeight + "px";
                       
        //ShowElement(_iFrame, divAnchor);                                     
        ShowElementWithFrame(_popupDiv, divAnchor);
    } 
}
function ShowElementWithFrame( popupElement, anchorElement)
{
    var x_offset;
    var y_offset;
    
    
    with(this)
    { 
        _anchorElement = anchorElement;
    
       anchorElement.appendChild(popupElement);
       //anchorElement.appendChild(_iFrame);  
       
         
        popupElement.style.left = '0px'; 
        popupElement.style.top = '0px';
        _iFrame.style.left = '0px'; 
        _iFrame.style.top = '0px';
        _iFrame.style.visibility = 'visible';
        
        _popupDiv.style.display="block"; 
        if(_alignment == 'Right')
        { 
            /*frameElement.style.left =*/ popupElement.style.left = anchorElement.offsetWidth + parseInt(_offset) + 'px'; 
            x_offset = anchorElement.offsetWidth + parseInt(_offset);
        } 
        else if(_alignment == 'Left') 
        {   
            /*frameElement.style.left =*/ popupElement.style.left = ((popupElement.offsetWidth + parseInt(_offset)) * -1) + 'px'; 
            x_offset = ((popupElement.offsetWidth + parseInt(_offset)) * -1);
        }                         
       else if(_alignment == 'Overlay')
        {   
            /*frameElement.style.left =*/ popupElement.style.left = _offset + 'px'; 
            x_offset = _offset;
        }                         
        
//        frameElement.style.top = - popupElement.offsetHeight;
//        frameElement.style.height = popupElement.offsetHeight;
    
     
    popupElement.style.visibility = 'visible';
        
    
    CorrectPosition(popupElement,x_offset); 
    
//    var endofpage = document.getElementById('endPage');
//    //alert(endofpage.offsetTop);
//    if (document.getElementById('endPage').offsetTop < (popupElement.offsetTop+popupElement.offsetHeight))
//        _iFrame.style.height = (popupElement.offsetTop+popupElement.offsetHeight)+"px";
//    else
//        _iFrame.style.height = document.getElementById('endPage').offsetTop+15+"px";//because auto margin of 15px;
    
    
    }
    //CorrectPosition(frameElement,x_offset); 
}

function ShowElement( popupElement, anchorElement)
{
    var x_offset;
    var y_offset;
    
    
    with(this)
    { 
         _anchorElement = anchorElement;
    
        anchorElement.appendChild(popupElement);  
        
        popupElement.style.left = '0px'; 
        popupElement.style.top = '0px';
        
        _popupDiv.style.display="block";  
        if(_alignment == 'Right')
        { 
            popupElement.style.left = anchorElement.offsetWidth + parseInt(_offset) + 'px'; 
            x_offset = anchorElement.offsetWidth + parseInt(_offset);
        } 
        else if(_alignment == 'Left') 
        {   
            popupElement.style.left = ((popupElement.offsetWidth + parseInt(_offset)) * -1) + 'px'; 
            x_offset = ((popupElement.offsetWidth + parseInt(_offset)) * -1);
        }                         
       else if(_alignment == 'Overlay')
        {   
            popupElement.style.left = _offset + 'px'; 
            x_offset = _offset;
        }                         
    } 
    
    popupElement.style.visibility = 'visible';
    
    CorrectPosition(popupElement,x_offset)               
    
}

function ReShow()
{
    var x_offset;
    var y_offset;
    
    with(this)
    {
        if (_anchorElement!=null)
        {
            _popupDiv.style.left = '0px'; 
            _popupDiv.style.top = '0px';
             
            _popupDiv.style.display="block"; 
                 
            if(_alignment == 'Right')
            { 
                _popupDiv.style.left = _anchorElement.offsetWidth + parseInt(_offset) + 'px'; 
                x_offset = _anchorElement.offsetWidth + parseInt(_offset);
            } 
            else if(_alignment == 'Left') 
            {   
                _popupDiv.style.left = ((_popupDiv.offsetWidth + parseInt(_offset)) * -1) + 'px'; 
                x_offset = ((_popupDiv.offsetWidth + parseInt(_offset)) * -1);
            }                         
           else if(_alignment == 'Overlay')
            {   
                _popupDiv.style.left = _offset + 'px'; 
                x_offset = _offset;
            }                         
         
        
            _popupDiv.style.visibility = 'visible';
     
            CorrectPosition(_popupDiv,x_offset);   
        }
        else
        {
            if (_iFrame!=null)
                ShowCentrallyWithFrame();
            else
                ShowCentrally();
        }
    }
             
}

function biggestSizeInfo(textElement, xOffset)
{
    with(this)
    {
        UpdateSize(this._popupDiv,20);
        ReShow();
    }
   
    //UpdateSize(textElement,"20px");
   // RefreshPopupWindow(iconElement, iFrame, popupWindowDiv);
}
function biggerSizeInfo(textElement)
{
    with(this)
    {
        UpdateSize(this._popupDiv,14);
        ReShow();
    }
    //UpdateSize(textElement,"14px");
   // RefreshPopupWindow(iconElement, iFrame, popupWindowDiv, xOffset);
}
function normalSizeInfo(textElement)
{
    with(this)
    {
        UpdateSize(this._popupDiv,11);
        ReShow();
    }
   // UpdateSize(textElement,"11px");
  //  RefreshPopupWindow(iconElement, iFrame, popupWindowDiv, xOffset);
}

function UpdateSize(element,size)
{
    var i=0;
    element.style.fontSize=size+"px";
    element.style.lineHeight=(3+size)+"px";

    if (element.children!=null)
    {
        for(i=0;i<element.children.length;i++)
        {
            UpdateSize(element.children[i],size);
        }
    }
}
