var dxsizing_ctrl = function(elem_id,is_w,is_h,min_width,min_height,max_width,max_height,baloonctrl,default_text,isneeddrag){
    this.Init(elem_id,is_w,is_h,min_width,min_height,max_width,max_height,baloonctrl,default_text,isneeddrag);
}

dxsizing_ctrl.prototype = {
    Init:function(elem_id,is_w,is_h,min_width,min_height,max_width,max_height,baloonctrl,default_text,isneeddrag){    
       
        // Флаг, устанавливающий, нужно ли будет таскать текстбокс        
        this.isneeddrag = isneeddrag;        
       
        // текст по умолчанию        
        this.defaulttext=dxsoft_library.DecodeText(default_text);       
        // диалог с подсказкой
        this.baloonctrl = baloonctrl;
        // контрол для ресайза        
        this.ctrl = dxsoft_library.GetElement(elem_id);        
        this.ctrl.textsizing = this;
        // ресайзить ли по ширини/высоте
        this.is_w = (is_w==undefined)?true:is_w;
        this.is_h = (is_h==undefined)?true:is_h;      
        // минимальная/максимльная высота/ширина
        this.min_width = (min_width==undefined)?50:min_width;
        this.max_width = max_width;
        this.min_height = (min_height==undefined)?50:min_height;
        this.max_height = max_height;        
                
        this.AddSizeBox();                
        
        if(this.baloonctrl)
        {
            dxsoft_library.DoTask(this.ctrl,dxsoft_library.CreateMethod(this,this.OnEnter),"focus");
            dxsoft_library.DoTask(this.ctrl,dxsoft_library.CreateMethod(this,this.OnExit),"blur");
        }
    },    
    // окно получило фокус ввода
    OnEnter:function()
    {
        if(this.defaulttext)
        {
            this.baloonctrl.SetText(this.defaulttext);
            this.baloonctrl.Show(this.container);
            this.is_baloonshow = true;
        }
    },    
    //окно теряет фокус
    OnExit:function()
    {
        this.baloonctrl.Hide();
        this.is_baloonshow = false;
    },
    // задать текст для подсказки
    SetDefaultText:function(text)
    {
        this.defaulttext = text;
    },
    // добавляем полосочки ресайза в нижний правый угол
    AddSizeBox:function()
    {        
        // Обрамляем контрол в div
        var parent = this.ctrl.parentNode;
        var container = document.createElement("div");
        container.style.cssText = "position:relative;float:left;";
        parent.replaceChild(container,this.ctrl);        
        container.appendChild(this.ctrl);
        this.container = container;        
    
        if(this.ctrl.tagName=="TEXTAREA" && this.isneeddrag == 1)
        {
            // кладем на него другой div c полосочками                
            var sz = document.createElement("div");
            sz.style.cssText="cursor:nw-resize;position:absolute; width:7px; height:7px; background:url('/img/decoration/sizectrl.gif') no-repeat;";        
            container.appendChild(sz);

            // выставляем размер
            this.sizebox = sz;
            this.SBReposition();
            dxsoft_library.DoTask(sz,dxsoft_library.CreateMethod(this,this.OnResizeStart),"mousedown");        
        }
    },
    SBReposition:function()
    {
        if(this.sizebox)
        {
            this.sizebox.style.left = (this.ctrl.offsetWidth-9+this.ctrl.offsetLeft)+"px";
            this.sizebox.style.top = (this.ctrl.offsetHeight-9+this.ctrl.offsetTop)+"px";
        }
    },
    OnResizeStart:function(ev)
    {       
        if(this.onresizing_ref)
            this.OnResized();
        // запоминаем текущие координаты
        this.drag_x = ev.screenX;
        this.drag_y = ev.screenY;
        this.start_w = this.ctrl.offsetWidth;
        this.start_h = this.ctrl.offsetHeight;
        // отменяем выделение
        dxsoft_library.BeforeDrag();        
        this.ctrl.style.cursor="nw-resize";
        dxsoft_library.DoTask(document.body,(this.onresizing_ref = dxsoft_library.CreateMethod(this,this.OnResizing)),"mousemove");
        dxsoft_library.DoTask(document.body,(this.onresized_ref = dxsoft_library.CreateMethod(this,this.OnResized)),"mouseup");
    //    dxsoft_library.DoTask(document.body,this.onresized_ref,"mouseout");
    },    
    OnResizing:function(ev)
    {              
        // процесс ресайза  
        if(this.is_w)
        {
            var w = this.start_w+ev.screenX-this.drag_x;
            if(w<this.min_width) w = this.min_width;
            if(this.max_width && w>this.max_width) w = this.max_width;
            this.ctrl.style.width = w+"px";
        } 
        if(this.is_h)
        {       
            var h = this.start_h+ev.screenY-this.drag_y;
            if(h<this.min_height) h = this.min_height;
            if(this.max_height && h>this.max_height) h = this.max_height;
            this.ctrl.style.height = h+"px";
        } 
        this.SBReposition();        
    },
    OnResized:function()
    {
        // завершение ресайза
        this.ctrl.style.cursor="auto";
        dxsoft_library.AfterDrag();
        if(this.onresizing_ref)
            dxsoft_library.ClearTask(document.body,this.onresizing_ref,"mousemove");
        if(this.onresized_ref)
        {
            dxsoft_library.ClearTask(document.body,this.onresized_ref,"mouseup");
            dxsoft_library.ClearTask(document.body,this.onresized_ref,"mouseout");
        }
        this.onresized_ref = this.onresizing_ref = null;        
    }
}