// JavaScript Document
// dialog common events handler 
// code by Azer Manafov (azerman[at]hotmail[dot]com)

var GLB_DLGINDEX = 0;
function clsDlgEvntsHandlerBs( id,visihlp)
{
	GLB_DLGINDEX++;
	var m_visi       = (visihlp == 'undefined')?new clsViewHelper():visihlp;
	var m_dlgdiv     = id+"Box"    + GLB_DLGINDEX;
	
	var m_titlediv   = id+'Title'  + GLB_DLGINDEX;
	var m_contentdiv = id+'Content'+ GLB_DLGINDEX;
	var m_header     = id+'Header' + GLB_DLGINDEX;
	var m_iframe     = id+'IFrame' + GLB_DLGINDEX;
	var m_splash     = id+'Splash' + GLB_DLGINDEX;

	var m_stltitle = { 'position':'relative', 'width':'100%', 'height':'24px', 'border': '1px solid black', 
		    'background-color':'#0d3589','verticalAlign':'middle','text-align':'center', 'display':'block'};
	var m_st1col   = { 'cursor': 'pointer', 'font-size':'12px', 'font-weight':'bold','font-family':'arial',
	    		    'vertical-align':'top', 'text-align': 'left','padding' : 0, 'padding-left':'0px',
	    		    'padding-right': '0px', 'height': '20px'};
	var m_st1hl    = { 'cursor': 'pointer', 'font-size':'12px', 'font-weight':'bold','font-family':'arial', 'color':'white',
		    'vertical-align':'middle', 'text-align': 'center','padding' : 0, 'padding-left':'5px',
		    'padding-right': '0px'};

    var m_titleTxt      = "Alert";
    var m_titleNode     = null;
    var m_dlgmovevt     = null; 
	var m_this          = this;
	var m_defbtnprop    = { 'xclose':  {'src':"images/close.png",'title':' Close ','alt':'X', 'callback':showdlg} };
	var m_bDlgIsOpen    = false;
	
	this.addButton      = addButton;
	this.createTitleBar = createTitleBar;
	this.getdlg         = function( ) { return {dlgid:m_dlgdiv, title:m_titlediv, content:m_contentdiv, iframe:m_iframe, splash:m_splash };}
	this.iframecreate   = iframecreate;
	this.initDialog     = initDialog;
	this.isDlgOpen      = function( ) { return m_bDlgIsOpen; }
	this.movedlg        = movedlg;
	this.setclosebtn    = function( defbtnprop ) 
	{   for ( var i in defbtnprop )
	    {  	for ( var j in defbtnprop[i] )
			{   if ( defbtnprop[i][j] == undefined ) continue;
	            m_defbtnprop[i][j] = defbtnprop[i][j]; 
			}
		}
	}
	this.header         = function( headerTxt  ) 
	{   if ( headerTxt != undefined && headerTxt.length )
			 m_titleTxt   = headerTxt;
		return m_titleTxt;
	}
	this.setheader      = function( headerTxt  )
	{   var txt = m_this.header( headerTxt );
		m_titleNode.nodeValue = txt;
	}

	this.setposatcursor = setposatcursor;
	this.showdlg        = showdlg;
	
	function addButton      ( btnprop, row )
	{
	    var title = $( m_titlediv );
		if ( row == undefined )
		     var row   = title.getElementsByTagName('tr')[0];

        var col   = document.createElement("td");
	    col.setAttribute("width", "22");
	    col.setAttribute("height","22");
	    col.setAttribute("align", "left");
	    col.setAttribute("valign","top");
	    m_visi.setStyles( col, m_st1col);
		
	    var img   = document.createElement("img");
	    img.setAttribute("src",  btnprop.src );
	    img.setAttribute("title",btnprop.title);
	    img.setAttribute("align", "left");
	    img.setAttribute("border","1");
	    img.setAttribute("width", "20");
	    img.setAttribute("height","20");
	    img.style.verticalAlign = 'top';
	    img.style.textAlign     = 'left';
		img.onclick = btnprop.callback;
		
        col.  appendChild( img );
        var a = row.getElementsByTagName( "td");
        if ( a.length == 0 )
		     row.  appendChild ( col );
        else row.  insertBefore( col,a[1]);
	}
	function createHeader   ( row )
	{
		var col   = document.createElement("td");
		var h1    = document.createElement("span");//h1
		h1.setAttribute( "id",      m_header );
		h1.setAttribute( "align",      'center' );
		m_visi.setStyles( h1, m_st1hl);
		m_titleNode  = document.createTextNode(m_titleTxt);
		h1.appendChild(m_titleNode);
		col.appendChild(h1);
		row.appendChild(col );
		
	}
	function createTitleBar ( )
	{
	    var title  = document.createElement("div");
	    title.setAttribute( "id", m_titlediv );
			
		m_visi.setStyles( title, m_stltitle);
		
	    var table  = document.createElement("table");
	    var tbody  = document.createElement("tbody");
	    table.setAttribute( "align",      'left' );
	    table.setAttribute( "cellpadding",'0' );
	    table.setAttribute( "cellspacing",'0' );
	    table.setAttribute( "border",     '0' );

	    var row   = document.createElement("tr");
		addButton   ( m_defbtnprop.xclose,row );
		createHeader( row );
 
        tbody.appendChild( row );
	    table.appendChild( tbody );
	    title.appendChild( table );
		return title;
		
	}
	function initDialog     ( )
	{
        if ( !$(m_titlediv))
        {   var box     = $(m_dlgdiv);
			var title   = createTitleBar( );
			var content = $(m_contentdiv);
			box.insertBefore( title,content);
		}
     
		m_dlgmovevt      = new clsMouseEventsHandle( m_visi,{elm: $( m_dlgdiv ),ifr: $(m_iframe), state:0,dx:0,dy:0} );
        var h_dlgevent1  = new m_dlgmovevt.evobject('mousedown', '1', movedlg, m_titlediv);
        var h_dlgevent2  = new m_dlgmovevt.evobject('mousemove', '2', movedlg, m_titlediv);
        var h_dlgevent3  = new m_dlgmovevt.evobject('mouseup',   '3', movedlg, m_titlediv);
		
		m_dlgmovevt.addEventA( h_dlgevent1 );//mousedown
	    m_dlgmovevt.addEventA( h_dlgevent2 );//mousemove
	    m_dlgmovevt.addEventA( h_dlgevent3 );//mouseup
	
        var o    = $(m_dlgdiv);
		var bod  = document.getElementsByTagName('body')[0];
		
		var r1   = m_visi.getObjectRect( bod );
		var r2   = m_visi.getObjectRect( m_dlgdiv );
		
		o.style.left = ( r1.width  - r2.width )/2 + 'px';
		o.style.top  = ( r1.height - r2.height)/2 + 'px';
	    m_this.showdlg ( null,false);

	}
	
	function movedlg        ( prop )
	{   var btn = m_dlgmovevt.btnState(prop.e);// 1 - leftbtn; 2 - rightbtn
		var o   = prop.cparam.elm;

		switch( prop.cparam.state )
		{   case 0:
				if ( !prop.obj ) return;
				if ( prop.eventid != 1  ) return;
				var r = m_visi.getObjectRect(prop.cparam.elm);
				var p = m_visi.getCursorPos ();
				prop.cparam.dx = p.x - r.left;
				prop.cparam.dy = p.y - r.top;
				prop.cparam.state = 1;
				break;
				
			case 1:
				var p        = m_visi.getCursorPos ();
				o.style.left = (p.x - prop.cparam.dx) + 'px';
				o.style.top  = (p.y - prop.cparam.dy) + 'px';
				iframepos( );
				if ( prop.eventid == 3  ) 
					 prop.cparam.state = 0;
				break;
		}
		//prop.bubble = false;
	}
	function setposatcursor ()
	{   var o = $( m_dlgdiv );
		var p = m_visi.getCursorPos ();
		o.style.left = p.x + 'px';
		o.style.top  = p.y + 'px';
	}
	function showlayer      ( id, enable )
	{   var arr = m_visi.getElement( id ).getElementsByTagName( '*');
		for ( var i = 0; i < arr.length; i ++ )
			  if ( arr[i].id ) showlayer( arr[i].id, enable );
		m_visi.setVisible( id, enable );	
	}
	function showdlg        ( event, enable, bAtCursor )
	{   if ( enable    == undefined ) enable    = false;
	    if ( bAtCursor == undefined ) bAtCursor = false;
		if ( enable == true && bAtCursor == true ) setposatcursor ();

		showlayer( m_dlgdiv, enable);
		iframeshow( enable );
		m_bDlgIsOpen = enable;
	}
	function iframecreate   ( )
	{   var frm = document.createElement('iframe');
	    frm.setAttribute( 'id', m_iframe );
	    frm.setAttribute( 'border', "0" );
	    var sfr = { 'position':'absolute', 'display':'block','z-index': '-1',  'width': '100px',
	                'height':  '100px',    'top':    '0px',  'left':    '0px', 'border':'0', 
	                'background-color': '#ffffff'};
	    m_visi.setStyles( frm, sfr);
	    m_visi.setOpacity ( frm, 0);
	    return frm;
	}
	function iframepos      ()
	{   var f = $(m_iframe);
	    if ( !f ) return;
		var rc = m_visi.getObjectRect( m_dlgdiv );
	    f.style.left    = (rc.left-20)   + 'px';
	    f.style.top     = (rc.top -20)   + 'px';
	    f.style.width   = (rc.width+40)  + 'px';
	    f.style.height  = (rc.height+40) + 'px';		
	}
	function iframeshow     ( enable )
	{   var f = $(m_iframe);
		if ( !f ) return;
        iframepos( );
		f.style.display = (enable == true)?'block':'none';
		f.style.zIndex  = (enable == true)?'100':'-1';
		m_visi.setVisible( f, enable );
	}
	
};