﻿/*
 *@lhgdialog - Dialog Window v2.1.2 - Date : 2009-10-9
 *@Copyright lhgcore.js (c) 2009 By LiHuiGang Reserved
 */

J.exend({

dialog : (function()
{
    var twin = window.parent, cover;
	while( twin.parent && twin.parent != twin )
	{
	    try{ if( twin.parent.document.domain != document.domain ) break; }
		catch(e){break;}
		twin = twin.parent;
	}
	var tdoc = twin.document;
	
	var restyle = function(el)
	{
	    el.style.cssText = 'margin:0;padding:0;background-image:none;background-color:transparent;border:0;';
	};
	
	var getzi = function()
	{
	    if(!J.dialog.cfg.bzi) J.dialog.cfg.bzi = 1999; return ++J.dialog.cfg.bzi;
	};
	
	var resizehdl = function()
	{
		if(!cover) return; var rel = J.idtd(tdoc) ? tdoc.documentElement : tdoc.body;
		J(cover).stcs({
		    width: Math.max( rel.scrollWidth, rel.clientWidth, tdoc.scrollWidth || 0 ) - 1 + 'px',
			height: Math.max( rel.scrollHeight, rel.clientHeight, tdoc.scrollHeight || 0 ) - 1 + 'px'
		});
	};
	
	return {
	    cfg : { bzi: null, opac: 0.50, bgcolor: '#000' }, indoc : {}, infrm : {}, inwin : {},
		get : function(d)
		{
		    if( !d || 'object' != typeof d || !d.id || J('#lhg_'+d.id,tdoc) ) return;
			if(d.cover) this.dcover(); else{ if(cover) cover = null; }
			var w = d.width || 400, h = d.height || 300, t = d.title || 'lhgdialog弹出窗口';
			
			if( d.link && !/\http:/.test(d.link) ) d.link = null;
			if( d.page && d.noch )
			    d.page = ( /\?/.test(d.page) ? d.page + '&' : d.page + '?' ) + 'uuid=' + new Date().getTime();
			
			var dinfo =
			{
			    tit: t, page: d.page, link: d.link, html: d.html, win: window, top: twin, rng: d.rang,
				cus: d.custom, drg: d.nodrag, rez: d.noresize, sph: d.skin||'silvergray', fot: d.nofoot
			}, cize = J.vsiz(twin), pos = J.spos(twin), dp = J.path('lhgdialog.js');
			
			var itop = d.top ? pos.y + d.top : Math.max( pos.y + ( cize.h - h - 20 ) / 2, 0 );
			var ileft = d.left ? pos.x + d.left : Math.max( pos.x + ( cize.w - w - 20 ) / 2, 0 );
			
			var dfrm = J(tdoc).crte('iframe'); restyle(dfrm);
			J(dfrm).attr({
			    id: 'lhg_' + d.id, frameBorder: 0, scrolling: 'no',
				src: dp + 'lhgdialog.html', allowTransparency: 'true'
			}).stcs({
			    top: itop + 'px', left: ileft + 'px', position: 'absolute',
				width: w + 'px', height: h + 'px', zIndex: getzi()
			});
			dfrm._dlgargs = dinfo; J( tdoc.body ).apch( dfrm );
		},
		
		close : function(d,c)
		{
		    var dlg = ( 'object' == typeof(d) ) ? d.frameElement : J('#lhg_'+d);
			if( dlg && dlg.parentNode ){ J.rech(dlg); dlg = null; } if( c && c.parentNode ) this.hcover(c);
		},
		
		dcover : function()
		{
		    cover = J(tdoc).crte('div'); restyle(cover);
			J(cover).stcs({
				position: 'absolute', zIndex: getzi(), top: '0px',
				left: '0px', backgroundColor: this.cfg.bgcolor
			}).stopac(this.cfg.opac);
			
			if( J.ie && !J.i7 )
			{
			    var ifrm = J(tdoc).crte('iframe'); restyle(ifrm);
				J(ifrm).attr({
				    hideFocus: true, frameBorder: 0, src: J.gtvod()
				}).stcs({
				    width: '100%', height: '100%', position: 'absolute', left: '0px',
					top: '0px', filter: 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'
				});
				J(cover).apch(ifrm);
			}
			
			J(twin).aevt( 'resize', resizehdl ); resizehdl(); J(tdoc.body).apch(cover);
		},
		
		gcover : function(){ return cover; },
		hcover : function(o){ J.rech(o); cover = null; o = null; }
	};
})()

});
