// Авторы: Буравлев А.С. / Матвеев И.В. 
// Код реализующий функции "плавающего" окна
// код для MSIE4 и выше
DHTMLcart.checkonscroll=function()
{
    for (var i = 1; i <= document.numObj; i++)
    {
obj = document.all[document.objArray[i]].DHTMLcart;
diffY = document.body.scrollTop;
diffX = document.body.scrollLeft;
curX  = obj.rootDocHead.style.pixelLeft;
curY  = obj.rootDocHead.style.pixelTop;
targetX = obj.left + diffX;
targetY = obj.top  + diffY;
if (curX != targetX)
    {
    curHorShift = (targetX - curX);
        curHorShift = (curHorShift > 0) ? Math.ceil(curHorShift):Math.floor(curHorShift);
obj.rootDocHead.style.pixelLeft += curHorShift;
        obj.rootDocObj.style.pixelLeft  += curHorShift;
}
if (curY != targetY)
    {
    curVertShift = (targetY - curY);
        curVertShift = (curVertShift > 0) ? Math.ceil(curVertShift):Math.floor(curVertShift);
obj.rootDocHead.style.pixelTop += curVertShift;
        obj.rootDocObj.style.pixelTop  += curVertShift;
}
    }
}
// мышь над заголовком объекта
function DHTMLcartOnMouseOver()
{
    var obj                 = this.DHTMLcart;
    window.draggedDHTMLcart = obj;    
    obj.oldonmousedown      = document.onmousedown;
    window.onmousedown      = DHTMLcartDrag;
    window.captureEvents(Event.MOUSEDOWN);
    return false;
}
// мышь съехала с заголовка объекта
function DHTMLcartOnMouseOut()
{
    var obj                 = this.DHTMLcart;
    window.draggedDHTMLcart = null;   
    window.onmousedown      = obj.oldonmousedown;
    window.releaseEvents(Event.MOUSEDOWN);
    return false;
}
function DHTMLcartMove(e)
{
    var obj = document.draggedDHTMLcart;
    var curX;
    var curY;
if(event.button == 0)
    {
    DHTMLcartDrop();                        
        return true;
}
    curX     = event.clientX - obj.dragXOffset;
    curY     = event.clientY - obj.dragYOffset
    obj.left = curX;
    obj.top  = curY;
obj.rootDocObj.style.visibility = "hidden";
obj.rootDocHead.style.pixelLeft = curX + document.body.scrollLeft;
    obj.rootDocHead.style.pixelTop  = curY + document.body.scrollTop;
    obj.rootDocObj.style.pixelLeft  = curX + document.body.scrollLeft;
    obj.rootDocObj.style.pixelTop   = curY + obj.headerHeight + document.body.scrollTop;
event.returnValue = false;      
    return false;
}
function DHTMLcartDrop()
{       
    var obj = document.draggedDHTMLcart;
obj.rootDocObj.style.visibility = "visible";
document.onmousemove = obj.oldonmousemove;
    document.onmouseup   = obj.oldonmouseup;            
    document.draggedDHTMLcart = null;
    return true;               
}
function DHTMLcartDrag(e)
{
    var obj;
obj = this.DHTMLcart;
obj.dragXOffset = event.clientX - obj.left;
    obj.dragYOffset = event.clientY - obj.top;  
obj.oldonmousemove = document.onmousemove;
    obj.oldonmouseup   = document.onmouseup;
document.onmousemove = DHTMLcartMove;
    document.onmouseup   = DHTMLcartDrop;
    document.draggedDHTMLcart = obj;  
    return true;
}
// Функция, сохраняющая статические координаты объекта
function DHTMLcartHoldPosition(objname)
{
    var diffX, diffY, targetX, targetY, curHorShift, curVertShift, curX, curY, obj;
    var percent = 0.1;
    if(document.draggedDHTMLcart != null)
    {
       this.holdFunc = setTimeout("DHTMLcartHoldPosition('"+objname+"')", 1);
        return false;
    }
  
obj = document.all[objname].DHTMLcart;
if (obj.rootDocObj.style.pixelWidth != obj.width)
    {
    obj.rootDocObj.style.pixelWidth  = obj.width;
        obj.rootDocHead.style.pixelWidth = obj.width;
}
    if (obj.rootDocObj.style.pixelHeight != obj.height)
    {
    obj.rootDocObj.style.pixelHeight  = obj.height;
        obj.rootDocHead.style.pixelHeight = obj.height;
}
if (obj.srcChanged) 
{
    obj.srcChanged     = false;
obj.rootDocObj.src = obj.src;
}     
        
diffY = document.body.scrollTop;
    diffX = document.body.scrollLeft;
curX  = obj.rootDocHead.style.pixelLeft;
    curY  = obj.rootDocHead.style.pixelTop;
targetX = obj.left + diffX;
    targetY = obj.top  + diffY;
if (curX != targetX)
    {
    curHorShift = (targetX - curX);
        curHorShift = (curHorShift > 0) ? Math.ceil(curHorShift):Math.floor(curHorShift);
obj.rootDocHead.style.pixelLeft += curHorShift;
        obj.rootDocObj.style.pixelLeft  += curHorShift;
}
if (curY != targetY)
    {
    curVertShift = (targetY - curY);
        curVertShift = (curVertShift > 0) ? Math.ceil(curVertShift):Math.floor(curVertShift);
obj.rootDocHead.style.pixelTop += curVertShift;
        obj.rootDocObj.style.pixelTop  += curVertShift;
}
}
// Параметры по умолчанию
DHTMLcart.id           = "DHTMLcartObj"; // идентификатор объекта
DHTMLcart.visible      = true;           // видимость
DHTMLcart.left         = 0;              // x-координата левого верхнего угла
DHTMLcart.top          = 0;              // y-координата левого верхнего угла
DHTMLcart.width        = 50;             // ширина
DHTMLcart.height       = 50;             // высота
DHTMLcart.headerHeight = 22;             // высота заголовка
DHTMLcart.headerHTML   = "None";
DHTMLcart.src          = "card.html";    // документ отображаемый в элементе
DHTMLcart.scroll       = false;
DHTMLcart.scrolling    = "no";
DHTMLcart.addmsieparam = "";
DHTMLcart.addmsiestyle = "";
  
// Установка координаты Х
function DHTMLcartSetLeft(left)
{
left = parseInt(left);
if(this.left != left)
this.left = left;
this.holdFunc = setTimeout("DHTMLcartHoldPosition('"+this.id+"')", 1);
};
// Установка координаты Y
function DHTMLcartSetTop(top)
{
top = parseInt(top);
if(this.top != top)
    this.top = top;
this.holdFunc = setTimeout("DHTMLcartHoldPosition('"+this.id+"')", 1);
};
// Установка ширины
function DHTMLcartSetWidth(width)
{
width = parseInt(width);
    if (this.width != width)
    this.width = width;
this.holdFunc = setTimeout("DHTMLcartHoldPosition('"+this.id+"')", 1);
};
// Установка высоты
function DHTMLcartSetHeight(height)
{
height = parseInt(height);
    if (this.height != height)
    this.height = height;
this.holdFunc = setTimeout("DHTMLcartHoldPosition('"+this.id+"')", 1);
};
// Замена документа, содержащегося в DHTMLcart
function DHTMLcartSetSrc(src)
{
    if(this.src != src)
    {
        this.srcChanged = true;
        this.src        = src;
    }
this.holdFunc = setTimeout("DHTMLcartHoldPosition('"+this.id+"')", 1);
    return true;
};
// Изменение видимости
function DHTMLcartSetVisibility(vis)
{
    if(vis)
    {
        this.visible = true;
this.rootDocObj.style.visibility  = "visible";
        this.rootDocHead.style.visibility = "visible";
    }
    else
    {
        this.visible = false;
     this.rootDocObj.style.visibility  = "hidden";
        this.rootDocHead.style.visibility = "hidden";
    }
};
//конструктор
function DHTMLcart(definition)
{
    var HTMLstr;
    this.id = DHTMLcart.id;
    if(definition)
    {
        this.id           = (definition.id)           ? definition.id           : DHTMLcart.id;
        this.visible      =  definition.visible;
        this.left         = (definition.left)         ? definition.left         : DHTMLcart.left;
        this.top          = (definition.top)          ? definition.top          : DHTMLcart.top;
        this.width        = (definition.width)        ? definition.width        : DHTMLcart.width;
        this.height       = (definition.height)       ? definition.height       : DHTMLcart.height;
        this.src          = (definition.src)          ? definition.src          : DHTMLcart.src;         
        this.headerHeight = (definition.headerHeight) ? definition.headerHeight : DHTMLcart.headerHeight;             
        this.headerHTML   = (definition.headerHTML)   ? definition.headerHTML   : DHTMLcart.headerHTML;             
        this.scrolling    = (definition.scrolling)    ? definition.scrolling    : DHTMLcart.scrolling;             
        this.addmsieparam = (definition.addmsieparam) ? definition.addmsieparam : DHTMLcart.addmsieparam;
        this.addmsiestyle = (definition.addmsiestyle) ? definition.addmsiestyle : DHTMLcart.addmsiestyle;
    }
    else
    {
        this.id           = DHTMLcart.id;
        this.visible      = DHTMLcart.visible;
        this.left         = DHTMLcart.left;
        this.top          = DHTMLcart.top;
        this.width        = DHTMLcart.width;
        this.height       = DHTMLcart.height;
        this.src          = DHTMLcart.src;         
        this.headerHeight = DHTMLcart.headerHeight;               
        this.headerHTML   = DHTMLcart.headerHTML;
        this.scrolling    = DHTMLcart.scrolling;
        this.addmsieparam = DHTMLcart.addmsieparam;
        this.addmsiestyle = DHTMLcart.addmsiestyle;
    }
HTMLstr =  '<DIV  ID="'+this.id+'_header"  CLASS="dhtmlCartHead" STYLE="position:absolute;overflow:clip;z-index:10;';
    HTMLstr += 'left:'+this.left+';top:'+this.top+';';
    HTMLstr += 'height:'+this.headerHeight + ';width:'+this.width+';'
if(this.visible) 
    HTMLstr += 'visibility:show;">';
else
    HTMLstr += 'visibility:hidden;">';
HTMLstr += this.headerHTML;
    HTMLstr += '</DIV>\n';
    HTMLstr += '<IFRAME ID="' +this.id + '"  SRC="' +this.src + '" '+ this.addmsieparam + ' ';
    HTMLstr += 'HEIGHT="' + (this.height-this.headerHeight) + '" WIDTH="'+this.width+'" SCROLLING="' + this.scrolling + '" ';
    HTMLstr += 'STYLE="position:absolute;'+ this.addmsiestyle + ' left:'+this.left+';top:'+(this.top+this.headerHeight)+';height:'+(this.height-this.headerHeight)+'; width:'+this.width+';';
if(this.visible) 
    HTMLstr += 'visibility:show;">';
else
    HTMLstr += 'visibility:hidden;">';
HTMLstr+='</IFRAME>\n';
    document.write(HTMLstr);
    document.draggedDHTMLcart = null;
this.rootDocObj   = document.all[this.id];
    this.rootDocFrame = document.frames[this.id];
    this.rootDocHead  = document.all[this.id+'_header'];
this.rootDocHead.onmousedown = DHTMLcartDrag;
    this.rootDocHead.DHTMLcart = this;
    this.rootDocObj.DHTMLcart  = this;
    this.setLeft               = DHTMLcartSetLeft;
    this.setTop                = DHTMLcartSetTop;
    this.setWidth              = DHTMLcartSetWidth;
    this.setHeight             = DHTMLcartSetHeight;
    this.setSrc                = DHTMLcartSetSrc;
    this.setVisibility         = DHTMLcartSetVisibility;      
if (definition.scroll)
    {
    if (typeof document.objArray == 'undefined' || document.objArray == null)
        {
        document.objArray = new Array();
            document.numObj   = 0;
}
        document.numObj += 1;
        document.objArray[document.numObj] = this.id;
    window.onscroll = DHTMLcart.checkonscroll;
}
    return this;
}
document.write('<STYLE  TYPE="text/css">');
document.write(' .dhtmlCartHead {cursor:hand;}');
document.write('</STYLE>');