// Script: DDOBJ (Drag-and-Drop DHTML Objects) v1.42
// Company: Interaxis
// Author: dynamicreport.com
// Website: http://dynamicreport.com/ddobj.html
// License: This script is subject to the EULA included in the DDOBJ package



var sRelPath = "images/"; // transparent image relative path excluding 'trans.gif' filename but including last forward slash
// (i.e. relative path from page folder containing inclusion to this javascript file) (eg. images/ or "" if in same folder)

var ddobj = ddobj_ = ddcover = ddimg = ddc = ddw = null; // objects -- when not null, they are tracked by document's move event
var dd_x = dd_y = dd_bForced = 0; // track coordinates for locking on a layer drag operation, force layer drag flag
var dd_ox = dd_oy = 0; // top/left corner of the page
var dd_lock = 0; // toggle the drag-and-drop operation of an object so that obscure interruptions amongst various objects are avoided
var DD_OFFSETX = -15; // X offset from cursor to start of drag-drop layer
var DD_OFFSETY = -15; // Y offset from cursor to start of drag-drop layer
var DD_MAXOBJS = 25; // to be safe from an infinite loop situation, set the max # of drag-drop objects on a page
var DD_SQRSKIN = 0; // use square skin with no transparency for corners (uses alternative images for skins that apply)
var dd_bInit = 0; // this script has not been initialized yet by a call to dd_initLyr ()
var dd_bDragAll = 1; // internal flag marks whether the entire object is draggable (1) or just a portion (0)
var dd_close = ""; // skin array: enable object close section
var dd_dragy = ""; // skin array: offset pixels of vertical space will activate the drag-drop operation if dd_bDragAll is not set (0)
var dd_closex = ""; // skin array: offset close icon # pixels left from top-right corner of drag-drop layer
var dd_closey = ""; // skin array: offset close icon # pixels down from top-right corner of drag-drop layer
var dd_images = ""; // skin array: preloaded images
var dd_hidecvr = ""; // hide browser iframe underneath object (set for transparent components of skin, but will enable select list bug for IE 6 or lower)
var DD_WAITSHOWHIDE = -1; // this flag will be reset and showlyr will exit so that the function call is disabled 
// once (necessary to ignore an event handler for an object temporarily - set value to object index)

var DD_LIMIT_T = -1; // limit top edge (-1 = top window edge, 0 = no limit, positive whole number = custom edge)
var DD_LIMIT_L = -1; // limit left edge (-1 = left window edge, 0 = no limit, positive whole number = custom edge)
var DD_LIMIT_B = -1; // limit bottom edge (-1 = bottom window edge, 0 = no limit, positive whole number = custom edge)
var DD_LIMIT_R = -1; // limit right edge (-1 = right window edge, 0 = no limit, positive whole number = custom edge)
var DD_AUTO_LIMITX = -1; // auto adjust horizontal offset of tooltip to opposite edge if boundary is touched (0 = no limit, 1 = auto limit, -1 = force edge)
var DD_AUTO_LIMITY = 1; // auto adjust vertical offset of tooltip to opposite edge if boundary is touched (0 = no limit, 1 = auto limit, -1 = force edge)
var dd_limit_top = dd_limit_left = dd_limit_bottom = dd_limit_right = 0; // auto-assigned working values

var dd_count_override = 0; // layer count overrides layer count defined in ddlyrs.js

// INITIALIZE BROWSER DETECTION AND BROWSER-SPECIFIC DOM OBJECT VALUES
var dd_ns = dd_ie = dd_opera = dd_features = 0;
var set_show = set_hide = "";

// SKIN TEMPLATE -- CAPTION & CONTENT IS ENCOMPASSED BY THE HEADER AND FOOTER
var dd_sHeaderT = "";
var dd_sHeaderB = "";
var dd_sFooter = "";
var dd_skins = new Array(); // array to keep track of object-skin associations
var dd_sel = 0; // current skin selector index

function dd_getUnitValue (sVal)
{
	var sTotal = "";
	iMul = 1;
	for (i = 0; i < sVal.length; i++)
	{
		if (sVal.charAt (0) == '-')
			iMul = -1;
		if (sVal.charAt (i) >= '0' && sVal.charAt (i) <= '9')
			sTotal += sVal.charAt (i);
	}
	return iMul * parseInt (sTotal);
}


function dd_setBrowser ()
{
	var agt = navigator.userAgent.toLowerCase ();
  
	// determine browser types and versions
	if (agt.indexOf("opera") != -1)
	{
		dd_opera = parseInt (navigator.appVersion);
		dd_ie = 5;
	}

	if (navigator.appName == "Microsoft Internet Explorer")
		dd_ie = parseInt (navigator.appVersion);
	else if (navigator.appName == "Netscape")
		dd_ns = parseInt (navigator.appVersion);

	// browser-specific visibility flags
	set_show = (dd_ns) ? 'show' : 'visible';
	set_hide = (dd_ns) ? 'hide' : 'hidden';

	if (dd_ns >= 5)
	{
		set_show = 'visible';
		set_hide = 'hidden';
	}

	// determine applicable features
	if (dd_ie >= 4 || dd_ns >= 5 || dd_opera)
		dd_features = 1;
	else if (dd_ns >= 4)
		dd_features = 2;
	else
		dd_features = 0;
}


function dd_updLyr (iIndex, activeUpdate)
{
	sExt = "dd" + iIndex;

	if (dd_features == 1)
	{
		if (activeUpdate)
		{
			document.getElementById(sExt).style.width = document.getElementById("w_dd"+iIndex).style.width;
			document.getElementById(sExt).style.height = dd_bDragAll ? document.getElementById("flt_"+sExt).offsetHeight : dd_dragy[dd_sel];
			document.getElementById("flt_" + sExt).style.width = document.getElementById("w_dd"+iIndex).style.width;
			document.getElementById("ovr_" + sExt).style.width = document.getElementById("w_dd"+iIndex).style.width;
			document.getElementById("ovr_" + sExt).style.height = dd_bDragAll ? document.getElementById("flt_"+sExt).offsetHeight : dd_dragy[dd_sel];
		}
		else
		{
			document.getElementById("flt_" + sExt).style.visibility = set_hide;
			document.getElementById("ovr_" + sExt).style.visibility = set_hide;
		}
		if (dd_ie)
		{
			if (activeUpdate)
			{
				document.getElementById("cvr_" + sExt).style.width = document.getElementById("w_dd"+iIndex).style.width;
				document.getElementById("cvr_" + sExt).style.height = document.getElementById("w_dd"+iIndex).offsetHeight;
			}
			else
			{
				document.getElementById("cvr_" + sExt).style.visibility = set_hide;
				document.getElementById(sExt).style.visibility = set_hide;
			}
			// iframe hack for drop-down to appear below layer
			if (dd_ie && !dd_opera)
				document.getElementById("cvr_" + sExt).style.display = "inline";
			document.getElementById("cvr_" + sExt).style.left = document.getElementById("flt_" + sExt).style.left;
			document.getElementById("cvr_" + sExt).style.top = document.getElementById("flt_" + sExt).style.top;
		}
	}
	else if (dd_features == 2)
	{
		if (document.layers["flt_" + sExt])
		{
			if (activeUpdate)
			{
				document.layers["c_" + sExt].document.open();
				document.layers["c_" + sExt].document.write("<a href = '#' onclick = 'javascript: dd_showLyr (\""+iIndex+"\", 0, 0, 0, \"\", \"\", 0); return false;'><img src = '"+sRelPath+"close.gif' galleryimg = 'no' alt = 'Close Window' width = '20' height = '20' border = '0'></a>");
				document.layers["c_" + sExt].document.close();

				document.layers["ovr_" + sExt].left = document.layers["flt_" + sExt].left;
				document.layers["ovr_" + sExt].top = document.layers["flt_" + sExt].top;
				document.layers["ovr_" + sExt].document.open();
				document.layers["ovr_" + sExt].document.write("<img src='"+sRelPath+"trans.gif' id = '"+sExt+"' name='"+sExt+"' border = '0' width='" + document.layers["flt_" + sExt].clip.right + "' height='" + (dd_bDragAll ? document.layers["flt_" + sExt].clip.bottom : dd_dragy[dd_sel]) + "'>");
				document.layers["ovr_" + sExt].document.close();
			}
			else
			{
				document.layers["flt_" + sExt].visibility = set_hide;
				document.layers["ovr_" + sExt].visibility = set_hide;
			}
		}
	}
}


function dd_initLyr ()
{
	var args = dd_initLyr.arguments;
	var w = (args.length <= 0 ? "100%" : args[0]); // first arg. is width
	var disable_skin = 0;
	for (var i = 1; i < args.length; i++) // setup bitwise flags based on skin indices
		disable_skin += Math.pow (2, args[i]);

	if (dd_features == 1)
	{
		// track W3C DOM standard events
		document.onmousedown = dd_down;
		document.onmouseup = dd_up;
		document.onmousemove = dd_move;
		for (iIndex = 0; iIndex < DD_MAXOBJS && document.getElementById("ovr_dd" + iIndex); iIndex++)
			dd_updLyr (iIndex, 0);
	}
	else if (dd_features == 2)
	{
		// track DOM events with Netscape 4.x
		window.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.MOUSEMOVE);
		window.onmousedown = dd_down;
		window.onmouseup = dd_up;
		window.onmousemove = dd_move;
		for (iIndex = 0; iIndex < DD_MAXOBJS && document.layers["ovr_dd" + iIndex]; iIndex++)
			dd_updLyr (iIndex, 0);
	}
	dd_skin_selector (w, disable_skin);
	dd_bInit = 1; // ok to begin tracking the objects -- avoid premature interruption of initialization
}


function dd_zOrder (sExt)
{
	var ddobjT_ = ddobj_;
	var ddobjT = ddobj;
	var ddcT = ddc;

	if (dd_features == 1)
	{
		if (!dd_lock) // bring the selected layer to the front
		{
			if (sExt)
			{
				ddobjT_ = document.getElementById("flt_" + sExt);
				ddobjT = document.getElementById("ovr_" + sExt);
				ddcT = document.getElementById("c_" + sExt);
			}
			ddobjT_.style.zIndex = dd_zIndex;
			ddobjT.style.zIndex = dd_zIndex + 1;
			ddcT.style.zIndex = dd_zIndex + 1;
			dd_zIndex += 2;
		}
	}
	else if (dd_features == 2)
	{
		if (!dd_lock) // bring the selected layer to the front
		{
			if (sExt)
			{
				ddobjT_ = document.layers["flt_" + sExt];
				ddobjT = document.layers["ovr_" + sExt];
				ddcT = document.layers["c_" + sExt];
			}
			ddobjT_.zIndex = dd_zIndex;
			ddobjT.zIndex = dd_zIndex + 1;
			ddcT.zIndex = dd_zIndex + 1;
			dd_zIndex += 2;
		}
	}
}


function dd_down (e) // called once only when the mouse button is clicked initially
{
	dd_bForced = 0;
	if (dd_features == 1)
	{
		if (dd_ns)
		{
			if (!e)
				return true;
			dd_ox = e.pageX; // obtain cursor location
			dd_oy = e.pageY;
			if ((!e.target || !e.target.name) && dd_bDragAll) // verify that the object is valid and it is a ddobj
				return false;
			if ((!e.target || !e.target.name) && !dd_bDragAll)
				return true; // true enables default mousedown event handling
			if ((e.target.name[0] != 'd' || e.target.name[1] != 'd'))
				return true;

			dd_sel = dd_skins[e.target.name]; // obtain object's skin selector associative index

			// object exists, set all object references
			ddimg = document[e.target.name];
			ddobj_ = document.getElementById("flt_" + e.target.name);
			ddobj = document.getElementById("ovr_" + e.target.name);
			ddc = document.getElementById("c_" + e.target.name);

			dd_zOrder (null); // bring the selected layer to the front

			dd_lock = 1; // once it is identified as a dd object, flag the lock down

			dd_x = e.pageX - dd_getUnitValue (ddobj.style.left); // calculate cursor position relative to layer
			dd_y = e.pageY - dd_getUnitValue (ddobj.style.top);
			if (e.target.name[0] == 'd' && e.target.name[1] == 'd')
				return false;
		}
		else
		{
			if (!window.event) // verify that the object is valid and it is a ddobj
				return false;  // false enables default mousedown event handling
			if (window.event.srcElement.id.charAt (0) != 'd' || window.event.srcElement.id.charAt (1) != 'd')
				return true;

			dd_sel = dd_skins[window.event.srcElement.id]; // obtain object's skin selector associative index

			ddimg = window.event.srcElement.parentElement; // set all object references
			ddobj = document.getElementById("ovr_" + window.event.srcElement.id);
			ddobj_ = document.getElementById("flt_" + window.event.srcElement.id);
			ddc = document.getElementById("c_" + window.event.srcElement.id);
			ddw = document.getElementById("w_" + window.event.srcElement.id);

			dd_zOrder (null); // bring the selected layer to the front

			dd_lock = 1; // once it is identified as a dd object, flag the lock down

			if (dd_ie)
				ddcover = document.getElementById("cvr_" + window.event.srcElement.id);
			dd_x = window.event.offsetX; // obtain cursor location
			dd_y = window.event.offsetY;

			if (window.event.srcElement != ddobj)
				return false;
		}
	}
	else if (dd_features == 2)
	{
		if (!e)
			return true;
		dd_ox = e.pageX; // obtain cursor location
		dd_oy = e.pageY;
		if (!e.target || !e.target.name) // verify that the object is valid and it is a ddobj
			return true;
		if ((e.target.name[0] != 'd' || e.target.name[1] != 'd'))
			return true;

		dd_sel = dd_skins[e.target.name]; // obtain object's skin selector associative index

		if (document.layers["ovr_" + e.target.name]) // object exists, set all object references
		{
			ddimg = document[e.target.name];
			ddobj_ = document.layers["flt_" + e.target.name];
			ddobj = document.layers["ovr_" + e.target.name];
			ddc = document.layers["c_" + e.target.name];

			dd_zOrder (null); // bring the selected layer to the front

			dd_lock = 1; // once it is identified as a dd object, flag the lock down

			dd_x = e.pageX - ddobj.left; // calculate cursor position relative to layer
			dd_y = e.pageY - ddobj.top;
			return false;
		}
		return true;
	}
	return true;
}


function dd_forceMove (iIndex, ddx, ddy)
{
	sExt = "dd" + iIndex;

	dd_sel = dd_skins[sExt]; // obtain object's skin selector associative index

	if (dd_features == 1)
	{
		ddobj = document.getElementById("ovr_" + sExt); // set all object references
		ddobj_ = document.getElementById("flt_" + sExt);
		ddimg = document.getElementById(sExt);
		ddc = document.getElementById("c_" + sExt);

		dd_zOrder (null); // bring the selected layer to the front

		if (dd_ie) // iframe hack for IE
		{
			ddcover = document.getElementById("cvr_" + sExt);
			ddw = document.getElementById("w_" + sExt);
			// ensure cover (iframe) height is synchronized with table
			if (ddcover.style.height != ddw.offsetHeight)
				ddcover.style.height = ddw.offsetHeight;
		}
		if (dd_ns)
			dd_offset ((ddx >= 0 ? ddx : dd_ox - DD_OFFSETX), (ddy >= 0 ? ddy : dd_oy - DD_OFFSETY)); // move action associated with object tracking cursor -- set offset from cursor position (dd_ox/dd_oy already assigned by move or down event handlers)
	}
	else if (dd_features == 2)
	{
		if (document.layers["ovr_" + sExt]) // object exists, set all object references
		{
			ddobj = document.layers["ovr_" + sExt];
			ddobj_ = document.layers["flt_" + sExt];
			ddc = document.layers["c_" + sExt];

			dd_zOrder (null); // bring the selected layer to the front

			dd_offset ((ddx >= 0 ? ddx : dd_ox - DD_OFFSETX), (ddy >= 0 ? ddy : dd_oy - DD_OFFSETY)); // move action associated with object tracking cursor -- set offset from cursor position (dd_ox/dd_oy already assigned by move or down event handlers)
		}
		else
			return true;
	}
}


function dd_setOffsetX (offsetX)
{
	if (dd_features == 1 && ddobj)
	{
		if (DD_LIMIT_L < 0)
			dd_limit_left = document.body.scrollLeft;
		else if (DD_LIMIT_L)
			dd_limit_left = DD_LIMIT_L;
		if (DD_LIMIT_R < 0)
			dd_limit_right = document.body.scrollLeft + document.body.clientWidth;
		else if (DD_LIMIT_R)
			dd_limit_right = DD_LIMIT_R;

		var offsetW = dd_getUnitValue (ddobj_.style.width);
		var ddw_w = (dd_ns ? ddobj_.offsetWidth : ddw.offsetWidth);

		if (DD_LIMIT_L && (offsetX < dd_limit_left))
		{
			if (!dd_lock && DD_AUTO_LIMITX == 1)
			{ // enable tooltip auto-adjust location
				offsetX += (DD_OFFSETX > 0 ? DD_OFFSETX : (ddw_w + DD_OFFSETX * 2));
				if (DD_LIMIT_R && (offsetX + offsetW > dd_limit_right))
					offsetX = dd_limit_left;
			}
			else if (dd_lock || DD_AUTO_LIMITX == -1)
				offsetX = dd_limit_left;
		}
		else if (DD_LIMIT_R && (offsetX + offsetW > dd_limit_right))
		{
			if (!dd_lock && DD_AUTO_LIMITX == 1)
			{ // enable tooltip auto-adjust location
				offsetX -= (ddw_w - (DD_OFFSETX > 0 ? DD_OFFSETX : DD_OFFSETX * 2));
				if (DD_LIMIT_L && (offsetX < dd_limit_left))
					offsetX = dd_limit_right - offsetW;
			}
			else if (dd_lock || DD_AUTO_LIMITX == -1)
				offsetX = dd_limit_right - offsetW;
		}
	}
	return offsetX;
}


function dd_setOffsetY (offsetY)
{
	if (dd_features == 1 && ddobj)
	{
		if (DD_LIMIT_T < 0)
			dd_limit_top = document.body.scrollTop;
		else if (DD_LIMIT_T)
			dd_limit_top = DD_LIMIT_T;
		if (DD_LIMIT_B < 0)
			dd_limit_bottom = document.body.scrollTop + document.body.clientHeight;
		else if (DD_LIMIT_B)
			dd_limit_bottom = DD_LIMIT_B;

		var ddw_h = (dd_ns ? ddobj_.offsetHeight : ddw.offsetHeight);

		if (DD_LIMIT_T && (offsetY < dd_limit_top))
		{
			if (!dd_lock && DD_AUTO_LIMITY == 1)
			{ // enable tooltip auto-adjust location
				offsetY += (DD_OFFSETY > 0 ? DD_OFFSETY : (ddw_h + DD_OFFSETY * 2));
				if (DD_LIMIT_B && (offsetY + ddw_h > dd_limit_bottom))
					offsetY = dd_limit_top;
			}
			else if (dd_lock || DD_AUTO_LIMITY == -1)
				offsetY = dd_limit_top;
		}
		else if (DD_LIMIT_B && (offsetY + ddw_h > dd_limit_bottom))
		{
			if (!dd_lock && DD_AUTO_LIMITY == 1)
			{ // enable tooltip auto-adjust location
				offsetY -= (ddw_h - (DD_OFFSETY > 0 ? DD_OFFSETY : DD_OFFSETY * 2));
				if (DD_LIMIT_T && (offsetY < dd_limit_top))
					offsetY = dd_limit_bottom - ddw_h;
			}
			else if (dd_lock || DD_AUTO_LIMITY == -1)
				offsetY = dd_limit_bottom - ddw_h;
		}
	}
	return offsetY;
}


function dd_offset (offsetX, offsetY)
{
	if (dd_features == 1 && ddobj)
	{
		offsetX = dd_setOffsetX (offsetX); // restrict horizontal offset to boundary dimensions
		offsetY = dd_setOffsetY (offsetY); // restrict vertical offset to boundary dimensions
		if (dd_ns)
		{
			ddobj.style.left = ddobj_.style.left = offsetX;
			ddobj.style.top = ddobj_.style.top = offsetY;
			ddc.style.top = offsetY + dd_closey[dd_sel];
			ddc.style.left = dd_getUnitValue (ddobj.style.left) + dd_getUnitValue (ddobj_.style.width) - dd_getUnitValue (ddc.style.width) + dd_closex[dd_sel];
		}
		else
		{
			ddobj.style.posLeft = ddobj_.style.posLeft = offsetX;
			ddobj.style.posTop = ddobj_.style.posTop = offsetY;
			ddc.style.posTop = offsetY + dd_closey[dd_sel];
			ddc.style.posLeft = ddobj.style.posLeft + dd_getUnitValue (ddobj_.style.width) - dd_getUnitValue (ddc.style.width) + dd_closex[dd_sel];
			if (dd_ie)
			{
				ddcover.style.posLeft = offsetX;
				ddcover.style.posTop = offsetY;
				// ensure cover (iframe) height is synchronized with table
				if (ddcover.style.height != ddw.offsetHeight)
					ddcover.style.height = ddw.offsetHeight;
			}
		}
	}
	else if (dd_features == 2 && ddobj)
	{
		ddobj.left = ddobj_.left = offsetX;
		ddobj.top = ddobj_.top = ddc.top = offsetY;
		ddc.top += dd_closey[dd_sel];
		ddc.left = ddobj.left + ddobj_.clip.right - ddc.clip.right + dd_closex[dd_sel];
	}
}


// called continuously for the duration of the object mouse move event
function dd_move (e, ddx, ddy) // MSIE does not receive an event object parameter (only Mozilla browsers -- NN, Firefox, etc.)
{
	if (dd_bForced) // move action associated with object tracking cursor -- set offset from cursor position
	{
		dd_x = DD_OFFSETX;
		dd_y = DD_OFFSETY;
	}

	if (dd_ns) // obtain cursor location
	{
		dd_ox = e.pageX;
		dd_oy = e.pageY;
	}

	if (dd_features == 1 && ddobj)
	{
		if (dd_ns)
			dd_offset ((ddx >= 0 ? ddx : e.pageX - dd_x), (ddy >= 0 ? ddy : e.pageY - dd_y));
		else
			dd_offset ((ddx >= 0 ? ddx : document.body.scrollLeft + window.event.clientX - dd_x), (ddy >= 0 ? ddy : document.body.scrollTop + window.event.clientY - dd_y));
		ddobj.style.visibility = set_show;
		ddobj_.style.visibility = set_show;
		ddimg.style.visibility = set_show;
		if (dd_close[dd_sel])
			ddc.style.visibility = set_show;
		if (dd_ie && !dd_hidecvr[dd_sel])
			ddcover.style.visibility = set_show;
		return false;
	}
	else if (dd_features == 2 && ddobj)
	{
		dd_offset (e.pageX - dd_x, e.pageY - dd_y);
		ddobj.visibility = set_show;
		ddobj_.visibility = set_show;
		if (dd_close[dd_sel])
			ddc.visibility = set_show;
	}
	return true;
}


function dd_up ()
{
	// clear current objects since they're not being tracked for motion (drag-drop operation non-existent)
	ddobj = ddobj_ = ddimg = ddcover = ddc = ddw = null;
	dd_lock = 0;
	return true;
}


function dd_release ()
{
	// clear current objects since they're not being tracked for motion (drag-drop operation non-existent)
	// user-call version of the dd_up function to release the object drag operation safely without obscure interruption
	// of the drag operation of another object
	if (!dd_lock)
	{

		ddobj = ddobj_ = ddimg = ddcover = ddc = ddw = null;
		dd_bForced = dd_lock = 0;
	}
	return true;
}


function dd_wrContent (iIndex, sTitle, sContent, w)
{
	if (!dd_bInit) // not yet initialized
		return false;

	if (iIndex >= dd_count || iIndex < 0)
		return false;

	sExt = "dd" + iIndex;
	sOpen = "<table id = 'w_dd"+iIndex+"' width = '"+w+"' cellpadding = '0' cellspacing = '0' border = '0'";
	if (dd_features == 1)
		sOpen += " style = 'width:"+w+";'";
	sOpen += "><tr><td valign = 'top' align = 'left'>";
	sClose = "</td></tr></table>";
	if (dd_features == 1)
		document.getElementById("flt_" + sExt).innerHTML = sOpen + dd_sHeaderT[dd_sel] + sTitle + dd_sHeaderB[dd_sel] + sContent + dd_sFooter[dd_sel] + sClose;
	else if (dd_features == 2) // visible, initializing the drag-drop layer
	{
		document.layers["flt_" + sExt].document.open ();
		document.layers["flt_" + sExt].document.write (sOpen + dd_sHeaderT[dd_sel] + sTitle + dd_sHeaderB[dd_sel] + sContent + dd_sFooter[dd_sel] + sClose);
		document.layers["flt_" + sExt].document.close ();
	}
	dd_updLyr (iIndex, 1);
}


function dd_showLyr (iIndex, iSkin, bSwitch, bDragAll, sTitle, sContent, w)
{ // x and y parameters are optional, and indicate the initial window opening location
	var ddx = ddy = -1;

	if (!dd_bInit) // not yet initialized
		return false;
		
	if (dd_lock) // object already in control, avoid interruptions
		return true;

	if (iSkin < 0 || iSkin >= dd_sHeaderT.length)
		iSkin = 0; // safety measure to force skin index 0 if beyond limits
	dd_sel = iSkin;

	if (iIndex >= dd_count || iIndex < 0)
		return false;

	if (DD_WAITSHOWHIDE == iIndex)
	{
		DD_WAITSHOWHIDE = -1;
		return false;
	}

	sExt = "dd" + iIndex;
	dd_skins[sExt] = dd_sel; // store object's skin selector associative index

	// hide object before making it visible again (avoid glitch appearance when reused object is redrawn during transitional change)
	dd_setvis (sExt, set_hide);

	dd_bForced = 0;
	dd_bDragAll = bDragAll; // global reminder that the current object is to be completely or partially draggable

	if (bSwitch) // visible, initializing the drag-drop layer
	{
		// modify the HTML tags that define the DDOBJ layout template
		if (sContent != "")
			dd_wrContent (iIndex, sTitle, sContent, w);
		dd_updLyr (iIndex, 1);
		if (dd_showLyr.arguments.length >= 9)
		{ // acquire starting popup coordinates
			ddx = dd_showLyr.arguments[7];
			ddy = dd_showLyr.arguments[8];
			if (ddx < 0 || ddy < 0)
				ddx = ddy = -1;
		}
		dd_forceMove (iIndex, ddx, ddy);
		dd_bForced = 1;
		if (dd_ie) // force initial move
			dd_move (0, ddx, ddy); // (update current location before making visible to avoid glitch)
	}
	if (!bSwitch) // end move event tracking
		dd_up ();
}


function dd_setvis (sIndex, sVis)
{
	sIndex += "";
	var sExt = sIndex;

	if (parseInt (sIndex) >= dd_count || parseInt (sIndex) < 0)
		return false;

	if (sIndex.charAt (0) != 'd' || sIndex.charAt (1) != 'd')
		sExt = "dd" + sIndex;

	// toggle visibility of all components belonging to a single object by index
	if (dd_features == 1)
	{
		if (document.getElementById("ovr_" + sExt).style.visibility == sVis)
			return;
		document.getElementById("ovr_" + sExt).style.visibility = sVis;
		document.getElementById("flt_" + sExt).style.visibility = sVis;
		document.getElementById(sExt).style.visibility = sVis;
		if (dd_close[dd_sel])
			document.getElementById("c_" + sExt).style.visibility = sVis;
		else
			document.getElementById("c_" + sExt).style.visibility = set_hide;
		if (dd_ie && !dd_opera)
			document.getElementById("cvr_" + sExt).style.visibility = sVis;
	}
	else if (dd_features == 2)
	{
		if (document.layers["ovr_" + sExt].visibility == sVis)
			return;
		document.layers["ovr_" + sExt].visibility = sVis;
		document.layers["flt_" + sExt].visibility = sVis;
		if (dd_close[dd_sel])
			document.layers["c_" + sExt].visibility = sVis;
		else
			document.layers["c_" + sExt].visibility = set_hide;
	}
}


// ------------------------------------- SKIN SELECTOR FUNCTIONS (DEFINE YOUR OWN SKINS HERE)
// Note: image heights must be specified for skins using images so that browsers such as IE accurately size DDOBJ components
// parameters: 1st parameter = width of objects, 2nd ... nth parameters = disable skin for increased performance (decreased image preload)

function dd_skin_selector (w, disable_skin)
{
	var i = 0; // skin index incrementer

	dd_sHeaderT = new Array ();
	dd_sHeaderB = new Array ();
	dd_sFooter = new Array ();
	dd_dragy = new Array ();
	dd_closex = new Array ();
	dd_closey = new Array ();
	dd_close = new Array ();
	dd_hidecvr = new Array ();

	dd_images = new Array();

	// initialize skins: call custom skin functions with width, disabled skin flag, and index association params.
	dd_skin_tab (w, i++, disable_skin);
	dd_skin_con (w, i++, disable_skin);
	dd_skin_cap (w, i++, disable_skin);
	dd_skin_slv (w, i++, disable_skin);
	dd_skin_cap1 (w, i++, disable_skin);
	dd_skin_default (i++, disable_skin);
	dd_skin_media (w, i++, disable_skin);
	dd_skin_metal (w, i++, disable_skin);
	dd_skin_plain (i++, disable_skin);
	// add your own skin entry here ... define a function based on an existing one first

	if (dd_sHeaderT.length <= 0) // ensure that at least the default skin is allowable if none else
		dd_skin_default (i++, 0);
}

function dd_img_preload ()
{
	if (!document.images)
		return;

	var args = dd_img_preload.arguments;
	var len = dd_images.length;
	for (var i = 1; i <= args.length; i++)
	{ // first arg. is relative path
		dd_images[len + i - 1] = new Image();
		dd_images[len + i - 1].src = args[0] + args[i - 1];
	}
}

function dd_skin_tab (w, iSkn, disable_skin)
{
	var i = dd_sHeaderT.length;
	if (disable_skin & Math.pow (2, iSkn))
		return; // disabled skin for improved performance

	dd_img_preload (sRelPath+"skins/tab/", 'tab-l1.gif', 'tab-c1.gif', 'tab-r10.gif', 'tab-r10bg.jpg', 'tab-r11.gif', 'tab-l2.gif', 
		'tab-bg.jpg', 'tab-r20_bg.jpg', 'tab-r20_bg1.jpg', 'tab-r20bg.jpg', 'tab-r21_bg.jpg', 'tab-l3.gif', 'tab-c3.jpg', 'tab-r30bg.jpg',
		'tab-r30.jpg', 'tab-r30bg.jpg', 'tab-r31.jpg', 'tab-l4.jpg', 'tab-r4.jpg', 'tab-l5.gif', 'tab-c5.jpg', 'tab-r5.gif');

	dd_sHeaderT[i] = "" +
	"<table width = '"+w+"' border = '0' cellspacing = '0' cellpadding = '0'>" +
 	" <tr>" +
	"  <td width = '10'><img src = '"+sRelPath+"skins/tab/tab-l1.gif' height = '10'></td>" +
	"  <td width = '175' background = '"+sRelPath+"skins/tab/tab-c1.gif' valign = 'top'><img src = '"+sRelPath+"skins/tab/tab-c1.gif' height = '10'></td>" +
	"  <td width = '20' align = 'left' background = '"+sRelPath+"skins/tab/tab-r10bg.jpg'><img src = '"+sRelPath+"skins/tab/tab-r10.gif' height = '10'></td>" +
	"  <td width = '999' background = '"+sRelPath+"skins/tab/tab-r10bg.jpg' align = 'left'><img src = '"+sRelPath+"skins/tab/tab-r10bg.jpg' height = '10'></td>" +
	"  <td width = '8'><img src = '"+sRelPath+"skins/tab/tab-r11.gif' height = '10'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '10' background = '"+sRelPath+"skins/tab/tab-l2.gif' valign = 'top'><img src = '"+sRelPath+"skins/tab/tab-l2.gif' height = '11'></td>" +
	"  <td width = '175' background = '"+sRelPath+"skins/tab/tab-bg.jpg'>";

	// header text parameter would appear here

	dd_sHeaderB[i] = "" + 
	"  </td>" +
	"  <td width = '20' background = '"+sRelPath+"skins/tab/tab-r20_bg.jpg' align = 'left' valign = 'top'><img src = '"+sRelPath+"skins/tab/tab-r20.jpg' height = '11'></td>" +
	"  <td width = '367' background = '"+sRelPath+"skins/tab/tab-r20_bg1.jpg' align = 'left' valign = 'top'><img src = '"+sRelPath+"skins/tab/tab-r20bg.jpg' height = '11'></td>" +
	"  <td width = '8' background = '"+sRelPath+"skins/tab/tab-r21_bg.jpg' valign = 'top'><img src = '"+sRelPath+"skins/tab/tab-r21.jpg' height = '11'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '10'><img src = '"+sRelPath+"skins/tab/tab-l3.gif' height = '6'></td>" +
	"  <td width = '175' background = '"+sRelPath+"skins/tab/tab-c3.jpg'><img src = '"+sRelPath+"skins/tab/tab-c3.jpg' height = '6'></td>" +
	"  <td width = '20' align = 'left' background = '"+sRelPath+"skins/tab/tab-r30bg.jpg'><img src = '"+sRelPath+"skins/tab/tab-r30.jpg' height = '6'></td>" +
	"  <td width = '367' background = '"+sRelPath+"skins/tab/tab-r30bg.jpg' align = 'left' valign = 'top'><img src = '"+sRelPath+"skins/tab/tab-r30bg.jpg' height = '6'></td>" +
	"  <td width = '8'><img src = '"+sRelPath+"skins/tab/tab-r31.jpg' height = '6'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '10' background = '"+sRelPath+"skins/tab/tab-l4.jpg'><img src = '"+sRelPath+"skins/tab/tab-l4.jpg' height = '6'></td>" +
	"  <td width = '*' valign = 'top' background = '"+sRelPath+"skins/tab/tab-bg.jpg' colspan = '3'>";

	// main window text parameter would appear here

	dd_sFooter[i] = "<p class = 'css_style3' alt = 'Get DDOBJ!' align = 'right'>DDOBJ - dynamicreport.com</p>" +
	"  </td>" +
	"  <td width = '8' background = '"+sRelPath+"skins/tab/tab-r4.jpg'><img src = '"+sRelPath+"skins/tab/tab-r4.jpg' height = '6'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '10'><img src = '"+sRelPath+"skins/tab/tab-l5.gif' height = '11'></td>" +
	"  <td width = '345' background = '"+sRelPath+"skins/tab/tab-c5.jpg' colspan = '3'><img src = '"+sRelPath+"skins/tab/tab-c5.jpg' height = '11'></td>" +
	"  <td width = '8'><img src = '"+sRelPath+"skins/tab/tab-r5.gif' height = '11'></td>" +
	" </tr>" +
	"</table>";

	dd_dragy[i] = 35;
	dd_close[i] = 1;
	dd_closex[i] = -5;
	dd_closey[i] = 5;
	dd_hidecvr[i] = 0;
}


function dd_skin_con (w, iSkn, disable_skin)
{
	var i = dd_sHeaderT.length;
	if (disable_skin & Math.pow (2, iSkn))
		return; // disabled skin for improved performance

	dd_img_preload (sRelPath+"skins/console/", 'con-l1.jpg', 'con-c1bg.jpg', 'con-c1.jpg', 'con-r1.jpg', 'con-l2bg.jpg',
		'con-l2.jpg', 'con-bg.jpg', 'con-r2bg.jpg', 'con-r2.jpg', 'con-l3.jpg', 'con-c3bg.jpg', 'con-c3.jpg', 'con-r3.jpg');

	dd_sHeaderT[i] = "" +
	"<table width = '"+w+"' border = '0' cellspacing = '0' cellpadding = '0'>" +
 	" <tr>" +
	"  <td width = '19' background = '"+sRelPath+"skins/console/con-l1.jpg'><img src = '"+sRelPath+"skins/console/con-l1.jpg' height = '27'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/console/con-c1bg.jpg' align = 'right'><img src = '"+sRelPath+"skins/console/con-c1.jpg' height = '27'></td>" +
	"  <td width = '26'><img src = '"+sRelPath+"skins/console/con-r1.jpg' height = '27'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '19' background = '"+sRelPath+"skins/console/con-l2bg.jpg' valign = 'top'><img src = '"+sRelPath+"skins/console/con-l2.jpg' height = '79'></td>" +
	"  <td width = '100%' background = '"+sRelPath+"skins/console/con-bg.jpg'>";

	// header text parameter would appear here

	dd_sHeaderB[i] = "";

	// main window text parameter would appear here

	dd_sFooter[i] = "<p class = 'css_style3' alt = 'Get DDOBJ!' align = 'right'>DDOBJ - dynamicreport.com</p>" +
	"  </td>" +
	"  <td width = '26' background = '"+sRelPath+"skins/console/con-r2bg.jpg' valign = 'bottom'><img src = '"+sRelPath+"skins/console/con-r2.jpg' height = '79'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '19' background = '"+sRelPath+"skins/console/con-l3.jpg'><img src = '"+sRelPath+"skins/console/con-l3.jpg' height = '29'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/console/con-c3bg.jpg'><img src = '"+sRelPath+"skins/console/con-c3.jpg' height = '29'></td>" +
	"  <td width = '26'><img src = '"+sRelPath+"skins/console/con-r3.jpg' height = '29'></td>" +
	" </tr>" +
	"</table>";

	dd_dragy[i] = 30;
	dd_close[i] = 1;
	dd_closex[i] = -1;
	dd_closey[i] = 4;
	dd_hidecvr[i] = 0;
}

function dd_skin_cap (w, iSkn, disable_skin)
{
	var i = dd_sHeaderT.length;
	if (disable_skin & Math.pow (2, iSkn))
		return; // disabled skin for improved performance

	dd_img_preload (sRelPath+"skins/caption/", 'cap-l1.jpg', 'cap-c1bg.jpg', 'cap-c1.jpg', 'cap-r1.jpg', 'cap-l2.jpg', 'cap-c2bg.jpg', 
		'cap-r2.jpg', 'cap-l3.jpg', 'cap-c3bg.jpg', 'cap-r3.jpg', 'cap-l4bg.jpg', 'cap-l4.jpg', 'cap-c4bg.jpg', 'cap-r4bg.jpg',
		'cap-r4.jpg', 'cap-l5bg.jpg', 'cap-r5.jpg');

	dd_sHeaderT[i] = "" +
	"<table width = '"+w+"' border = '0' cellspacing = '0' cellpadding = '0'>" +
 	" <tr>" +
	"  <td width = '23' background = '"+sRelPath+"skins/caption/cap-l1.jpg'><img src = '"+sRelPath+"skins/caption/cap-l1.jpg' height = '45'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/caption/cap-c1bg.jpg' align = 'right'><img src = '"+sRelPath+"skins/caption/cap-c1.jpg' height = '45'></td>" +
	"  <td width = '25'><img src = '"+sRelPath+"skins/caption/cap-r1.jpg' height = '45'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '23' background = '"+sRelPath+"skins/caption/cap-l2.jpg' valign = 'top'><img src = '"+sRelPath+"skins/caption/cap-l2.jpg'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/caption/cap-c2bg.jpg'>";

	// header text parameter would appear here

	dd_sHeaderB[i] = "" +
	"  </td>" +
	"  <td width = '25' background = '"+sRelPath+"skins/caption/cap-r2.jpg'><img src = '"+sRelPath+"skins/caption/cap-r2.jpg'></td>" +
	" </tr>" +
 	" <tr>" +
	"  <td width = '23' background = '"+sRelPath+"skins/caption/cap-l3.jpg'><img src = '"+sRelPath+"skins/caption/cap-l3.jpg' height = '16'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/caption/cap-c3bg.jpg'><img src = '"+sRelPath+"skins/caption/cap-c3bg.jpg'></td>" +
	"  <td width = '25' background = '"+sRelPath+"skins/caption/cap-c3bg.jpg' align = 'right'><img src = '"+sRelPath+"skins/caption/cap-r3.jpg' height = '16'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '23' background = '"+sRelPath+"skins/caption/cap-l4bg.jpg' valign = 'top'><img src = '"+sRelPath+"skins/caption/cap-l4.jpg'></td>" +
	"  <td width = '100%' background = '"+sRelPath+"skins/caption/cap-c4bg.jpg'>";


	// main window text parameter would appear here

	dd_sFooter[i] = "<p class = 'css_style3' alt = 'Get DDOBJ!' align = 'right'>DDOBJ - dynamicreport.com</p>" +
	"  </td>" +
	"  <td width = '25' background = '"+sRelPath+"skins/caption/cap-r4bg.jpg'><img src = '"+sRelPath+"skins/caption/cap-r4.jpg'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '23' background = '"+sRelPath+"skins/caption/cap-l5bg.jpg'><img src = '"+sRelPath+"skins/caption/cap-l5bg.jpg' height = '27'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/caption/cap-l5bg.jpg'><img src = '"+sRelPath+"skins/caption/cap-l5bg.jpg'></td>" +
	"  <td width = '25' background = '"+sRelPath+"skins/caption/cap-l5bg.jpg' align = 'right'><img src = '"+sRelPath+"skins/caption/cap-r5.jpg' height = '27'></td>" +
	" </tr>" +
	"</table>";

	dd_dragy[i] = 40;
	dd_close[i] = 1;
	dd_closex[i] = -10;
	dd_closey[i] = 5;
	dd_hidecvr[i] = 0;
}

function dd_skin_cap1 (w, iSkn, disable_skin)
{
	var i = dd_sHeaderT.length;
	if (disable_skin & Math.pow (2, iSkn))
		return; // disabled skin for improved performance

	dd_img_preload (sRelPath+"skins/caption1/", 'cap1-l1.jpg', 'cap1-c1.jpg', 'cap1-r1.jpg', 'cap1-l2.jpg', 'cap1-bg.jpg',
		'cap1-r2.jpg', 'cap1-l3.jpg', 'cap1-c3.jpg', 'cap1-r3.jpg');

	dd_sHeaderT[i] = "" +
	"<table width = '"+w+"' border = '0' cellspacing = '0' cellpadding = '0'>" +
 	" <tr>" +
	"  <td width = '7' background = '"+sRelPath+"skins/caption1/cap1-l1.jpg'><img src = '"+sRelPath+"skins/caption1/cap1-l1.jpg' height = '34'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/caption1/cap1-c1.jpg' align = 'right'><img src = '"+sRelPath+"skins/caption1/cap1-c1.jpg' height = '34'></td>" +
	"  <td width = '7'><img src = '"+sRelPath+"skins/caption1/cap1-r1.jpg' height = '34'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '7' background = '"+sRelPath+"skins/caption1/cap1-l2.jpg' valign = 'top'><img src = '"+sRelPath+"skins/caption1/cap1-l2.jpg' height = '1'></td>" +
	"  <td width = '100%' background = '"+sRelPath+"skins/caption1/cap1-bg.jpg'>";

	// header text parameter would appear here

	dd_sHeaderB[i] = "";

	// main window text parameter would appear here

	dd_sFooter[i] = "<p class = 'css_style3' alt = 'Get DDOBJ!' align = 'right'>DDOBJ - dynamicreport.com</p>" +
	"  </td>" +
	"  <td width = '7' background = '"+sRelPath+"skins/caption1/cap1-r2.jpg' valign = 'bottom'><img src = '"+sRelPath+"skins/caption1/cap1-r2.jpg' height = '1'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '7' background = '"+sRelPath+"skins/caption1/cap1-l3.jpg'><img src = '"+sRelPath+"skins/caption1/cap1-l3.jpg' height = '8'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/caption1/cap1-c3.jpg'><img src = '"+sRelPath+"skins/caption1/cap1-c3.jpg' height = '8'></td>" +
	"  <td width = '7'><img src = '"+sRelPath+"skins/caption1/cap1-r3.jpg' height = '8'></td>" +
	" </tr>" +
	"</table>";

	dd_dragy[i] = 35;
	dd_close[i] = 1;
	dd_closex[i] = -1;
	dd_closey[i] = 6;
	dd_hidecvr[i] = 0;
}

function dd_skin_slv (w, iSkn, disable_skin)
{
	var i = dd_sHeaderT.length;
	if (disable_skin & Math.pow (2, iSkn))
		return; // disabled skin for improved performance

	dd_img_preload (sRelPath+"skins/silver/", 'slv-l1.gif', 'slv-c1.jpg', 'slv-r1.gif', 'slv-l2.jpg', 'slv-bg.jpg',
		'slv-r2.jpg', 'slv-l3.gif', 'slv-c3.jpg', 'slv-r3.gif', 'slv-l1s.gif', 'slv-r1s.gif');

	dd_sHeaderT[i] = "" +
	"<table width = '"+w+"' border = '0' cellspacing = '0' cellpadding = '0'>" +
 	" <tr>" +
	"  <td width = '14' align = 'left'><img src = '"+sRelPath+"skins/silver/slv-l1"+(DD_SQRSKIN ? "s" : "")+".gif' width = '14' height = '29'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/silver/slv-c1.jpg' align = 'right'><img src = '"+sRelPath+"skins/silver/slv-c1.jpg' height = '29'></td>" +
	"  <td width = '14' align = 'left'><img src = '"+sRelPath+"skins/silver/slv-r1"+(DD_SQRSKIN ? "s" : "")+".gif' width = '14' height = '29'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '14' background = '"+sRelPath+"skins/silver/slv-l2.jpg' valign = 'top'><img src = '"+sRelPath+"skins/silver/slv-l2.jpg' height = '1'></td>" +
	"  <td width = '100%' background = '"+sRelPath+"skins/silver/slv-bg.jpg'>";

	// header text parameter would appear here

	dd_sHeaderB[i] = "";

	// main window text parameter would appear here

	dd_sFooter[i] = "<p class = 'css_style3' alt = 'Get DDOBJ!' align = 'right'>DDOBJ - dynamicreport.com</p>" +
	"  </td>" +
	"  <td width = '14' background = '"+sRelPath+"skins/silver/slv-r2.jpg' valign = 'bottom'><img src = '"+sRelPath+"skins/silver/slv-r2.jpg' height = '1'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '14'><img src = '"+sRelPath+"skins/silver/slv-l3.gif' height = '25'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/silver/slv-c3.jpg'><img src = '"+sRelPath+"skins/silver/slv-c3.jpg' height = '25'></td>" +
	"  <td width = '14'><img src = '"+sRelPath+"skins/silver/slv-r3.gif' height = '25'></td>" +
	" </tr>" +
	"</table>";

	dd_dragy[i] = 35;
	dd_close[i] = 1;
	dd_closex[i] = -8;
	dd_closey[i] = 28;
	dd_hidecvr[i] = 1;
}

function dd_skin_media (w, iSkn, disable_skin)
{
	var i = dd_sHeaderT.length;
	if (disable_skin & Math.pow (2, iSkn))
		return; // disabled skin for improved performance

	dd_img_preload (sRelPath+"skins/media/", 'media-l1.gif', 'media-c1l.jpg', 'media-c1bg.jpg', 'media-c1r.jpg', 'media-r1.gif',
		'media-l2.jpg', 'media-bg.jpg', 'media-r2.jpg', 'media-l3.gif', 'media-c3bg.jpg', 'media-r3.gif', 
		'media-l1s.gif', 'media-r1s.gif', 'media-l3s.gif', 'media-r3s.gif');

	dd_sHeaderT[i] = "" +
	"<table width = '"+w+"' border = '0' cellspacing = '0' cellpadding = '0'>" +
 	" <tr>" +
	"  <td width = '17'><img src = '"+sRelPath+"skins/media/media-l1"+(DD_SQRSKIN ? "s" : "")+".gif' width = '17' height = '39'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/media/media-c1bg.jpg'><img src = '"+sRelPath+"skins/media/media-c1l.jpg' height = '39' align = 'left'><img src = '"+sRelPath+"skins/media/media-c1r.jpg' height = '39' align = 'right'></td>" +
	"  <td width = '17'><img src = '"+sRelPath+"skins/media/media-r1"+(DD_SQRSKIN ? "s" : "")+".gif' width = '17' height = '39'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '17' background = '"+sRelPath+"skins/media/media-l2.jpg' valign = 'top'><img src = '"+sRelPath+"skins/media/media-l2.jpg' height = '1'></td>" +
	"  <td width = '100%' background = '"+sRelPath+"skins/media/media-bg.jpg'>";


	// header text parameter would appear here

	dd_sHeaderB[i] = "";

	// main window text parameter would appear here

	dd_sFooter[i] = "<p class = 'css_style3' alt = 'Get DDOBJ!' align = 'right'>DDOBJ - dynamicreport.com</p>" +
	"  </td>" +
	"  <td width = '17' background = '"+sRelPath+"skins/media/media-r2.jpg' valign = 'bottom'><img src = '"+sRelPath+"skins/media/media-r2.jpg' height = '1'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '17'><img src = '"+sRelPath+"skins/media/media-l3"+(DD_SQRSKIN ? "s" : "")+".gif' height = '55'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/media/media-c3bg.jpg'><img src = '"+sRelPath+"skins/media/media-c3bg.jpg' height = '55'></td>" +
	"  <td width = '17'><img src = '"+sRelPath+"skins/media/media-r3"+(DD_SQRSKIN ? "s" : "")+".gif' height = '55'></td>" +
	" </tr>" +
	"</table>";

	dd_dragy[i] = 34;
	dd_close[i] = 1;
	dd_closex[i] = -6;
	dd_closey[i] = 4;
	dd_hidecvr[i] = 1;
}

function dd_skin_metal (w, iSkn, disable_skin)
{
	var i = dd_sHeaderT.length;
	if (disable_skin & Math.pow (2, iSkn))
		return; // disabled skin for improved performance

	dd_img_preload (sRelPath+"skins/metal/", 'metal-l1.gif', 'metal-c1.jpg', 'metal-r1.gif', 'metal-l2.jpg', 'metal-c2.jpg',
		'metal-r2.jpg', 'metal-l3.gif', 'metal-c3.jpg', 'metal-r3.gif', 
		'metal-l1s.gif', 'metal-r1s.jpg', 'metal-l3s.gif', 'metal-r3s.gif');

	dd_sHeaderT[i] = "" +
	"<table width = '"+w+"' border = '0' cellspacing = '0' cellpadding = '0'>" +
 	" <tr>" +
	"  <td width = '12' align = 'left'><img src = '"+sRelPath+"skins/metal/metal-l1"+(DD_SQRSKIN ? "s" : "")+".gif' width = '12' height = '12'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/metal/metal-c1.jpg' align = 'right'><img src = '"+sRelPath+"skins/metal/metal-c1.jpg' height = '12'></td>" +
	"  <td width = '12' align = 'left'><img src = '"+sRelPath+"skins/metal/metal-r1"+(DD_SQRSKIN ? "s" : "")+".gif' width = '12' height = '12'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '12' background = '"+sRelPath+"skins/metal/metal-l2.jpg' valign = 'top'><img src = '"+sRelPath+"skins/metal/metal-l2.jpg' height = '72'></td>" +
	"  <td width = '100%' background = '"+sRelPath+"skins/metal/metal-c2.jpg'>";

	// header text parameter would appear here

	dd_sHeaderB[i] = "";

	// main window text parameter would appear here

	dd_sFooter[i] = "<p class = 'css_style3' alt = 'Get DDOBJ!' align = 'right'>DDOBJ - dynamicreport.com</p>" +
	"  </td>" +
	"  <td width = '12' background = '"+sRelPath+"skins/metal/metal-r2.jpg' valign = 'top'><img src = '"+sRelPath+"skins/metal/metal-r2.jpg' height = '72'></td>" +
	" </tr>" +
	" <tr>" +
	"  <td width = '12'><img src = '"+sRelPath+"skins/metal/metal-l3"+(DD_SQRSKIN ? "s" : "")+".gif' height = '12'></td>" +
	"  <td width = '*' background = '"+sRelPath+"skins/metal/metal-c3.jpg'><img src = '"+sRelPath+"skins/metal/metal-c3.jpg' height = '12'></td>" +
	"  <td width = '12'><img src = '"+sRelPath+"skins/metal/metal-r3"+(DD_SQRSKIN ? "s" : "")+".gif' height = '12'></td>" +
	" </tr>" +
	"</table>";

	dd_dragy[i] = 35;
	dd_close[i] = 1;
	dd_closex[i] = -8;
	dd_closey[i] = 12;
	dd_hidecvr[i] = 1;
}


function dd_skin_default (iSkn, disable_skin)
{
	var i = dd_sHeaderT.length;
	if (disable_skin & Math.pow (2, iSkn))
		return; // disabled skin for improved performance

	dd_sHeaderT[i] = "<table width = '100%' cellpadding = '0' cellspacing = '0' border = '1'>" +
	"<tr><td bgcolor = '#DFDFEE' height = '20' valign = 'top'>";

	// header text parameter would appear here

	dd_sHeaderB[i] = "</td></tr>" +
	"<tr><td bgcolor = '#EDEDED' valign = 'top'>";

	// main window text parameter would appear here
	
	dd_sFooter[i] = "<p class = 'css_style3' alt = 'Get DDOBJ!' align = 'right'>DDOBJ - dynamicreport.com</p>" +
	"</td></tr></table>";

	dd_dragy[i] = 25;
	dd_close[i] = 1;
	dd_closex[i] = -1;
	dd_closey[i] = 1;
	dd_hidecvr[i] = 0;
}

function dd_skin_plain (iSkn, disable_skin)
{
	var i = dd_sHeaderT.length;
	if (disable_skin & Math.pow (2, iSkn))
		return; // disabled skin for improved performance

	dd_sHeaderT[i] = "<table width = '100%' cellpadding = '0' cellspacing = '0' border = '0'>" +
	"<tr><td valign = 'top'>";

	// header text parameter would appear here

	dd_sHeaderB[i] = "</td></tr>" +
	"<tr><td valign = 'top'>";

	// main window text parameter would appear here
	
	dd_sFooter[i] = "</td></tr></table>";

	dd_dragy[i] = 25;
	dd_close[i] = 1;
	dd_closex[i] = -1;
	dd_closey[i] = 1;
	dd_hidecvr[i] = 0;
}
